Autor Zpráva
PHP_koule
Profil *
Ahoj, chtěl bych se zeptat, jestli jde z hodnoty $_GET['hodnota'] převzít znaménko + a vypsat ho. Zkoušel jsem různé funkce, ale vkládá se mi %20. Moc dík
Alphard
Profil
Jak to zkoušíte? Když se generuje url, musí se proměnné escapovat. Pak je můžete bez problému načíst.
PHP_koule
Profil *
Zkouším toto: rawurldecode


Už to je, jen se mi tam do databáze ukládá mezera před řetězcem
Alphard
Profil
Jaká mezera? To jste dodal tolik informací, že je každému na první pohled jasné, jak to vyřešit :-)
PHP_koule
Profil *
Alphard:
Jaká mezera? To jste dodal tolik informací, že je každému na první pohled jasné, jak to vyřešit :-)
Chyba byla u mě, měl jsem ve value mezeru, hned za rovnítkem.

Mám ještě jeden problém: htmlspecialchars a trim nestačí. Umím uložit do pole v databázi 1+1 a načíst ho do url, ale když to url odešlu, tak se mi potom nenačte ve value v políčku 1+1, ale 1 1. Plus zase zmizí. Jsem už zoufalý, děsně trpím.
Tori
Profil
PHP_koule:
Umím uložit do pole v databázi 1+1 a načíst ho do url
Před použitím jako URL je potřeba řetězec/data enkódovat pomocí rawurlencode (pro samostatnou hodnotu jednoho parametru) nebo http_build_query (pro asoc. pole). Pak se vám při načtení z $_GET nebude nezakódované plusko převádět na mezeru. Bez zakódování by se totiž nedalo odlišit "+", které znamená mezeru (viz urlencode), od "+", které má zůstat pluskem.
PHP_koule
Profil *
Zkoušel jsem to. Jenže jakmile naču z databáze do odkazu 1+1 a odešlu, tak se mi už podruhé neuloží správně.

<form method="get" action="apl.php?kpriklad=1+1">
...
Alphard
Profil
[#7] PHP_koule
Protože to děláte blbě, ignorujete vše, co bylo již zmíněno. Správně má být například

echo "<form method=\"get\" action=\"apl.php?kpriklad=".urlencode("1+1")."\">";
PHP_koule
Profil *
Alphard:
echo "<form method=\"get\" action=\"apl.php?kpriklad=".urlencode("1+1")."\">";
Pak se mi do políčka načte daná hodnota správně, ale při updatu se změní na 1%25B1.
Tori
Profil
PHP_koule:
vkládá se mi %20
při updatu se změní na 1%25B1
Jakým způsobem ta data z GET čtete? Kde se to změní - někde v DB, kam tu hodnotu ukládáte, anebo v adresním řádku? Sorry, že se ptám na takové triviálnosti, ale nenapadá mě, za jakých okolností by se mohla se příkazem echo $_GET['kpriklad']; mohla zobrazit nedekódovaná hodnota.

edit: Vypadá to, že se vám ta hodnota asi zakódovává dvakrát. To by mohlo vysvětlovat, proč se mezera převede správně na %20, pak se zakóduje podruhé na %2520, a při přečtení hodnoty z $_GET je tam opět %20 místo mezery.
urlencode("1+1") -> "1%2B1"
urlencode("1%2B1") -> "1%252B1"
iceover
Profil *
Nevím, co má script dělat, ale odhaduji, že má provádět početní úkony, podle toho, jaké hodnoty se předají z GET. Nebylo by jednodušší každou hodnotu posílat zvlášť?

<?php

$pocetniOperace = $_GET['operace']; 
$x = $_GET['x'];
$y = $_GET['y'];

$x = (int) $x; 
$y = (int) $y;  

if($x AND $y AND $pocetniOperace){

if($pocetniOperace == 'scitani')
$vysledek = $x + $y;

if($pocetniOperace == 'odcitani')
$vysledek = $x - $y;

if($pocetniOperace == 'nasobeni')
$vysledek = $x * $y;

if($pocetniOperace == 'deleni')
$vysledek = $x / $y;

}

echo "vysledek je: $vysledek";


?>
PHP_koule
Profil *
iceover:
To jsem chtěl vymyslet, ale nejde to, pokud chceš uložit celý příklad do databáze.

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