Autor | Zpráva | ||
---|---|---|---|
JurkQo Profil |
#1 · Zasláno: 14. 5. 2012, 15:01:49
Dobrý deň, mám takýto script:
<?php $handle = opendir("Videa"); while (false !== ($file = readdir($handle))) { $filesall[] = $file; } closedir($handle); for($i=0;$i<=count($filesall)-1;$i++){ if(($filesall[$i] !== ".") && ($filesall[$i] !== "..")) { $files[count($files)]=$filesall[$i]; } } for($i=0;$i<=count($files)-1;$i++){ $files = $files[$i]." "; $rozdelene = explode(" ", $files); $Ok = $rozdelene[0]."%20".$rozdelene[1]; printf("<A HREF=\"Videa/%s\">%s</A>",$ok ,$ok); echo("<br>"); ; } ?> |
||
Tori Profil |
#2 · Zasláno: 14. 5. 2012, 15:46:25
JurkQo:
„$files[count($files)]“ V PHP stačí $files[] = ... . Koukněte na funkce rawurlencode / rawurldecode, to řešení přes explode je zbytečné (a spoléhá na to, že bude v názvu max.jedna mezera). Druhý cyklus (od ř.9) je navíc, tutéž kontrolu můžete provádět už před ř.5. A pokud jen vypisujete seznam souborů/složek, tak i ty řádky 22-23 bych dala do prvního cyklu.
|
||
crash01 Profil |
Proč tak složitě?
<?php $cesta = 'Videa'; $adresar = dir($cesta); while ($soubor = $adresar->read()) { if($soubor != '.' and $soubor != '..' and ! is_dir($cesta.'/'.$soubor)) { echo '<a href="'.$cesta.'/'.$soubor.'">'.$soubor.'</a>'; } } |
||
JurkQo Profil |
Script:
<?php $cesta = '../Videa'; $adresar = dir($cesta); while ($soubor = $adresar->read()) { if($soubor != '.' and $soubor != '..' and ! is_dir($cesta.'/'.$soubor)) { echo '<a href="'.$cesta.'/'.$soubor.'">'.$soubor.'</a>'; } } ?> Warning: dir(../Videa): failed to open dir: No such file or directory in /DISK2/WWW/studiodirt.tk/www/PHP/Videa.php on line 4 Fatal error: Call to a member function read() on a non-object in /DISK2/WWW/studiodirt.tk/www/PHP/Videa.php on line 55 |
||
Tori Profil |
JurkQo:
Tohle jste předtím měl zrovna dobře: while (false !== ($soubor = readdir($adresar)))
crash01 Porovnání $filename !== false je pojistka pro složky/soubory s názvem "0".
|
||
JurkQo Profil |
#6 · Zasláno: 14. 5. 2012, 15:58:59 · Upravil/a: JurkQo
A funkciu rawurlencode som trochu nepochopil, mohol(mohla) by si mi napísať príklad
Tori: Nechápem( Programujem 2 roky a zatiaľ sa v tom tak nevyznám(mám 13)) |
||
crash01 Profil |
JurkQo:
„Warning: dir(../Videa): failed to open dir: No such file or directory in /DISK2/WWW/studiodirt.tk/www/PHP/Videa.php on line 4 Fatal error: Call to a member function read() on a non-object in /DISK2/WWW/studiodirt.tk/www/PHP/Videa.php on line 55“ Chyba naznačuje, že hledaný adresář neexistuje. Jaká je zhruba adresářová struktura? Tori: „Porovnání $filename !== false je pojistka pro složky/soubory s názvem "0".“ Na to jsem zapomněl :) Díky Takže i s ošetřením URL: < <?php $cesta = '../Videa'; $adresar = dir($cesta); while (false !== ($soubor = $adresar->read())) { if($soubor != '.' and $soubor != '..' and ! is_dir($cesta.'/'.$soubor)) { echo '<a href="'.rawurlencode($cesta.'/'.$soubor).'">'.$soubor.'</a>'; } } ? |
||
Tori Profil |
#8 · Zasláno: 14. 5. 2012, 18:01:31
JurkQo:
Až teď jsem si všimla: na ř.19 ( $files = $files[$i]." "; ) - pokud název souboru neobsahuje mezeru, tak ji přidáváte na konec, tam by mohl být problém. Potom na ř.21-22 - názvy proměnných rozlišují velká písmena (na rozdíl od např. názvů funkcí), takže $Ok a $ok jsou dvě různé proměnné. rawurlencode by byla užitečná, pokud názvy souborů mohou obsahovat i další problémové znaky, třeba diakritiku:
echo '<a href="'.rawurlencode($soubor).'">'.$soubor.'</a>'; |
||
JurkQo1 Profil * |
#9 · Zasláno: 16. 5. 2012, 13:31:56
Tak mohli by ste mi dať celý kód?
|
||
Časová prodleva: 12 let
|
0