Autor | Zpráva | ||
---|---|---|---|
soucekgns Profil |
#1 · Zasláno: 27. 4. 2011, 22:49:49
Tímto scriptem se vypíší všechny soubory ve složce xml a následně zapíší do selectu...
Ty soubory se jmenují 201104.xml a 201105.xml -> v selectu 2011 a 2011 Potřeboval bych, aby se do selectu zapsala každá hodnota jen jednou a to i v případě (201104.xml a 201105.xml a 201204.xml a 201205.xml). Díky za rady $slozka = opendir("xml/"); while ($soubor = readdir($slozka)) { if ($soubor != "." && $soubor != "..") { list($nazev_souboru, $pripona) = explode('.', $soubor); $rok_souboru = substr($nazev_souboru, 0, -2); if (date("Y") == $rok_souboru) { echo '<option value="'.$rok_souboru.'" selected>'.$rok_souboru.'</option>'; } if (date("Y") < $rok_souboru) { echo '<option value="'.$rok_souboru.'">'.$rok_souboru.'</option>'; } } } |
||
Taps Profil |
#2 · Zasláno: 28. 4. 2011, 07:20:11 · Upravil/a: Taps
soucekgns:
co takto <?php $oznaceni[date("Y")]='selected'; $slozka = opendir("xml/"); while ($soubor = readdir($slozka)) { if ($soubor != "." && $soubor != "..") { list($nazev_souboru, $pripona) = explode('.', $soubor); $rok_souboru = substr($nazev_souboru, 0, -2); $directory[]=$rok_souboru; } } $unique=array_unique($directory); //vybere jen unikátní názvy ?> <form> <select name="vyber"> <? foreach($unique as $d){ echo'<option value="'.$d.'" '.$oznaceni[$d].'>'.$d.'</option>'; } ?> </select> </form> |
||
soucekgns Profil |
#3 · Zasláno: 28. 4. 2011, 15:05:16
Díky moc, a nešlo by ten výpis ještě seřadit od nejmenšího k největšímu?
Díval jsem se na usort, ale nevím si s tím rady... |
||
Alphard Profil |
#4 · Zasláno: 28. 4. 2011, 16:13:49
|
||
Taps Profil |
#5 · Zasláno: 28. 4. 2011, 17:00:25
Alphard:
„K tomu nápadu $oznaceni[$d] mám teda velké výhrady.“ poděl se o své myšlenky |
||
Alphard Profil |
#6 · Zasláno: 28. 4. 2011, 17:17:19
[#5] Taps
Nerad bych se zase dostal do debaty, jestli notice prostě skrývat, nebo je nevytvářet. Já se snažím o ten druhý styl a kód <form> <select name="vyber"> <br /> <b>Notice</b>: Undefined offset: 2000 in <b>C:\web\www\neco\select_01.php</b> on line <b>10</b><br /> <option value="2000" >2000</option><br /> ... <b>Notice</b>: Undefined offset: 2009 in <b>C:\web\www\neco\select_01.php</b> on line <b>10</b><br /> <option value="2009" >2009</option><br /> <b>Notice</b>: Undefined offset: 2010 in <b>C:\web\www\neco\select_01.php</b> on line <b>10</b><br /> <option value="2010" >2010</option> <option value="2011" selected>2011</option><br /> <b>Notice</b>: Undefined offset: 2012 in <b>C:\web\www\neco\select_01.php</b> on line <b>10</b><br /> <option value="2012" >2012</option><br /> <b>Notice</b>: Undefined offset: 2013 in <b>C:\web\www\neco\select_01.php</b> on line <b>10</b><br /> <option value="2013" >2013</option><br /> <b>Notice</b>: Undefined offset: 2014 in <b>C:\web\www\neco\select_01.php</b> on line <b>10</b><br /> <option value="2014" >2014</option><br /> </form> |
||
Taps Profil |
#7 · Zasláno: 28. 4. 2011, 18:14:10
Alphard:
OK |
||
soucekgns Profil |
#8 · Zasláno: 28. 4. 2011, 20:48:26
Nejsem tak dobrý jako vy:-), takže nechápu, jak to mám zapsat když nemám dané ty roky napevno a k tomu mám foreach tj mi to hodnoty hází jednotlivě...
To je jediné, co jsem pochopil: $array = array("2010", "2011", "2012", "2013"); natsort($array); foreach ($array as $key => $no) { echo "[" . $key . "] = " . $no . "\n"; } |
||
Alphard Profil |
#9 · Zasláno: 28. 4. 2011, 22:13:51
To vám chybí? Téměř celý kód máte do Tapse, stačí seřadit to pole. Aspoň tak jsem to pochopil.
|
||
soucekgns Profil |
#10 · Zasláno: 28. 4. 2011, 22:27:57
No potřebuji seřadit toto a nějak jsem to nepochopil:
foreach($unique as $d){ echo'<option value="'.$d.'" '.$oznaceni[$d].'>'.$d.'</option>'; } |
||
Tori Profil |
#11 · Zasláno: 28. 4. 2011, 23:10:56
soucekgns:
Postup vypadá asi takhle: // projdi adresář, z názvů souborů .xml vytáhni rok a ulož // z uložených roků vyhoď duplicity //--- až potud to máte v [#1] a [#2] // seřaď roky vzestupně -> tady použijete fci sort() nebo natsort(), úplně stejně jako v [#8] // projdi uložené roky, z každého udělej volbu do selectu a předvyber aktuální rok Druhá varianta (která nebude házet chyby Notice) je ta, že si prostě současný rok uložíte jako číslo do proměnné a v tom foreach ji budete porovnávat s aktuální položkou pole. |
||
Taps Profil |
#12 · Zasláno: 29. 4. 2011, 07:14:14
soucekgns:
stačí za řádek $unique=array_unique($directory); doplnit natsort($unique); |
||
Časová prodleva: 13 let
|
0