while php e i thumbnail
while php e i thumbnail postato il 30/01/2008 16:09:51 nel forum programmazione, open source e hosting
scrivo in questo forum perchè mi trovo dinanzi ad un problema che non riesco a risolvere...
si tratta dei famigerati thumbnail:
non è per il codice in sè che chiedo aiuto, ma per l'impostazione che voglio dare io alla galleria e che, al momento, mi risulta difficile concretizzare per questione del ciclo while di php e delle tabelle...
in sintesi io vorrei che apparissero in una tabella quattro immagini per riga alla volta...
mi spiego meglio (XD):
avendo questo:
<?
$MySql = "SELECT blablabla...";
$Result = mysql_query($MySql);
?>
<table align="center" cellspacing="10">
<tr>
<? while($rs = mysql_fetch_array($Result)) { ?>
<td><img ecc...></td>
<? } ?>
</tr>
</table>
se nel campo del database che ho indicato vi sono molte immagini la tabella si allarga immancabilmente, oltrepassando lo schermo e mostrando lo scrollbar inferiore...
avendo questo:
<?
$MySql = "SELECT blablabla...";
$Result = mysql_query($MySql);
?>
<table align="center" cellspacing="10">
<? while($rs = mysql_fetch_array($Result)) { ?>
<tr>
<td><img ecc...></td>
<td><img ecc...></td>
<td><img ecc...></td>
<td><img ecc...></td> </tr>
<? } ?>
</table>
ovviamente mi appariranno tante tabelle con quattro colonne quante sono le immagini nel campo del database...
dove dovrei mai mettere il "while" affinchè mi appaia una tabella avente quattro immagini per ogni riga in base al numero delle immagini del database? (sempre se possibile <.<)
esiste un comando che imposti un limite massimo al numero delle colonne di una tabella e la obblighi a proseguire "l'elenco" di immagini alla successiva riga? *_*
grazie!
Pagine → 1
30/01/2008 16:54:00
Ora non sò cosa ti serve e se sia realizzabile in questo modo....ma se anche le immagini devono essere inserite nel database 4 a 4 potresti ovviare questo problema creando differenti campi tipo IMG1, IMG2, IMG3, e IMG4 e poi crei 4 cicli...certo appesantisce il database e il codice ma è una soluzione.
30/01/2008 17:03:34
Non sono sicuro di aver capito bene:
credo di aver capito che
tu hai una tabella mysql di immagini;
ogni record della tabella contiene un'immagine
vuoi visualizzarne 4 per riga
allora devi fare questo (codice scritto al volo: può contenere errori):
<?
$MySql = "SELECT blablabla...";
$Result = mysql_query($MySql);
?>
<table align="center" cellspacing="10">
<tr>
<?
$i=0;
while($rs = mysql_fetch_array($Result)) {
$i++;
?>
<td><img ecc...></td>
<?
if ($i%4==0) echo "</tr><tr>";
}
?>
</tr>
</table>
piccolo inconveniente: stampi un <tr></tr> in più alla fine, ma si può sistemare con una piccola accortezza :D
👋
30/01/2008 17:21:00
La soluzione con i css è fattibile se sei sicuro che le immagini hanno tutte le stesse dimensioni.
Ad ogni modo se vuoi intabellare le immagini, non c'è altro modo che usare...... UNA TABELLA!!! 😝
Le tabelle hanno quell'unica funzionalità, per il resto (impaginazione e layout) bisogna utilizzare i div come dice oorazoroo
👋
30/01/2008 18:24:25 e modificato da ipswich il 30/01/2008 18:38:36
per xenom:
sarebbe una cosa immane, in quanto le immagini sono centinaia, con svariate categorie e sottocategorie :-P...
ho risolto grazie all'aiuto di shanks, ho sistemato qualche piccolezza, ma era proprio quello che cercavo (non ci sarei arrivato da solo probabilmente ^^)...
per quanto riguarda il float mi ha dato dei problemi, quindi ho preferito utilizzare le tabelle...
c'è solo un piccolo problema:
se il numero totale delle immagini non è multiplo di 4 le ultime non si vedono...
sto cercando di capire cosa impostare nell' "else" affinchè il <tr> non sia chiuso, ma dovrò comunque mettere un limite, altrimenti sono al punto di partenza...
(grazie a tutti!!)
:-D
04/02/2008 10:10:20
function PrintThumb($cat,$thumb){
$cols=intval($a=sqrt(count($thumb)));
echo "<table border='1' align='center' cellpadding='0' cellspacing='5'><tr>";
for ($i=0 ; $i<count($thumb) ; $i++) {
echo "<td width='".SMALL_W."px' height='".SMALL_H."px'><a href='#' onclick="javascript:ShowImage('".BASE_DIR.$cat."/".$thumb[$i]."')"><img src='".BASE_DIR.$cat.THUMB_DIR.$thumb[$i]."'></a></td>";
if (($i+1)%$cols==0 && ($i+1)!=count($thumb)) echo "</tr><tr>";
}
echo "</tr></table>";
}
Questo e' un mio codice fatto per un sito qualche mese fa.
siccome caricavo ogni volta un numero di immagini diverse ho fatto un modo che le immagini venissero stampate nel modo piu' *quadrato* possibile.
Se a te serve mettere il massimo sempre a 4 basta che nella prima riga metti cols a 4, e poi dentro togli lo schifo che ho messo io, (io caricavo da una directory invece che dal db.)
usare il for o il while entrambi con il mysql_fetch_array non fa differenza, io qui usavo la funzione count per sapere quante righe erano, nel tuo caso credo serva il mysq_num_row(RISULTATO QUERY).
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Tibia ↗
Tiles Survive ↗
AlterEgo ↗
Imperion ↗
Foundation Galactic Frontier ↗