Newsgroup: it.comp.www.php
Titolo: Galleria fotografica, facile facile

Salve gente,
ho cominciato da poco a smanettare con php+mysql (anche con una certa
soddisfazione!) e ora mi trovo davanti ad uno scoglio che non riesco a
superare.
Sto realizzando un minisito per un'azienda, e una delle sezioni è una
piccola galleria fotografica che si appoggia ad una tabella di un db mysql.
Questa piccola gallery è organizzata in una tabella nella quale per ogni
riga devono uscire 3 thumbnail (precedentemente caricati sul server insieme
alle immagini).
Per automatizzare il tutto e inserire la gallery all'interno di una delle
pagine ho deciso di crearmi una funzione, ed è proprio qui che mi si crea il
problema: funziona tutto, ma non riesco a trovare il modo di far creare la
tabella in modo che inserisca 3 thumb per linea e poi continui a capo.
Attualmente riesco ad infilare tutto su una riga, ma non è esattamente
quello che mi serve.
La table di mysql ha i seguenti campi:
id = id autoincrementante
tipologia = tipologia della foto (ci saranno due gallery distinte)
imgthumb = nome del thumb della foto
imgfull = nome completo della foto
dida = didascalia della foto (che per ora non viene utilizzata)
Vi posto il codice nella funzione commentandolo in alcuni punti (ci metto
una serie di valori generici, giusto per rendervi l'idea e levo tutti i dati
relativi ai CSS e all'ONCLICK per l'apertura dell'immagine piena):
function gallery($sezione)
{
 // chiamata al database + select + query
$link = mysql_connect("localhost", "root", "") or die();
 mysql_select_db("database") or die();
 $query = "SELECT * FROM tabelladatabase WHERE tipologia =\"" . $sezione .
"\" ORDER BY id DESC";
 $result = mysql_query($query) or die(mysql_error());
// qui comincio a creare la tabella che ha una largezza fissa di 588 pixel
 print "<table width=\"588\" border=\"0\" cellspacing=\"0\"
cellpadding=\"0\">";
//apro la riga
 print "<tr>";
// imposto il while per ciclare il contenuto della query
 while ($line = mysql_fetch_array($result, MYSQL_BOTH))
  {
// genero il codice per la riga
  print "<td width=\"196\" height=\"146\">";
  print "<a href=\"img/gallery/" . $line[imgfull] . "\" target=\"_blank\">";
  print "<img src=\"img/gallery/" . $line[imgthumb] . "\" alt=\"clicca per
ingrandire...\" width=\"150\" height=\"100\" border=\"0\">";
  print "</a>";
  print "</td>";
  }
// chiudo riga e tabella
 print "</tr>";
 print "</table>";
}
Ora, giustamente, per come ho impostato il codice, nel ciclo while viene
trattato tutto il contenuto della query, e quindi se ci sono diciamo 10
immagini, quello che ottengo sono 10 immagini su una riga, mentre a me
servono solamente 3 immagini per riga.
Credo che sia un problema facilmente risolvibile, e probabilmente
l'impostazione che gli ho dato non è quella corretta ma visto che sono nuovo
all'argomento non riesco a trovare una soluzione per fare in modo che una
volta ciclati 3 contenuti di $line, la funzione imposti una nuova riga nella
tabella html e continui a ciclare da dove aveva interrotto nella linea
precedente.
E' possibile farlo? In che modo?
Vi ringrazio in anticipo per l'attenzione e ringrazio chiunque possa darmi
una dritta su come risolvere la faccenda! :)
Ciao a tutti
Dario
(leva \NO#SPAM\ dall'indirizzo per rispondermi privatamente)

 }
Prova cosě.
Non č la soluzione ottimale.
Ho provato un po' ad aggiustare quello che hai fatto tu.
Sigourney

 Ho provato un po' ad aggiustare quello che hai fatto tu.
Ciao Sigourney,
grazie per la tua risposta. Non ho potuto risponderti prima di adesso perchč
purtroppo il pc di casa ha deciso di andarsene in vacanza prima di me e
quindi sto utilizzando quello dell'ufficio.
Ho provato ad utilizzare il codice che hai postato ma non ottengo il
risultato desiderato, ovvero le foto vengono piazzate una per ogni riga e
non 3 per riga come serve a me. Cmq ho capito il concetto del codice, ora
provo a vedere se riesco ad ottenere qualcosa.
Come dicevo, so che il codice non č ottimale. Tu che soluzione avresti
adottato?
Ciao


 quindi sto utilizzando quello dell'ufficio.
