Pagina 1 di 1

[Risolto] Php, mysql_fetch_array e tabelle html

Inviato: martedì 5 giugno 2007, 18:02
da Telefo
Ciao a tutti, e scusatemi in anticipo se dirò castronerie, sono nuovo/fai da te al php. Espongo la cosa:
Ho un database che contiene link a delle miei immagini, per essere precisi ogni immagine ha 2 link: la thumbnails e l'immagine vera e propria.
Ho creato una pagina php che mi mostra una tabella con le thumb e ogni thumb linka ad un'altra pagina in php che mostra l'immagine. Tutto funziona come voglio. Questo grazie ad un ciclo while e alla funzione mysql_fetch array. Badate che sono così niubbo che conosco pochissime funzioni!
Ecco l'esempio del codice:

Codice: Seleziona tutto

<?php
	$query="select ID, nome, link, thlink from immagini";
	$result=mysql_query($query);
	while($row=mysql_fetch_array($result)){
   $ID=$row[ID];
	$link=$row[link];
   $thlink=$row[thlink];
   echo "<table><tr></tr><td><a href=\"view_img.php?ID=$ID\"><img src=\"$thlink\"></a></td></tr></table>";
  } 
?>

Questo fa sì però che ad ogni riga della tabella creata io abbia una thumb. Ma se io volessi 4 thumb in una riga, cioè 4 celle per ogni riga con una thumb per cella?

Re: Php, mysql_fetch_array e tabelle html

Inviato: martedì 5 giugno 2007, 18:34
da prampa
puoi convertire l'array in una matrice (riga, colonna) e poi per ogni riga creare i per ogni colonna presente, oppure puoi provare anche con un doppio loop all'interno del primo, nel senso che il primo va da 1 fino alla fine delle occorrenze, nel secondo vai dall'elemento i+1 per altre 3 volte e poi ritorni nel loop principale. Pero' riconosco che è piu' brutta come soluzione......
La prima è migliore. Con le occorrenza del primo cursore, ti crei un nuovo array bidimensionale con 4 colonne: se ti piace come soluzione ti posso postare un esempio.
ciao

Re: Php, mysql_fetch_array e tabelle html

Inviato: martedì 5 giugno 2007, 20:03
da Telefo
Grazie, gradirei l'esempio se puoi!

Re: Php, mysql_fetch_array e tabelle html

Inviato: martedì 5 giugno 2007, 21:34
da prampa
questo esempio è semplice pero' funziona, anceh se stilisticamente non corretto

Codice: Seleziona tutto

<?php
$arrayColumn = array();
$i=1;
while ($i<41) {
  $arrayColumn[]=array("A"=>$i, "B"=>$i+1, "C"=>$i+2, "D"=>$i+3);
  $i=$i+4;
}
$i=0;
while ($i<10) {
echo "\n";
echo $arrayColumn[$i]["A"];
echo $arrayColumn[$i]["B"];
echo $arrayColumn[$i]["C"];
echo $arrayColumn[$i]["D"];
  $i=$i+1;
}
echo "\n";
?>
Se lo salvi in un file e lo esegui da linea di comando vedrai il risultato a video (sempre che tu abbia installato il php-client, altrimenti lo devi provare da apache), visualizza i primi 40 numeri interi su 4 colonne.
Da per scontato che il numero di colonne siano 4 (A,B,C,D che potrai sostituire con quello che vuoi) e non gestisce la possibilità che il numero di occorrenze non sia un multiplo di 4 (nell'esempio è forzato a 40, ma non e' difficile renderlo generico).....Quindi il tuo array con il resultset lo ciclerai fino al termine delle occorrenze sosituendo al valore delle colonne ($i, $i+1......) il valore recuperato da db (il tag html ).
ciao fammi sapere che altrimenti combiniamo in altro modo.

Re: Php, mysql_fetch_array e tabelle html

Inviato: mercoledì 6 giugno 2007, 10:59
da Telefo
Grazie, purtroppo non sono riuscito a far andare il tuo esempio, ma per miei limiti  ;D sono un umanista che si da amatorialmente all'informatica da poco tempo!
Ho cmq trovato una funzione simaptica: mysql_num_rows() che restituisce il numero di righe in un risultato! così con un ciclo for ho ovviato, ti posto il codice per una tabella a 2 colonne:

