Autor Zpráva
gully
Profil
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
urlencode($retezec)
gully
Profil
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
Tuhle funkci máš použít na hodnoty jednotlivých argumentů, nikoliv na všechny najednou.
gully
Profil
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
gully:
Ten otazník nemá být zakódovaný.
MaxDJs
Profil *
gully:
Zkus nahradit mezeru ASCII znakem

Mělo by to fungovat
Alphard
Profil
[#7] MaxDJs
Řešení poskytuje první odpověď[#2], kdyby se někdo obtěžoval podívat na ukázkové příklady v manuálu, není třeba nic víc řešit.
gully
Profil
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
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 *
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
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 *
ono totiž na předávání hodnot z formulářů, se metoda GET nepoužívá
gully
Profil
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
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
gully:
Zkus radši takhle:

<input type="text" name="T2" value="<?php echo $T2; ?>">
gully
Profil
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0