Autor | Zpráva | ||
---|---|---|---|
gully Profil |
#1 · Zasláno: 19. 6. 2011, 15:45:17
Zdravím a mám následující dotaz:
Narazil jsem na problém, kdy po odeslání a kontrole formuláře případně vracím tento formulář k opravě. Formulář zpětně naplňuji původními hodnotami pomocí parametrů v URL. Ovšem pokud řetězcová hodnota obsahuje mezeru, vrátí se jen první část po mezeru, zbytek ne. Chtěl bych se zeptat, jak se tento problém řeší? |
||
ShiraNai7 Profil |
#2 · Zasláno: 19. 6. 2011, 15:50:51
urlencode($retezec) |
||
gully Profil |
#3 · Zasláno: 19. 6. 2011, 16:59:58
Zřejmě na to jdu špatně (v php začínám), a tak bych chtěl ještě poprosit o radu, kde urlencode použít. Použil jsem ji ve formuláři, kde data kontroluji a vytvářím parametry takto:
$params = urlencode("?".$params); Když chci ale na tuto adresu přejít, tak to nefujguje (browser hlásí, že stránka neexistuje). |
||
ShiraNai7 Profil |
#4 · Zasláno: 19. 6. 2011, 21:31:52
Tuhle funkci máš použít na hodnoty jednotlivých argumentů, nikoliv na všechny najednou.
|
||
gully Profil |
#5 · Zasláno: 20. 6. 2011, 00:59:23
Použil jsem funkci na jednotlivé parametry argumentů. Sice se už nezobrazuje že stránka neexistuje, ale problém zůstává stejný.
|
||
Tori Profil |
#6 · Zasláno: 20. 6. 2011, 01:51:53
gully:
Ten otazník nemá být zakódovaný. |
||
MaxDJs Profil * |
#7 · Zasláno: 20. 6. 2011, 09:59:21
gully:
Zkus nahradit mezeru ASCII znakem Mělo by to fungovat |
||
Alphard Profil |
#8 · Zasláno: 20. 6. 2011, 10:19:11
|
||
gully Profil |
#9 · Zasláno: 20. 6. 2011, 20:43:25 · Upravil/a: gully
Já nevím, ale funkci urlencode postupně používám pro jednotlivý parametry:
$params = ""; $T2 = urlencode($T2); $params = $params."&T2=".$T2; $T1 = urlencode($T1); $params = $params."&T1=".$T1; ... $params = "?".$params; |
||
Majkl578 Profil |
#10 · Zasláno: 20. 6. 2011, 20:56:25 · Upravil/a: Majkl578
gully:
„funkci urlencode postupně používám pro jednotlivý parametry“ V tom případě se ti nejspíš bude víc hodit funkce http_build_query. |
||
Ben Profil * |
#11 · Zasláno: 20. 6. 2011, 23:22:43
gully:
„kdy po odeslání a kontrole formuláře případně vracím tento formulář k opravě. Formulář zpětně naplňuji původními hodnotami pomocí parametrů v URL“ a není lepší místo metody GET používat metodu POST? |
||
gully Profil |
#12 · Zasláno: 20. 6. 2011, 23:52:41 · Upravil/a: gully
asi ano. jak už jsem psal, v php začínám, takže jsem zvolil zřejmě ne zrovna optimální variantu. zkusím nejprve http_build_query, jak mi radí Majkl578 (mimochodem děkuju) a pokud to nepujde, pokusím se to přepsat na POST.
//edit// takže ani http_build_query nefunguje a problém přetrvává: ... $aparams = array('&T2'=>$T2); $errlink = "Nejsou vyplněny následující hodnoty: <b>".$err."</b>.<br><br><a href='novy.php?".http_build_query($aparams)."'><img src='../../all/pictures/button_opravit.jpg' border='0'></a><br>"; |
||
Ben Profil * |
#13 · Zasláno: 21. 6. 2011, 01:40:28
ono totiž na předávání hodnot z formulářů, se metoda GET nepoužívá
|
||
gully Profil |
#14 · Zasláno: 21. 6. 2011, 10:58:23 · Upravil/a: gully
Překopal jsem skript na POST, ale výsledek zůstal stejný, takže jsem udělal (testovací skript):
test.php: <?php $T2 = $_POST['T2']; $T3 = $_POST['T3']; $D1 = $_POST['D1']; $S1 = $_POST['S1']; $FT = $_POST['FT']; $CL = $_POST['CL']; if (!isset($T2)) $T2 = "Nějaký uživatelský vstup"; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>TEST</title> <?php echo $T2; ?> <form method="POST" action="test.php"> <input type="text" name="T2" value=<?php echo $T2 ?>> <input type="text" name="T3" value=<?php echo $T3 ?>> <input type="text" name="D1" value=<?php echo $D1 ?>> <input type="text" name="S1" value=<?php echo $S1 ?>> <input type="text" name="FT" value=<?php echo $FT ?>> <input type="text" name="CL" value=<?php echo $CL ?>> <input type="submit" name="Odeslat" value="Odeslat"> </form> </body> </html> Můj problém je asi v tom, že neumím přiřadit hodnotu do input. |
||
gully Profil |
#15 · Zasláno: 21. 6. 2011, 11:03:17 · Upravil/a: gully
Jen jsem to odeslal, našel jsem odpověď:
<input type="text" name="T2" value=<?php echo "'".$T2."'" ?>> Díky všem za vaši pomoc, a omlouvám se za mistifikaci :( |
||
Medvídek Profil |
#16 · Zasláno: 21. 6. 2011, 11:05:40 · Upravil/a: Medvídek
gully:
Zkus radši takhle: <input type="text" name="T2" value="<?php echo $T2; ?>"> |
||
gully Profil |
#17 · Zasláno: 21. 6. 2011, 11:12:53 · Upravil/a: gully
Ano, toto funguje take a je to lepsi zapis, diky. Jen mi vrta hlavou, proc to takto funguje, ze bez stredniku to nevyhodi chybu a zapise jen prvni cast retezce.
|
||
Tori Profil |
#18 · Zasláno: 21. 6. 2011, 14:55:25
gully:
„bez stredniku to nevyhodi chybu“ Pokud následuje značka ?>, poslední příkaz se ukončí tak či tak (ale je lepší si zvyknout psát středník vždy). „zapise jen prvni cast retezce.“ Pokud řetězec obsahoval mezery a nedal jste hodnotu value do uvozovek, tak se zobrazí jen část po první mezeru (koukněte se do HTML zdroje). [#16] je nejpřehlednější zápis. |
||
Časová prodleva: 13 let
|
0