Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wrzucenie miniaturek do tabeli
Andrew
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 26.12.2002

Ostrzeżenie: (0%)
-----


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]


--------------------
www.skokinarciarskie.com
Go to the top of the page
+Quote Post
halfik
post
Post #2





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 17.05.2003
Skąd: Nysa

Ostrzeżenie: (10%)
X----


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)
Go to the top of the page
+Quote Post
spenalzo
post
Post #3





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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ć.


--------------------

Go to the top of the page
+Quote Post
Andrew
post
Post #4





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 26.12.2002

Ostrzeżenie: (0%)
-----


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 )


--------------------
www.skokinarciarskie.com
Go to the top of the page
+Quote Post
scanner
post
Post #5





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




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.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
spenalzo
post
Post #6





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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 :-)


--------------------

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 06:23