Riprova.
Considera che non l'ho provato il codice.
Vedi di aggiustarlo te nel caso.
Fai sapere.
Sigourney
function gallery($sezione)
{
$link = mysql_connect("localhost", "root", "") or die();
mysql_select_db("database") or die();
$query = "SELECT * FROM tabelladatabase WHERE tipologia =\"" . $sezione .
"\" ORDER BY id DESC";
$result = mysql_query($query) or die(mysql_error());
if (@mysql_num_rows($result) > 0) {
 echo  "<table width=\"588\" border=\"0\" cellspacing=\"0\"
cellpadding=\"0\">";
 while ($line = mysql_fetch_array($result)) {
  if ($cont == 0) echo "<tr>\n";
  $cont++;
  echo "<td width=\"196\" height=\"146\">\n";
  echo "<a href=\"img/gallery/" . $line[imgfull] . "\"
target=\"_blank\">\n";
  echo "<img src=\"img/gallery/" . $line[imgthumb] . "\" alt=\"clicca per
ingrandire...\" width=\"150\" height=\"100\" border=\"0\">\n";
  echo "</a>\n";
  echo "</td>\n";
  if ($cont == 3) {
   echo "</tr>";
   $cont = 0;
  }
 }
 if ($cont < 3) echo "</tr>\n";
 echo "</table>";
}

Sigourney wrote:
 > $cont = 0;
 >
 >> //apro la riga
 >> print "<tr>";
 >>
 >> // imposto il while per ciclare il contenuto della query
 >> while ($line = mysql_fetch_array($result, MYSQL_BOTH))
 >>  {
 >
 >     $cont++;
 >     if ($cont == 1) echo "<tr>\n";
 >
 >> // genero il codice per la riga
 >>  print "<td width=\"196\" height=\"146\">";
 >>  print "<a href=\"img/gallery/" . $line[imgfull] . "\"
 >
 >
 > target=\"_blank\">";
 >
 >>  print "<img src=\"img/gallery/" . $line[imgthumb] . "\" 
alt=\"clicca per
 >> ingrandire...\" width=\"150\" height=\"100\" border=\"0\">";
 >>  print "</a>";
 >>  print "</td>";
 >
 >
 >
 > if ( !($cont == 3)) {
 >      echo "</tr>\n";
 >     $cont = 0;
 > }
In questo modo chiudi la riga ogni volta che $cont e' diverso da tre ... 
invece devi chiuderla ogni volta che $cont e' uguale a tre, ovvero:
if ( $cont == 3)
     {
     echo '</tr>'."\n";
     $cont = 0 ;
     }
Inoltre dovresti vedere che succede nell'ultima riga se le foto non sono 
multiple di tre, ti lascia una o due celle vuote generando un html non 
valido ??
ciao
Mauro

 Fai sapere.
Ciao Sigourney,
allora, già ieri avevo aggiustato il tuo codice e aveva funzionato alla
grande.
Sapevo che ci voleva un contatore, ma non riuscivo ad afferrare dove
piazzarlo, ora è tutto chiaro, grazie mille! :)
Ne approfitto per salutare un po tutti visto che oggi è (finalmente) il mio
ultimo giorno di lavoro!
Ci vediamo al ritorno dalle ferie, metterò a posto il PC di casa e potrò
seguire il NG in pianta stabile, ci si vede! :)


 valido ??
Il problema non è nell'ultima riga o in quelle successive alla prima, ma
nella prima riga stessa.
Mettendo una o due sole foto i thumb vengono posizionati in modo non
corretto, ma solo se si trovano nella prima riga.
Se la prima riga contiene già tre foto, nelle righe seguente è possibile
mettere anche un solo thumb, visto che le tabelle sono praticamente
formattate automaticamente dall'html della riga precedente: le celle hanno
una dimensione fissa, una volta fatte le prime tre e riempita la riga il
resto va da solo! :)
Grazie cmq per l'aiuto
Rinnovo i saluti e vi auguro un buon agosto, in ferie o non, a tutto il NG,
ci si vede più in la!
Ciao


 ha scritto nel
messaggio news:cfaikl$dhc$1...@domitilla.aioe.org...

Ciao
Sigourney