Autor | Zpráva | ||
---|---|---|---|
lopikol Profil |
#1 · Zasláno: 23. 5. 2011, 18:13:19
Mám kod:
$path = './'; $dir = opendir($path); while($file = readdir($dir)){ if($file != '.' AND $file != '..' AND filetype($file) == 'dir') { echo "<h1><a href='http://$file.loc/'>" . ucfirst("$file") . ".loc</a></h1>"; } } Rád bych ho převedl na funkci readpath(), ale tak, abych echo "<h1><a href='http://$file.loc/'>" . ucfirst("$file") . ".loc</a></h1>"; toto měl až v html kodu. Napsal jsem si toto, ale to vrací jen jeden prvek: <?php function readpath() { $path = './'; $dir = opendir($path); while($file = readdir($dir)){ if($file != '.' AND $file != '..' AND filetype($file) == 'dir') { return array($file, ucfirst($file)); } } } $path = readpath(); echo "<p><h1><a href='http://$path[0].loc/'>$path[1].loc</a></h1></p>"; |
||
Jozin Profil |
#2 · Zasláno: 23. 5. 2011, 19:13:25 · Upravil/a: Jozin
máš tam malinkatou chybu. Musí to vypadat takto:
<?php function readpath($path) { //to je aby to bylo pro jakoukoli složku $dir = opendir($path); $ret = array(); while($file = readdei($dir)) { if($file != '.' && $file != '..' && filetype($file) == 'dir') $ret[] = ucfirst($file); } return $ret; } var_dump(readpath('./')); |
||
lopikol Profil |
#3 · Zasláno: 23. 5. 2011, 19:33:46
A jak to mám ted zakomponovat na ten výpis?:
echo "<p><h1><a href='http://$path[0].loc/'>$path[1].loc</a></h1></p>"; |
||
Jozin Profil |
#4 · Zasláno: 23. 5. 2011, 19:39:24
<?php $path = readpath('./'); for($i=0;$i<count($path);$i+=2) { echo "<p><h1><a href='http://{$path[$i]}.loc/'>{$path[$i+1]}.loc</a></h1></p>"; } ale myslím si, že nechceš $path[0] a $path[1], ale u obou 0 v tom případě bude u for místo $i+=2 toto $i++ a ve výpisu místo $i+1 jen $i |
||
lopikol Profil |
#5 · Zasláno: 23. 5. 2011, 20:36:22
Zkoušel jsi to? Mě to nefunguje - nic to nezobrazí!
|
||
Jozin Profil |
#6 · Zasláno: 23. 5. 2011, 20:43:54
Všiml jsem si, že v #2 mám překlep v readdir. Nezkoušel jsem to, ale mělo by to fungovat... mrkni se na překlepy a podobně.
|
||
lopikol Profil |
#7 · Zasláno: 23. 5. 2011, 20:48:36 · Upravil/a: lopikol
Jozin: A jooo. Vypisuje to, ale problém je ted u toho foreach, jelikož to nevypíše vše a ještě to je posunuté. Mělo by to být i0 s i1 ale tady to je nějak šouplé, takže je to i1 s i2 a to k sobě nepatří.
EDIT: Tak už to mám opravené ;) Moc díky ;) |
||
lopikol Profil |
#8 · Zasláno: 24. 5. 2011, 09:31:07
Ještě jedna věc. Potřeboval bych aby když tam nebude žádná složka, aby to vypsalo např "Žádný projekt neexistuje". Děkuji.
|
||
Jozin Profil |
#9 · Zasláno: 24. 5. 2011, 10:26:00 · Upravil/a: Jozin
Úpravou výpisu
<?php $path = readpath('./'); $count = count($path); if($count > 0) { for($i=0;$i<$count;$i+=2) { echo "<p><h1><a href='http://{$path[$i]}.loc/'>{$path[$i+1]}.loc</a></h1></p>"; } } else echo "Žádný projekt neexistuje."; Nebo přímo ve funkci stejným způsobem, akorát se bude testovat, zda count $ret je větší než nula ;) |
||
Časová prodleva: 2 měsíce
|
|||
lopikol Profil |
#10 · Zasláno: 22. 7. 2011, 13:27:57
Zkoušim si tam přidat řazení podle abecedy přesnějí asort(), ale bohužel nevim kam to napasvat. Bud to píše, že to není array a nebo to vypíše pouze jeden řádek. Upravíte to někdo prosím? Děkuji.
function readpath($path) { $dir = opendir($path); $ret = array(); while($file = readdir($dir)) { if($file != '.' AND $file != '..' AND filetype($file) == 'dir') $ret[] = ucfirst($file); } $count = count($ret); if($count > 0) { return $ret; }else{ echo "<p class='empty'></ EMPTY /></p>"; } } |
||
Alphard Profil |
#11 · Zasláno: 22. 7. 2011, 17:55:55
Podle abecedy čeho? asort() řadí podle indexu u asociativních polí, vy ale konstrukcí
$ret[] = ucfirst($file); generujete pole s výchozími číselnými indexy, nemá smysl podle nich řadit. Možná hledáte klasický sort.
|
||
lopikol Profil |
#12 · Zasláno: 22. 7. 2011, 18:31:11
Podle abecedy těh načtených složek. např Auta, Motorky ... Takže to bude sort(), ale to stále neřeší, že nevím kam to dát, pořád mi to píše, že to očekává array.
|
||
Alphard Profil |
#13 · Zasláno: 22. 7. 2011, 20:52:49
Tak sort() řadí pole, ukázka použítí viz manuál. Vědět, kde ve scriptu máte vytvořené pole je snad základ, malá nápověda, count() zjišťuje počet prvků v tom samém poli.
|
||
Časová prodleva: 13 let
|
0