Griglia Tabella per Foto

  • Creatore Discussione Creatore Discussione luigi777
  • Data di inizio Data di inizio

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Salve, volevo sapere come posso fare una griglia di un tabella esempio questa:
zlante.jpg


PS: Lo fatta in Office Word questa per farvi capire cosa devo fare.



Non ho ancora scritto nessun codice mi potete dire come fare?

Grazie mille.
 
Prova così

HTML:
<table width="100%">
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>
 
Ultima modifica di un moderatore:
ciao
per fare una tabella uguale a quella che hai postato puoi fare così, è evidente che al posto immagine_1,_2...
dovrai mettere <img src=\"nome file\" ecc...

PHP:
<!--...-->
<style type="text/css">
.img{
	text-align:center;
	width:100px;
	border-width:1px;
	border-color:#000000;
	border-style:solid;
	/*ecc..*/
}
</style>
<!--...-->
<?php
$immagini=array('immagine_1','immagine_2','immagine_3','immagine_4','immagine_5','immagine_6','immagine_7');
$numero_immagini=count($immagini);
//messo 3 colonne
$numero_colonne=3;
$resto=(int)ceil($numero_immagini/$numero_colonne)*$numero_colonne - $numero_immagini;//quante celle vuote dopo l'ultima immagine
$fine="</tr>";//se il resto è zero non aggiungo celle vuote
if($resto >=1){//se il resto è maggiore di zero aggiungo celle vuote
	$celle="";
	for($k=1; $k <=$resto;$k++){//aggiungo tante celle vuote a completamento ultima riga
		$celle.="<td>&nbsp;</td>";
	}
	$fine=$celle."</tr>";//chiudo l'ultima riga
}
$colonna=0;//metto a zero un contatore per vedere le colonne
$visualizzate=0;//metto a zero quante immagini ho visualizzato
//inizio la tabella
echo "<table>";
//inizio a ciclare le immagini
foreach($immagini as $immagine){
	if($colonna==0){echo "<tr>";}//stampo l'apertura della riga
	echo "<td class=\"img\">$immagine</td>";//stampo la cella/colonna con l'immagine
	$colonna++;//incremento il numero delle colonne
	$visualizzate++;//incremento il numero delle immagini visualizzate
	//verifico di aver fatto,in questo caso, tre colonne
	if($colonna%$numero_colonne==0){
		//se si chiudo la riga e riporto il contatore a zero
		echo "</tr>";
		$colonna==0;
	}
	//verifico se ho visualizzato tutte le immagini
	if($visualizzate >= $numero_immagini){
		echo $fine;//se visualizzate tutte chiudo la riga
	}
}
//chiudo la tabella
echo "</table>";
?>
se al posto dell'array, come ho messo io, estrai da db userai al posto del foreach un while.
credo che con i commenti riesci a capire come funzia

@searedone
guarda che probailmente non voleva l'html , ma lo script php
 
ciao
per fare una tabella uguale a quella che hai postato puoi fare così, è evidente che al posto immagine_1,_2...
dovrai mettere <img src=\"nome file\" ecc...

PHP:
<!--...-->
<style type="text/css">
.img{
	text-align:center;
	width:100px;
	border-width:1px;
	border-color:#000000;
	border-style:solid;
	/*ecc..*/
}
</style>
<!--...-->
<?php
$immagini=array('immagine_1','immagine_2','immagine_3','immagine_4','immagine_5','immagine_6','immagine_7');
$numero_immagini=count($immagini);
//messo 3 colonne
$numero_colonne=3;
$resto=(int)ceil($numero_immagini/$numero_colonne)*$numero_colonne - $numero_immagini;//quante celle vuote dopo l'ultima immagine
$fine="</tr>";//se il resto è zero non aggiungo celle vuote
if($resto >=1){//se il resto è maggiore di zero aggiungo celle vuote
	$celle="";
	for($k=1; $k <=$resto;$k++){//aggiungo tante celle vuote a completamento ultima riga
		$celle.="<td>&nbsp;</td>";
	}
	$fine=$celle."</tr>";//chiudo l'ultima riga
}
$colonna=0;//metto a zero un contatore per vedere le colonne
$visualizzate=0;//metto a zero quante immagini ho visualizzato
//inizio la tabella
echo "<table>";
//inizio a ciclare le immagini
foreach($immagini as $immagine){
	if($colonna==0){echo "<tr>";}//stampo l'apertura della riga
	echo "<td class=\"img\">$immagine</td>";//stampo la cella/colonna con l'immagine
	$colonna++;//incremento il numero delle colonne
	$visualizzate++;//incremento il numero delle immagini visualizzate
	//verifico di aver fatto,in questo caso, tre colonne
	if($colonna%$numero_colonne==0){
		//se si chiudo la riga e riporto il contatore a zero
		echo "</tr>";
		$colonna==0;
	}
	//verifico se ho visualizzato tutte le immagini
	if($visualizzate >= $numero_immagini){
		echo $fine;//se visualizzate tutte chiudo la riga
	}
}
//chiudo la tabella
echo "</table>";
?>
se al posto dell'array, come ho messo io, estrai da db userai al posto del foreach un while.
credo che con i commenti riesci a capire come funzia

