Autor | Zpráva | ||
---|---|---|---|
Axamith Profil |
#1 · Zasláno: 26. 5. 2010, 13:25:31
Formulář v 1.php
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> </head> <body> <form action="2.php" method="POST"> <input type="submit" name="T"value="T3"></form> </body> </html> spustí 2.php <?php if (isset($_POST["form1"])) { $dis1 = " disabled"; $dis2 = ""; } else { $dis2 = " disabled"; $dis1 = "";} ?> <?php $T = $_POST['T']; echo $T; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> </head> <body> <form class="popisy" action=" " method="POST"> <input type="text" accesskey="j" size="50" name="T3" value="<?php echo $T;?>" disabled></form> <form action=" " method="POST"> <input type="submit" name="form1" value="Vložit"<?php echo $dis1; ?></form> <form action=" " method="POST"> <input type="submit" value="Storno"<?php echo $dis2; ?></form> </body> </html> Do vstupního pole se zapíše proměnná $T odeslaná z formuláře 1.php Tlačítko "vložit" aktivuje tlačítko "storno" a zároveň deaktivuje tlačítko "vložit". Potud v pořádku, ale při tomto procesu se smaže proměnná $T a vyskočí chybová hláška. Co způsobí odstranění proměnné? |
||
fuckin Profil |
#2 · Zasláno: 26. 5. 2010, 13:32:28
Tak pochopitelně že se smaže. Při refreshi ti minulý POST zmizí. Pak je dostupná v $_POST['T3']
|
||
Axamith Profil |
#3 · Zasláno: 26. 5. 2010, 13:38:14
Aha, takže proměnná má jepičí život, je uchovaná pouze po dobu běhu scriptu, který ji zapíše do
value="<?php echo $T;?>" |
||
Axamith Profil |
#4 · Zasláno: 27. 5. 2010, 11:50:09
Nějak se mi nedaří poprat se s výše uvedeným problémem. Ještě jsem poupravil scripty :
1.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> </head> <body> <form action="2.php" method="POST"> <input class="submit" type="submit" name="T3" value="Výdej T3"> <input class="submit" type="submit" name="T3" value="Výdej T4"></form> </body> </html> 2.php <?php // Off/On "Vložit"-"Storno"-"Další" if (isset($_POST["form1"])) { $dis1 = " disabled"; $dis2 = ""; } else { $dis2 = " disabled"; $dis1 = "";} // načtení z 1.php $T3 = $_POST['T3']; //přiřazení Tx if ($T3 == "Výdej T3") $Tx = "T3"; else $Tx = "T4"; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> </head> <body> <form action=" " method="POST"> <input type="text" accesskey="j" size="50" name="T3" value="<?php echo $Tx;?>" disabled></form> <form action=" " method="POST"> <input type="submit" name="form1" value="Vložit"<?php echo $dis1; ?></form> <form action=" " method="POST"> <input type="submit" value="Storno"<?php echo $dis2; ?></form> </body> </html> Měl jsem za to, že formulář odesílá parametr "name", ale můj formulář 1.php odešle do $_POST['T'] hodnotu "value". Toto jsem odfiltroval podmínkou, ale pořád se mi nedaří tuto hodnotu udržet ve vstupním poli po odeslání "vložit". |
||
nightfish Profil |
#5 · Zasláno: 27. 5. 2010, 13:07:20
Axamith:
pravděpodobně bude stačit smazat </form> na řádcích 21 a 23, a <form action=" " method="POST"> na řádcích 22 a 24 |
||
Axamith Profil |
#6 · Zasláno: 27. 5. 2010, 13:18:35
Tak to nebude ono. Formuláře za sebou mají opodstatnění. Ale i tak neustále hlásí nedefinovanou proměnnou.
|
||
nightfish Profil |
#7 · Zasláno: 27. 5. 2010, 13:33:37
Axamith:
„Tak to nebude ono. Formuláře za sebou mají opodstatnění.“ Bereš v úvahu fakt, že se ti odešlou jenom ta pole formuláře, která jsou obsažena ve formuláři, v němž jsi stiskl odesílací tlačítko? |
||
Axamith Profil |
#8 · Zasláno: 27. 5. 2010, 13:51:09
V PHP jsem začátečník, tak trochu zrekapituluji funkci.
1.php odešle hodnotu $_POST['Výdej T3'] $_POST['Výdej T3'] Spustí se mi 2.php Následující kód $T3 = $_POST['T3']; //přiřazení Tx if ($T3 == "Výdej T3") $Tx = "T3"; else $Tx = "T4"; vyhodnotí podmínku a přiřadí parametru Tx hodnotu T3 nebo T4 ( podle odeslání z 1.php ) a zapíše do vstupního pole. Potud v pořádku. Měl jsem za to, že proměnná Tx je aktivní, dokud ji nesmažu nebo nepřepíšu jinou hodnotou. Při odeslání "Vložit" se odešle hodnota $_POST['Form1'] |
||
nightfish Profil |
#9 · Zasláno: 27. 5. 2010, 13:55:05
Axamith:
„ěl jsem za to, že proměnná Tx je aktivní, dokud ji nesmažu nebo nepřepíšu jinou hodnotou.“ V rámci jednoho provedení skriptu. Když odešleš další formulář, spustí se skript znovu - a nepamatuje si (obvykle) žádnou historii proměnných. |
||
Časová prodleva: 14 let
|
0