Gardenee Posted October 24, 2007 Posted October 24, 2007 Sziasztok! Van egy apró problémám, remélem tudtok segíteni. Van egy galériám, amely úgy mûködik, hogy kilistázza a 'gallery' könyvtár tartalmát (alkönyvtárakat). Ezek a galéria albumai. A könyvtárnevek számok (001, 002, 003...), tartalmaznak egy leiras.txt filet, aminek tartalmát mögéiratom listázáskor, ez az album leírása, albumnév, ilyesmi. Így néz ki a kód: $dir_handle = @opendir($path) or die("$path könyvtár megnyitása sikertelen!"); echo "<p align=left>Galériák listája:</p><br/>"; while ($file = readdir($dir_handle)) { if($file!="." && $file!="..") { $myFile = $path."/".$file."/leiras.txt"; $fh = fopen($myFile, 'r'); $leiras = fgets($fh); fclose($fh); echo "<p align=left><a href='galeria.php?dir=$file' class=galeria>Galéria $file - $leiras</a></p>"; } } closedir($dir_handle); Nah és a kérdés: Hogyan tudnám a lista sorrendjét megfordítani? Tehát az albumok számai csökkenõ sorrendben legyenek? Köszi elõre is!
Mezofi Posted October 24, 2007 Posted October 24, 2007 Akkor ne írasd egyből ki, hanem tedd tömbbe, és azt írasd ki. $dir_handle = @opendir($path) or die("$path könyvtár megnyitása sikertelen!"); echo "<p align=left>Galériák listája:</p><br/>"; while ($file = readdir($dir_handle)) { if($file!="." && $file!="..") { $myFile = $path."/".$file."/leiras.txt"; $fh = fopen($myFile, 'r'); $leiras = fgets($fh); fclose($fh); $tomb[] = "<p align=left><a href='galeria.php?dir=$file' class=galeria>Galéria $file - $leiras</a></p>"; } } closedir($dir_handle); //A tömbb számozása 0-tól kezdődik, így a tömb elemszáma eggyel nagyobb mint a záró elem mutatója. //Visszafelé íratjuk ki nulláig for($i = (count($tomb)-1); $i >= 0; $i--){ echo $tomb["$i"]; }
h.arpad Posted October 24, 2007 Posted October 24, 2007 No igen, ez az, amikor illik elgondolkodni azon, nem éri-e meg inkább MySQL-adatbázisban tárolni az album adatait...
Gardenee Posted October 24, 2007 Posted October 24, 2007 Akkor ne írasd egybõl ki, hanem tedd tömbbe, és azt írasd ki. Na, erre nem is gondoltam! Köszi!
payskin Posted October 27, 2007 Posted October 27, 2007 No igen, ez az, amikor illik elgondolkodni azon, nem éri-e meg inkább MySQL-adatbázisban tárolni az album adatait... Elgondolkodni mindig érdemes, ám ebben az esetben egyértelmûen nem.
h.arpad Posted October 27, 2007 Posted October 27, 2007 Nem győztél meg. Én továbbra is adatbázisban tárolnám, annak minden előnyével, és szerintem nem létező hátrányával.
payskin Posted October 28, 2007 Posted October 28, 2007 Hát nézzük! Az egyikhez kell egy nyúlfarknyi kód, az ott fent. A másikhoz kell: 1. Egy működő MySQL szerver 2. Az SQL nyelv ismerete 3. A PHP adatbázis-kezelő parancsainak ismerete Hátránya lehet, hogy nincs, csak egy picit túlzás.
h.arpad Posted October 28, 2007 Posted October 28, 2007 A fájlkezelő függvények használatának is vannak hátrányai: 1. Használatuk platformfüggő (UNIX, Windows); 2. Ismerni kell a fájlkezelő függvényeket; 3. Az adatok módosításhoz egyenként meg kell nyitni a .txt állományokat, és feltételezni kell, hogy mindegyik struktúrája azonos; 4. Végül, amiről a érdés is szólt: "Hogyan tudnám a lista sorrendjét megfordítani?" - Hát nem egyszerűbb SQL-lel?; 5. Ha keresni szeretnél a képek között, a fenti kód csöppet sem lesz nyúlfarknyi. Abban persze, hogy igazad van, hogy az SQL-t ismerni kel hozzá, de ez nem jelenti az egész módszer csődjét, vagyis azt, hogy egyértelműen szóba sem jöhet.
Mezofi Posted October 28, 2007 Posted October 28, 2007 Nem egyszerűbb SQL-el, mert tárolni kell a file-ok neveit. Ebben az esetben teljesen felesleges tárolni öket, kapcsolódni, lekérdezni.
Master_of_Puppets Posted October 30, 2007 Posted October 30, 2007 Most nem t'om hova illik inkább a kérdés, de beteszem ide. Ha így probálom megnyitni az oldalt: .../phpcodes.html Akkor normálisan és gond nélkül behozza. De ha így: ...?act=phpcodes1 Akkor viszont ezt dobja ki: "Parse error: syntax error, unexpected T_STRING in /nfs/extra/g/ga/gaws/wwwroot/page/phpcodes.html on line 163" Itt a PHP forrás is: <?php switch ($_GET['act']) case phpcodes1: include_once("phpcodes.html"); break; } ?>
Master_of_Puppets Posted October 30, 2007 Posted October 30, 2007 Azt csak ide gépeltem be rosszul. A switch tartalmaz több elemet is és azok működnek... Az viszont nem fér a fejembe, hogy a PHP szerver mit kötözködik egy HTML dokumentummal meg az, hogy hogyan lehet, hogy az oldalra mutató teljes linkkel behozza hibátlanul az oldalt, míg ezzel ?act=phpcodes1 nem...
h.arpad Posted October 30, 2007 Posted October 30, 2007 <?php switch ($_GET['act']) { case "phpcodes1": include_once("phpcodes.html"); break; } ?> :!: NB.: Idézőjel!
Master_of_Puppets Posted October 31, 2007 Posted October 31, 2007 Eddig idézőjel nélkül használtam és ezen az egy oldalon kívül mindent megnyitott. Ui.: Bepakoltam idézőjeleket is, de ettől függetlenül továbbra is ezt írja ki: Parse error: syntax error, unexpected T_STRING in /nfs/extra/g/ga/gaws/wwwroot/page/phpcodes.html on line 163
h.arpad Posted November 1, 2007 Posted November 1, 2007 Ha a phpcodes.html-ben <? ?> jelölõk között van valami, azt a PHP-parancsértelmezõ megpróbálja értelmezni. Nem lehet, hogy ez a gond? A hibaüzenet szerint ugyanis ebben a fájlban van a hiba. Mi a tartalma?
Master_of_Puppets Posted November 1, 2007 Posted November 1, 2007 Hát az lehet De PHP-értelmezõ mért próbálja meg értelmezni a HTML-ben elmentett PHP kódokat?
h.arpad Posted November 1, 2007 Posted November 1, 2007 Ugye ezt nem kérdezted komolyan? Az include() hatása olyan, mintha a szöveges fájlt (ez esetben egy HTML-t) egy az egyben bemásolnád az adott PHP-forrásba. Ha abban <? ?> által határolt rész van, azt megpróbálja a parancsértelmező PHP-kódként értelmezni. Kivétel, ha a rövid nyitótag-ek (php.ini beállítás) tiltva vannak (ami egyébként ajánlott.) De ilyenkor meg a <?php ?> közötti kódrészt próbálja értelmezni. Másrészt: a < és > jeleket nem szokás egy HTML-fájlban használni, ha az adott karaktereket meg szeretnéd jeleníteni. Ezeknek ugyanis különleges jelentésük van (PHP, XML...) Cseréld le őket a HTML-ben a megfelelő kódjukra >>itt egy magyarázat és táblázat<<, és nem okoznak többé gondot!
Kovács Dávid ( Davs ) Posted November 1, 2007 Posted November 1, 2007 Az include() hatása olyan, mintha a szöveges fájlt (ez esetben egy HTML-t) egy az egyben bemásolnád az adott PHP-forrásba. Nem, tévedsz! Az a require() nevû dolog . Ha "beinclude-olsz" egy php file-t, az olyan, mintha lefuttatnád azt a fájlt és a kimeneti HTML kódot irnád az include helyére. Már amennyire én tudom...
h.arpad Posted November 2, 2007 Posted November 2, 2007 Nem tudod jól, de had' ne vitatkozzunk már tényeken, főként ha van egy >>jó dokumentációnk<<, melyben ez áll: Az include() beilleszti és feldolgozza a megadott fájlt. Az alábbiak igazak a require()-ra is. A require() és az include() megegyezik egymással a hibakezelését leszámítva. Az include() nem fatális hibát, figyelmeztetést generál, a require() viszont fatális hibát jelez. A hibakezelésről szóló rész természetesen arra az esetre vonatkozik, ha a beilleszteni kívánt fájl nem érhető el, ami ebben az esetben ugye kizárt. @Master_of_Puppets: Tégy úgy, ahogy mondtam, és nem kapszhatsz hibát.
Kovács Dávid ( Davs ) Posted November 3, 2007 Posted November 3, 2007 Mindig tanul vamait az ember. Köszi a felvilágosítást! Azt mikor, hogy a "mindig"-ben nincs í?
Silent Psycho Posted November 3, 2007 Posted November 3, 2007 $result = @mysql_query($query); A mysql_query elõtt lévõ @ mire jó?
Master_of_Puppets Posted November 3, 2007 Posted November 3, 2007 Ha jól tudom, azt tudja, hogy elnyom mindenféle hibát.
Kovács Dávid ( Davs ) Posted November 5, 2007 Posted November 5, 2007 antismap.php <?php header('Content-type: image/png'); $str_text=explode(" ","R 3 4 A"); $a=rand(0,1); $font_size=12; $os_x=20; $os_y=23; $img=imagecreatefrompng("elements/antispam/img".$a.".png"); $color=imagecolorallocate($img,0,0,0); $f_r=rand(1,2); $font="elements/antispam/".$f_r.".ttf"; $angle=rand(-15,15); $test=imagettftext($img,$font_size,$angle,$os_x,$os_y,$color,$font,$str_text[0]); $f_r=rand(1,2); $font="elements/antispam/".$f_r.".ttf"; $angle=rand(-15,15); $os_x=$os_x+($font_size*1.3); $test=imagettftext($img,$font_size,$angle,$os_x,$os_y,$color,$font,$str_text[1]); $f_r=rand(1,2); $font="elements/antispam/".$f_r.".ttf"; $angle=rand(-15,15); $os_x=$os_x+($font_size*1.3); $test=imagettftext($img,$font_size,$angle,$os_x,$os_y,$color,$font,$str_text[2]); $f_r=rand(1,2); $font="elements/antispam/".$f_r.".ttf"; $angle=rand(-15,15); $os_x=$os_x+($font_size*1.3); $test=imagettftext($img,$font_size,$angle,$os_x,$os_y,$color,$font,$str_text[3]); imagepng($img,"code.png"); ?> Ez a kód arra lenne hivatott, hogy bejelentkezésnél a neven és a jelszón kívül egy képen látható négy betûs kódot is be kelljen írni. Ha meghívom az antispam.php file-t, akkor megjelenik a kép, rajta a négy betûvel, de amint include-olom azt egy másik file-ban, akkor egy hibaüzenetet kapok, miszerint a kép nem megjeleníthetõ, mert hibát tartalmaz. Mi lehet a baj?
h.arpad Posted November 5, 2007 Posted November 5, 2007 imagepng($img,"code.png"); Itt miért van szükség fájlnév megadására? A szabványos kimenetre menne a kép, a header()-ben pontosan megadtad a bögészőnek, mit kell megjelenítenie, nem kell fájlba menteni. imagepng($img);
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now