Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wrzucenie miniaturek do tabeli
Forum PHP.pl > Forum > PHP
Andrew
Heh, nie wiedziałem jak dokładnie nazwać ten temat, bo to troszkę skomplikowana sprawa winksmiley.jpg

Mam na stronie galerię. Na stronie pokazującej konkretną kategorię mam skrypt, który wybiera z katalogu wszystkie miniaturki i umieszcza je w 3-kolumnowej tabeli. Wszystko dobrze działa, gdy jest 3x (czyli np. 3, 30, 36 zdjęć), jednak gdy jest 3x+1 (4, 31, 37), to we wszystkich wierszach są po 3 obrazki, ale w ostatnim pojawiają się 4 i rozciąga to tabelę. Przez to psuje się cały design strony... Chciałbym wiedzieć, co zrobić, aby w takim wypadku ten ostatni obrazek przenosił się do następnego wiersza (żeby w ostatnim był tylko jeden obrazek). Męczę się z tym od wakacji i nie mogę sobie poradzić, mimo że próbowałem różnymi metodami... sad.gif Liczę na Waszą pomoc! Z góry dzięki!

[php:1:30b2ce1e18]<?
$path = "$katalog/male/";
$dir = opendir($path);

while ($d = readdir($dir)){
if ($d != "." && $d!= ".."){
$pliki[] = $d;
}
}
natcasesort($pliki);
$len = count($pliki)-1;
echo "<table border=0 cellspacing=10 cellpadding=10><tr>";
$licznik=0;
while (list($k,$v)=each($pliki)){
for ($i=0;$i<$len;$i=$i+3){
if ($licznik==$i){
echo "</tr><tr>";
}
}
print ("<td><center><a target="_blank" href=$katalog/$v><img alt="$v" src=".$path.$v." border=0></a></center></td>");
$licznik++;
}
echo "</tr></table>";
?>[/php:1:30b2ce1e18]
halfik
Mialem cos gdzei podobnego i wygladalo to tak:
[php:1:7b95306984]<?php
$licznik=0;
echo '<table border=0>';
while ($tapetki = mysql_fetch_row($wynik))
{

if((is_int($licznik/3)) && ($licznik!=0)) echo "</tr>";

if(is_int($licznik/3)) echo "<tr>";

echo "<td><img src='tapety/$tapetki[2]' width='120'><br><ahref='tapety/gett.php?plik=$tapetki[1]' target='_blank'><font size=1 face=verdana><b><center>Pobrań ($tapetki[3])</center></b></font></a></td>";

$licznik++;

}
echo '</table>';
?>[/php:1:7b95306984]

Prosze umieszczać kod php w odpowiednich znacznikach. (scanner)
spenalzo
Ja to rozwiązałem jeszcze inaczej - masz tutaj właściwie gotowy skrytp:
[php:1:3194502d92]<?php
$add="n<table border="0" width="800" cellpadding="10" cellspacing="0">n";
for($i=0,$a=0; $i<count($mini); $i++)
{
if($a==0)
{
$add.="n<tr>";
$add.="<td align="center" valign="middle"><img src="".$mini[$i]."" border="0"></td>";
$a+=1;
}
elseif($a==1)
{
$add.="<td align="center" valign="middle"><img src="".$mini[$i]."" border="0"></td>";
$a+=1;
}
elseif($a==2)
{
$add.="<td align="center" valign="middle"><img src="".$mini[$i]."" border="0"></td>";
$add.="n</tr>";
$a=0;
}
}
$add.="</table>";
echo $add;
?>[/php:1:3194502d92]
gdzie:
$mini - tabela z nazwami plików

Konstrukcja $add zamiast echo jest taka, ponieważ wynik tego skryptu zapisywałem do pliku, a teraz nie chce mi się zmieniać.
Andrew
o, dzięki biggrin.gif
przetestuję jutro i powiem, jak działa (chociaż podejrzewam, że będę miał problemy z wyborem, jeśli oba te skrypty będą mnie satysfakcjonować winksmiley.jpg )
scanner
Cytat
[php:1:0db3346e9f]for($i=0,$a=0; $i<count($mini); $i++)[/php:1:0db3346e9f]


Spenalzo: i przy każdym przebiegu pętli obliczasz count($mini). Oblicz to przed pętlą, chyba, że wewnątrz pętli tablica zmienia rozmiar.
Optymalizacja smile.gif

A pozatym...
To już było.
spenalzo
Cytat
Spenalzo: i przy każdym przebiegu pętli obliczasz count($mini). Oblicz to przed pętlą, chyba, że wewnątrz pętli tablica zmienia rozmiar.

Nie pomyślałem nawet o tym :-)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.