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

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