@searedone
guarda che probailmente non voleva l'html , ma lo script php

si giusto volevo lo script php..

ora provo e poi vi faro sapere .. sarebbe bello convertirla in una funzioncina.. ma non so se si possa fare...

vedrò come fare..

scusatemi se rispondo ora, ma ero ad aggiustare un netbook con windows 7 stater (che lentezza.. io l'avrei già buttato fuori dalla finestra .. ma non e mio).

ora vedo lo script

grazie mille.
 
ok, ho provato ad agganciarla al mio archivio.

EDIT - Mi è riuscito.. ed ho risolto.


Però mi da un avviso come mi dicevi :
Warning: Invalid argument supplied for foreach() in D:\xampp\htdocs\mc2\gallery.php on line 67

mi spieghi come fare?

grazie e buon sabato.
 
Ultima modifica:
ciao
ti da quell'errore perchè $immagini non è un array, e da quanto scrivi

PHP:
$immagini="public/media/photo/".$row["dir"]."/".$row["url"]."/";

mi sembra proprio di no perchè $row["dir"] e $row["url"] sono due valori e quindi $immagini non è un array ma solo una variabile stringa
tra l'altro da dove salta fuori il $row?

prova a fare così

PHP:
<?php 
//....
while($row=mysql_fetch_assoc($result)){
$immagini[]="public/media/photo/".$row["dir"]."/".$row["url"]."/"; 
}

$numero_immagini=count($immagini); 
//messo 3 colonne 
$numero_colonne=3; 
//....
?>
però guarda usando il while per estrarre le immagini ti conviene non creare l'array e fare il foreach in quanto è un'inutile ripetizione
 
ciao ti posto il codice solo che ora le immagini mi vengono una dietro l'altra non come prima con l'arrary:
PHP:
<?php
// Includo 
require_once(dirname(__FILE__) . '/inc.php');
require_once(dirname(__FILE__) . "/template/".$template_client."/header.php");

?><p class="titolo">Galleria fotografica scaglie e pirografia</p>
<center><p><?php echo "<select onchange=\"document.location.href = '" . $_SERVER['PHP_SELF'] . "?cat=' + this.value;\" name=\"cat\">";?>

        <option  selected="selected" value="">Seleziona Categoria</option>
        <?php
	$result = $db->query("SELECT * FROM foto_categorie");
	
	while($row = $result->fetch_array())
	{
	$_cat= $row['titolo'];
	$id = $row['id'];
  ?>
        <option value="<?php echo $id; ?>"><?php echo $_cat; ?></option>
        <?php
  }
?>
      </select>
	  </center>
	  <?php
require_once(dirname(__FILE__) . '/lib/paginazione.inc.php');

$query = "SELECT * FROM foto ORDER BY data DESC LIMIT 10";
$result = $db->query($query)    or die($db->error);

$_cat = (isset($_GET["cat"])) ? trim ($_GET["cat"]): '';

if ($result->num_rows == 0) { echo "Record non trovato"; }
else
{

$pag = new Paginazione("SELECT * FROM foto Where _catid='".$_cat."' and active=1",10, "pagina");
?>
<style type="text/css">
.img{
    text-align:center;
    width:100px;
    border-width:1px;
    border-color:#000000;
    border-style:solid;
    /*ecc..*/
}
</style>
<?php

$immagini[]="public/media/photo/".$row["_dir"]."/img_thumb/".$row["url"]."/";  
$numero_immagini=count($immagini);
//messo 3 colonne
$numero_colonne=2;
$resto=(int)ceil($numero_immagini/$numero_colonne)*$numero_colonne - $numero_immagini;//quante celle vuote dopo l'ultima immagine
$fine="</tr>";//se il resto è zero non aggiungo celle vuote
if($resto >=1){//se il resto è maggiore di zero aggiungo celle vuote
    $celle="";
    for($k=1; $k <=$resto;$k++){//aggiungo tante celle vuote a completamento ultima riga
        $celle.="<td>&nbsp;</td>";
    }
    $fine=$celle."</tr>";//chiudo l'ultima riga
}
$colonna=0;//metto a zero un contatore per vedere le colonne
$visualizzate=0;//metto a zero quante immagini ho visualizzato
//inizio la tabella
echo "<table>";
//inizio a ciclare le immagini
if($record = $pag->Show())
	{
		foreach($record as $row)  // <<< Questo fa il $row.
		{
    if($colonna==0){echo "<tr>";}//stampo l'apertura della riga
    echo "<td class=\"img\"><a href='gallery_view.php?id=".$row['id']."'><img src='public/media/photo/".$row["_dir"]."/img_thumb/".$row["url"]."'></a></td>";//stampo la cella/colonna con l'immagine
    $colonna++;//incremento il numero delle colonne
    $visualizzate++;//incremento il numero delle immagini visualizzate
    //verifico di aver fatto,in questo caso, tre colonne
    if($colonna%$numero_colonne==0){
        //se si chiudo la riga e riporto il contatore a zero
        echo "</tr>";
        $colonna==0;
    }
    //verifico se ho visualizzato tutte le immagini
    if($visualizzate >= $numero_immagini){
        echo $fine;//se visualizzate tutte chiudo la riga
    }
  }
}

//chiudo la tabella
echo "</table>";









	// restituisce i link alle pagine
	if($link = $pag->Link(3))
	{
		?>
		<a href="?cat=<?php echo $_GET["cat"]; ?>&pagina=<?php echo $link['first']; ?>">&laquo;</a> <?php
			foreach($link['before'] as $bf)
			{
				?><a href="?cat=<?php echo $_GET["cat"]; ?>&pagina=<?php echo $bf;?>"><?php echo $bf;?></a> <?php
			}
			?><?php echo $link['current'];?> <?php
			foreach($link['after'] as $at)
			{
				?><a href="?cat=<?php echo $_GET["cat"]; ?>&pagina=<?php echo $at;?>"><?php echo $at;?></a> <?php
			}
		?><a href="?cat=<?php echo $_GET["cat"]; ?>&pagina=<?php echo $link['last'];?>">&raquo;</a>
		<?php
	}
	$db->close();
}

require_once(dirname(__FILE__) . "/template/".$template_client."/footer.php");
?>

grazie mille.
 
scusatemi ma ho risolto con il mio vecchio codice che ho ritrovato..
ed ho solo applicato lo stile che ha fatto borgo.
vi ringrazio molto... alla prossima.
PHP:
<?php


        if ($i%$cols==0) $galleria .= "<tr>\n";
        // if per aprire la riga della tabella
       
        $galleria .= "<td class='thumb'>";
		
        $galleria .= "<a href='gallery_view.php?id=".$row['id']."'>";
        $galleria .= "<img src='public/media/photo/".$row["_dir"]."/img_thumb/".$row["url"]."' alt='".$row["titolo"]."' title='".$row["titolo"]."' /></a></td>\n";
		

        if ($i%$cols==($cols-1)) $galleria .= "</tr>\n";
        // if per chiudere la riga della tabella
        $i++;
        // incremento il contatore degli elementi
  
	
	
    }  
	$galleria .= "</table>\n";
	echo $galleria;
 

Discussioni simili