Autor | Zpráva | ||
---|---|---|---|
kikinet Profil |
#1 · Zasláno: 2. 9. 2012, 21:57:48
Zdravím,
mám formulář dejme tomu s 25ti poli, a chci vytvořit podmínku, která odešle jen vyplněná pole do "soubor.php". Všechno se odesílá a správně zapisuje do souboru, ale problém je ten, že se zapíší i pole, která nejsou vyplněná... Jediné co mě napadlo je dát každou položku zvlášť do podmínky, ale to se mi zdá zbytečně moc opisné... if ($pole1!="") { zapiš do "soubor.php"} elseif ($pole2!="") { zapiš do "soubor.php"} elseif.... Zatím to mám takhle (což nefunguje): if ($pole1!="" || $pole2!="" || $pole3!="" || ...) { zapiš do "soubor.php"} Dá se to udělat i jinak než, abych vytvářela pro každé pole podmínku? Díky |
||
panther Profil |
#2 · Zasláno: 2. 9. 2012, 21:59:57
kikinet:
pokud máš názvy pole1 - polex , myslím, že by bylo na místě použít skutečně pole, tedy pole[] . Při zpracování ho projdeš foreachem a jednoduchou podmínkou zjistíš, zda je položka prázdná či nikoliv.
Pokud se nejedná o související hodnoty (a tedy není vhodné použít pole), musíš mít vícero podmínek. |
||
Str4wberry Profil |
#3 · Zasláno: 2. 9. 2012, 22:06:12
Případně použít přímo pole
$_POST /$_GET .
Podmínka mi v tomto případě přijde možná zbytečná. Pokud je formulářové políčko prázdné, zapsání této prázdné hodnoty by nemělo ničemu vadit. :–) Jinak pozor na zápis dat od uživatele, zvláště do souboru, který lze spustit, může to představovat bezpečnostní risiko. |
||
kikinet Profil |
#4 · Zasláno: 2. 9. 2012, 22:17:31 · Upravil/a: kikinet
Str4wberry:
No jenže ono se to zapíše jako <div class="box"><div class="text">nějaká proměnná</div></div> Ty soubory mám zabezpečené :) panther: No některé spolu souvisí a některé ne :D Pročtu si ten odkaz |
||
Tori Profil |
#5 · Zasláno: 3. 9. 2012, 12:36:02
kikinet:
Koukněte na vlákno Součet počet položek v poli, ale jen ty, které mají hodnotu |
||
kikinet Profil |
#6 · Zasláno: 4. 9. 2012, 17:22:46
Tori:
Tak jsem to teda zkusila přepsat. Vypadá to takhle: $ostatni = array ('jedna', 'dva', 'tri ', 'ctyri', 'pet'); if (pokud se odešle formulář) { foreach ($pole as $hodnota){ if ($hodnota!=""){ $pocet++;} ;} echo $pocet ;} |
||
panther Profil |
#7 · Zasláno: 4. 9. 2012, 17:24:12
kikinet:
co je v promenne $pole ?
|
||
kikinet Profil |
#8 · Zasláno: 4. 9. 2012, 17:47:53
panther:
A pardon, moje chyba, zkopírovala jsem blbý řádek $pole = array ('udaj1', 'udaj2', 'udaj3', 'udaj4', 'udaj5'); |
||
panther Profil |
#9 · Zasláno: 4. 9. 2012, 18:23:31
kikinet:
nevím, co se ti nelíbí. Pokud procházíš foreachem pole $pole , které jsi teď poslala, tak to samozřejmě žádné prázdné položky nemá, to nevidíš? V proměnné $hodnota se bude postupně střídat udaj1 - udaj5 .
|
||
Keeehi Profil |
if ( !empty($_POST[$hodnota]) ) { |
||
kikinet Profil |
#11 · Zasláno: 4. 9. 2012, 21:45:21
panther:
No jo jenže já potřebuju, aby to spočítalo jen pole, která jsou vyplněná. Protože potřebuji odeslat jen pole ve kterých něco je. Ale ono to spočítá i ty, které jsou prázdné |
||
Keeehi Profil |
#12 · Zasláno: 4. 9. 2012, 21:50:34
kikinet:
Protože tam máš špatnou podmínku. Pokud posíláš formulář postem a inputy mají name udaj1, udaj2, ... tak si zaměň podmínku za tu mojí a bude to počítat správně. |
||
kikinet Profil |
#13 · Zasláno: 4. 9. 2012, 21:53:27 · Upravil/a: kikinet
Keeehi:
Děkuji, vyzkouším :) Keeehi: Tak teď to pro změnu počítá pokaždé 0: foreach ($pole as $hodnota){ if (!empty($_POST[$hodnota])){ $pocet++;}} echo $pocet;} |
||
panther Profil |
#14 · Zasláno: 4. 9. 2012, 22:36:37
kikinet:
„Pokud to mám teda zapsané dobře...?“ pravděpodobně, ne, když vychází vždy nula. Dáváš sem útržky kódu, lze jen hádat, proč vychází nula: nic neodesíláš metodou post. |
||
kikinet Profil |
#15 · Zasláno: 5. 9. 2012, 11:50:01
panther:
To není útržek kódu, je to celý kód. Zbytek mám zkomentovaný. $odeslat = $_POST['odeslat']; $pole = array ('udaj1', 'udaj2', 'udaj3', 'udaj4', 'udaj5'); if($odeslat == "Odeslat") { foreach ($pole as $hodnota){ if (!empty($_POST[$hodnota])){ $pocet++;}} echo $pocet;} Toto je celý nezkomentovaný kód |
||
panther Profil |
#16 · Zasláno: 5. 9. 2012, 12:01:54
kikinet:
a problem je kde? Existuji ve formulari pole name=udaj1 az name=udaj5 ?
Na zacatku bys mela promenno $pocet deklarovat, aby bylo k cemu pricitat, takze $pocet = 0 .
Jinak v tomto kousku kodu chyba neni, jestli to stale nepocita, bude jinde. „To není útržek kódu, je to celý kód“ je to cely PHP kod, bez dalsiho kontextu, ktery je v tomto pripade pravdepodobne chybny. |
||
Šéva Profil |
kikinet:
<form action="" method="post"> <input type="text" name="pole[0]"><br> <input type="text" name="pole[1]"><br> <input type="text" name="pole[2]"><br> <input type="text" name="pole[3]"><br> ... <input type="submit" name="odeslat" value="OK"> </form> <?php if(IsSet($_POST["odeslat"])) { $hodnoty=array(); $i=0; foreach($_POST["pole"] as $hodnoty) { if(!empty($hodnoty)) { echo "$hodnoty<br>"; $i++; } } echo $i; } ?> |
||
kikinet Profil |
#18 · Zasláno: 5. 9. 2012, 17:33:30
panther, Šéva:
Už to počítá, stačilo přidat pocet='0' . Jen nevím jak vypsat obsah pole co uživatel vyplní? echo "$hodnota"; vypíše názvy prvků pole.
|
||
panther Profil |
#19 · Zasláno: 5. 9. 2012, 18:58:51
|
||
kikinet Profil |
#20 · Zasláno: 5. 9. 2012, 19:32:19
panther:
Tak úplně nechápu co jste tím chtěl říct... echo $_POST['udaj1'] ani nic tomu podobného nefunguje. Ale nejspíš jste to myslel jinak
|
||
panther Profil |
#21 · Zasláno: 5. 9. 2012, 19:38:51
kikinet:
už několikrát jsem ti psal, že vaříme z vody. Jak vypadá HTML formulář, z kterého chodí data? „ani nic tomu podobného nefunguje.“ jaktože ne? Přesně to jsi nám kódem v [#15] řekla. Klíše v POST jsou totožné s jednotlivými hodnotami atributů name u formulářových polí. Máš-li tedy např. <input name="policko"> , jeho hodnota po odeslání bude dostupná skrze $_POST['policko'] .
|
||
kikinet Profil |
#22 · Zasláno: 5. 9. 2012, 21:25:36
panther:
Super už to jede. Promiň, učím se sama, takže mi to jde pomaleji. Díky za trpělivost. |
||
Časová prodleva: 12 let
|
0