Codice: Seleziona tutto

<?php
	//imposto la query e il risultato
	$query="select ID, nome, link, thlink from immagini";
	$result=mysql_query($query);
	//calcolo le righe che conterrà la tabella con due celle per riga
	$nrighe=mysql_num_rows($result)/2;
	//comincio  il ciclo che continua fino a esaurimento righe della tabella
	for($i=0; $i<$nrighe; $i++){
	//assegno valore alla prima cella e la stampo senza chiudere la riga
	$row=mysql_fetch_array($result);
	echo "<table><tr><td><a href=\"view_img.php?ID=$row[ID]\"><img src=\"$row[thlink]\"></a></td>";
	//assegno valore alla seconda cella stampo e chiudo la riga	
	$row=mysql_fetch_array($result);
	echo "<td><a href=\"view_img.php?ID=$row[ID]\"><img src=\"$row[thlink]\"></a></td></tr></table>";
	}
?>

Re: Php, mysql_fetch_array e tabelle html

Inviato: mercoledì 6 giugno 2007, 13:05
da prampa
OK, stasera ti posto l'esempio riveduto e corretto
ciao

Re: Php, mysql_fetch_array e tabelle html

Inviato: mercoledì 6 giugno 2007, 15:16
da Telefo
Non so visto che ho risolto forse devo aggiungere il tag risolto?
Aspetto anche il tuo cos' vedo soluzioni alternative

Re: Php, mysql_fetch_array e tabelle html

Inviato: mercoledì 6 giugno 2007, 21:31
da prampa
Telefo ha scritto: Non so visto che ho risolto forse devo aggiungere il tag risolto?
Aspetto anche il tuo cos' vedo soluzioni alternative

prova questo

Codice: Seleziona tutto

<?php
$cols=11;
$count=30;
$i=1;
$righe=intval($count/$cols);
$resto = $count - ($cols* $righe);
$x=0;

while ($i<=$righe) {
    $arr1[]=array(range($i,$cols+1));
    for ($j=0;$j<$cols;++$j) {
        $arr1[$i][$i][$j]=$i+$j+$x;
    }
    $x=$x+$j-1; 
    ++$i;
}

$arr1[]=array(range(1,$resto+1));
for ($j=0;$j<$resto;++$j) {
    $arr1[$i][$i][$j]=$i+$j+$x;
}

for ($i=1;$i<count($arr1);++$i) {
    for ($j=0;$j<$cols+1;++$j) {    
      echo $arr1[$i][$i][$j];
    }
    echo "\n";
}

?> 

$cols contiene il numero di colonne
$count contiene il numero di elementi

prova ad eseguirlo e vedi il risultato. Per te al posto di $arr1[$i][$i][$j]=$i+$j+$x; dovrai mettere il risultato della query indicizzato da ($i+$j+$x).
prova

Re: Php, mysql_fetch_array e tabelle html

Inviato: venerdì 8 giugno 2007, 12:05
da Telefo
Grazie! ti confesso però che trovo più immediata la prima soluzione...
Grazie di nuovo per l'aiuto!  (b2b)

Re: Php, mysql_fetch_array e tabelle html

Inviato: venerdì 8 giugno 2007, 12:50
da prampa
Telefo ha scritto: Grazie! ti confesso però che trovo più immediata la prima soluzione...
Grazie di nuovo per l'aiuto!  (b2b)
va benissimo. Occhio pero' che con il tuo metodo il numero di colonne è fisso e se il numero di occorrenze che ti ritorna la select è dispari, ti perdi l'ultimo campo. In questo caso, o se tu decidessi di passare a tre o piu' colonne, devi sempre verificare che se il resto della divisione è zero va bene cosi', altrimenti dovrai aggiungere nella tabella html tanti pari alle oocorrenze rimaste fuori del ciclo.
ciao

Re: [Risolto] Php, mysql_fetch_array e tabelle html

Inviato: venerdì 8 giugno 2007, 13:26
da Telefo
Già... avevo notato quest'inconveniente... infatti o metto su il codice che mi hai postato o immetto le immagini nel database a gruppi multipli!
Ciao  ;)