Autor | Zpráva | ||
---|---|---|---|
David1256 Profil |
#1 · Zasláno: 30. 11. 2010, 19:51:27 · Upravil/a: David1256
Mám tento kód
<form method="post"> <select name="Bazar1"> <option>Felicie</option> <option value="S120">Škoda 120</option> <option value="Renault">Renault 19</option> </select> <select name="Bazar2"> <optgroup label="Domácí"> <option value="Felicie">Felicie</option> <option value="S120">Škoda 120</option> </optgroup> <optgroup label="Zahraniční"> <option value="Renault" selected>Renault 19</option> </optgroup> </select> <br><br> <input type=submit value="Zobrazit aktuální výběr"> <input type=hidden name="Skryto" value=<?php if (isset($_POST["Bazar1"])) echo $Bazar1?>> </form> <?php if (isset($_POST["Bazar1"]) and isset($_POST["Bazar2"])) { echo "Z 1. hierarchického seznamu jsi vybral " .$Bazar1. "<br>"; echo "Z 2. hierarchického seznamu jsi vybral " .$Bazar2. "<br>"; } if (isset($_POST["Skryto"])) { echo $Skryto; } ?> Chci, aby se mi $Skryto vypsala hned, ale ona se vypíše až poté, co kliknu na potvrzovací button podruhé. Jenže když na něj kliknu podruhé už se mi do $Bazar1 a $Bazar2 hází hodnoty z formuláře, které jsou jiné než původně zadané. Což je docela problém. Viz.Zde:Poslední příklad |
||
SwimX Profil |
#2 · Zasláno: 30. 11. 2010, 21:18:09
Vždyť když poprvé přijdeš na stránku tak není splněná podmínka: if (isset($_POST["Bazar1"])) takže se jako hodnota inputu skryto nastaví na ""
až při odeslání se skryto nastaví na hodnotu, kterou jsi minule odeslal.. Dělá to přesně to, co je napsáno. A nepoužívej raději $Bazar1 v domění, že tam bude $_POST['Bazar1'] ne na všech serverech jsou zaplé register globals. |
||
David1256 Profil |
#3 · Zasláno: 1. 12. 2010, 17:22:42 · Upravil/a: David1256
Ale i když tam ta podmínka nebude tak si to do tý proměnný $Bazar1 uloží "", protože v tu dobu při načtení stránky není proveden výběr z těch seznamů, tim nic nevyřeším. Ale prostě až se stiskne tlačítko pto odeslání formuláře musí se ty hodnoty uložit do tý proměnný $Skryto a poté se vypíše i obsah proměnné skryto. Tak, jak byste to teda řešily?
|
||
blaaablaaa Profil |
#4 · Zasláno: 2. 12. 2010, 10:09:28
if (isset($_POST["Skryto"]) && !empty($_POST["Skryto"]) ) { echo $_POST["Skryto"]; } |
||
David1256 Profil |
#5 · Zasláno: 2. 12. 2010, 18:39:28
blaaablaaa:
Tak to asi taky moc nebude fungovat viz zde Současný script: <form method="post"> <select name="Bazar1"> <option>Felicie</option> <option value="S120">Škoda 120</option> <option value="Renault">Renault 19</option> </select> <select name="Bazar2"> <optgroup label="Domácí"> <option value="Felicie">Felicie</option> <option value="S120">Škoda 120</option> </optgroup> <optgroup label="Zahraniční"> <option value="Renault" selected>Renault 19</option> </optgroup> </select> <br><br> <input type=submit value="Zobrazit aktuální výběr"> <input type=hidden name="Skryto" value=<?php if (isset($_POST["Bazar1"])) echo $Bazar1?>> </form> <?php if (isset($_POST["Bazar1"]) and isset($_POST["Bazar2"])) { echo "Z 1. hierarchického seznamu jsi vybral " .$Bazar1. "<br>"; echo "Z 2. hierarchického seznamu jsi vybral " .$Bazar2. "<br>"; } if (isset($_POST["Skryto"]) && !empty($_POST["Skryto"]) ) { echo $_POST["Skryto"]; } ?> |
||
SwimX Profil |
#6 · Zasláno: 2. 12. 2010, 19:11:29
David1256:
a proč cpeš do hiddenu hodnotu z Bazar1? bude stejná jako Bazar1 tak s ní rovnou pracuj.. jediný rozumný důvod to má, pokud chceš uchovávat historii (jednu položku dozadu) Bazar1. Pak to ale funguje dobře po prvním odeslání je proměnná skryto prázdná -> protože před prvním odesláním v proměnné Bazar1 nic nebylo. Když to odešleš po druhé -> Bazar1 bude něco, a ve skryto bude to, co bylo před tím Bazar1. Co vubec chceš udělat? |
||
David1256 Profil |
#7 · Zasláno: 2. 12. 2010, 20:43:53
SwimX:
Tu historii, ale to jsem netušil, že to je i z původního řešení myšleno tak, že se to teda zobrazuje až poté co se přepíše původní hodnota $Bazar1 $Bazar2, čili po druhém kliknutí. |
||
SwimX Profil |
#8 · Zasláno: 3. 12. 2010, 09:28:55
David1256:
přijdeš na stránku a Bazar1 i 2 je prázdný tudíž <input type=hidden name="Skryto" value=<?php if (isset($_POST["Bazar1"])) echo $Bazar1?>> Bazary vybereš, odešleš a teprve teď se nastaví skryto... Ale je to v pořádku, pokud chceš historii vypisovat, tak to takle nechej pouze do výpisu dej tu podmínku isset Skryto -> echo Skryto Snad to pomohlo :-) |
||
David1256 Profil |
#9 · Zasláno: 4. 12. 2010, 11:46:52
Ok díky, tady byl problém zkrátka v tom, že jsem si myslel, že to má fungovat jinak, což nebyla pravda, takže teď když vím, že to funguje, jak má, jsem rád.
|
||
Časová prodleva: 13 let
|
0