ugrás a tartalomhoz

for ciklus probléma

Fedor · 2005. Ápr. 28. (Cs), 16.21
Helló!

A következő probléma akasztott meg:

Van egy képscrollozó javascriptem, amely a következőképpen kéri letárolni a megjelenítendő képek nevét:

'pic1.jpg',
'pic2.jpg',
'pic3.jpg',
'pic4.jpg'

Fontos, hogy az utolsó kép után nincs vessző (a nevek persze bármik lehetnek). Mivel a kívánt honlapon több ilyen alkalmazást is meg kell jelenítenem (egy fotótárról van szó, több témakörrel), és ezek száma folyamatosan bővülni fog, ésszerűnek tűnt, hogy MySQL és PHP segítségével oldjam meg a dolgot. A képeket egységes sorszámozással láttam el (lásd mint fent), az adatbázisban pedig (egyéb adatok mellett) letároltam a képeket tartalmazó könyvtár nevét (ami egyben a képfájlok nevének első fele is), valamint az, hogy hány darab kép található a könyvtárban, majd kinyerve ezeket az adatbázisból, és egy-egy változóba letárolva megpróbáltam megjeleníteni a képeket a következő ciklus segítségével:

<?php
for ($x=1; $x<=$pic_num; $x++)
{echo "'".$img_dir."".$x.".jpg',\n";}
?>

Igen ám, de ez odarakja vesszőt az utolsó kép mögé is, márpedig ettől meghal a javascript valamilyen oknál fogva.

A kérdés tehát a következő: miképp lehetne megoldani, hogy az utolsó kép neve után ne következzen semmi?

Előre is köszi a jótanácsokat.
 
1

FOR

chinomoreno · 2005. Ápr. 28. (Cs), 17.18
Csak pic_num-1 ig menjen a ciklus és utána írd ki az utolsót
pl:
for ($x=1;$x<=$pic_num;$x++){
    print "'pic"."$x".".jpg',";
}
print "'pic"."$pic_num".".jpg'";
vagy rakd egy változóba stringként és vágd le az utolsó karaktert (substr)
2

feltételvizsgálat

Anonymous · 2005. Ápr. 28. (Cs), 17.27

<?php
for ($x=1; $x<=$pic_num; $x++)
{echo "'".$img_dir."".$x.".jpg'".($x==$pic_num ? "" : ",")."\n";}
?>
Nadi
3

ciklus helyett

T.G · 2005. Ápr. 28. (Cs), 17.31
Érdemes tanulmányozni a kevésbé ismert függvényeket is, mert néhány feladat sokkal könnyebb megoldani velük.

<?php
echo '"'.join(glob('images/*.jpg'), '", "').'"';
Az images könyvtárból kiveszi az összes jpg kép nevét, majd ahogy neked is kell, összekapcsolja egy stringé.
4

Ez csúcs

PiG · 2005. Ápr. 28. (Cs), 19.01
Csúcs megoldás! El is határoztam, hogy ezután minden nap megnézek egy két új függvényt!
P][G
5

ciklus helyett

Anonymous · 2005. Ápr. 28. (Cs), 22.23
Azért azt ne hallgassuk el, hogy itt az eredeti kérdés szempontjából a join() függvény az érdekes. Tehát ciklussal így érdemes próbálkozni:
<?php
$array=array();
for ($x=1; $x<=$pic_num; $x++)
{
	$array[]="'".$img_dir.$x.".jpg'";
}
echo join(',',$array);
?>
Gyulus
7

Implode

Anonymous · 2005. Ápr. 29. (P), 12.47
És azt se halgassuk el, hogy a join az implode függvény aliasa :)

aurum, aki lusta bejelentkezni
6

Köszi, köszi, köszi!

Fedor · 2005. Ápr. 29. (P), 09.37
Hú, köszönöm a sok megoldási lehetőséget, az egyikkel biztos menni fog.