Autor Zpráva
lokutus7323
Profil *
Ahoj,
v PC jsem si nainstaloval EasiPHP 1.7 a začal jsem si dělat první php scripty s využitím MySQL.

A toto jsem vykutil:

<html>

<form>
<input name='jmeno' type='text' value='neco'>
<input name='mail' type='text' value='nic'>
<input type='submit' name='ok' value='Přidat'>
</form>
</html>
<?
require_once "pripoj.php";
mysql_select_db($db, $spojeni);
mysql_query("INSERT INTO adresar values ('$jmeno', '$mail')");
?>


Udělal jsem si něco jako adresář, kam se ukládá do MySQL jméno a mail nějakého člověka. Již mám bezproblému fungující skript,který z MySQL vytáhne a vypíše data. Jenomže už od rána se dělám s tímto scriptem. Tento script má přidávat do MySQL jména a maily. Problém však je, že řetězec "mysql_query("INSERT INTO adresar values ('$jmeno', '$mail')");" si netahá proměné a i b. Když ovšem místo těchto proměných napíšu např: Michal, neco@centrum.cz, bez problému se vše provede. Chybu tedy jistě nemám v připojení databáze.
Chci vás požádat, jestli bystem i neřekli, proč si to z inputů netahá "value"...



Děkuji
Měsíček
Profil
submit neví co má odesílat = nějákou akci, dále dělej globální proměnné = $jmeno = $_POST["jmeno"];
Měsíček
Profil
<html>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<input name='jmeno' type='text' value='neco'>
<input name='mail' type='text' value='nic'>
<input type='submit' name='ok' value='Přidat'>
</form>
</html>


<?php
if(isset($_POST["ok"])){
$jmeno = $_POST["jmeno"];
$mail = $_POST["mail"];
require_once "pripoj.php";
mysql_select_db($db, $spojeni);
mysql_query("INSERT INTO adresar values ('$jmeno', '$mail')");
}
?>
wnc
Profil
Ahoj.

Pravděpodobně nemáš v PHP zaplou možnost register globals. To vpraxi znamená, že nemůžeš automaticky používat $jmeno, $mail. K těmto hodnotám se dostaneš skrz asociované pole $_GET resp. $_POST v závislosti na použité metodě.

V praxi:
mysql_query("INSERT INTO adresar values ('".$_GET["jmeno"]."', '".$_GET["mail"]."')");


Pro jistotu si ještě upřesni metodu:



<form method="get">
<input name='jmeno' type='text' value='neco'>

<input name='mail' type='text' value='nic'>

<input type='submit' name='ok' value='Přidat'>

</form>
Měsíček
Profil
wnc : tady se člověk snaží o opak :-)))
wnc
Profil
Měsíček:
sorry, byl jsi rychlejší :-)
Měsíček
Profil
to nic máš to taky dobře až na tohle : ".$_GET["mail"]."' by mělo být ".$_GET['mail']."
lokutus7323
Profil *
Děkuji za odpovědi.

To Měsíček: Mohl bys mi prosim ještě popsat co jsou to ty globální proměnné. Myslím, že člověk, který ví o čem mluví to popíše líp, než nějakej rádoby pisílek na internetu co zná ctrl + c.

To WNC: Ano, register_globals mám vyplé. Na internetu jsem četl, jak to změnit na "on". Postupoval jsem vždy podle návodu, ale vedlo to k tomu, že jsem musel přeistalovat PHPEasy a stejně se nic nezměnilo...
Všude popisijí, že se musí změnit soubor php.ini, tam jsem to přepsal na on, znovu spustil aplikaci, ael nic se nezměnilo.
Měsíček
Profil
lokutus7323 : Globální proměnné : http://php.interval.cz/clanky/metody-post-a-get/ lépe bych to popsat neuměl :-)) jinak jestli to máš na lokále tak ti doporučuji si nainstalovat WAMP (jsou tam všechny verze nejnovější a velmi jednoduše se instaluje) nezkolabuje hned jak EasyPHP když se něco změní ...
nightfish
Profil
Měsíček
to nic máš to taky dobře až na tohle : ".$_GET["mail"]."' by mělo být ".$_GET['mail']."
nějak nevidím rozdíl... a to, jestli uzavřeš řetězcový index asociativního pole do apostrofů nebo uvozovek je v tomto případě šumák

Mohl bys mi prosim ještě popsat co jsou to ty globální proměnné.
globální proměnné jsou proměnné s platností v celém skriptu (opak lokálních proměnných ve funkcích, kdy proměnná definovaná v rámci funkce neovlivňuje stejně pojmenovanou proměnnou definovanou mimo funkci)
na to, aby se nějaká proměnná chovala ve funkci jako globální je potřeba tuto "zglobálnit" pomocí zápisu global $jmenoprommene; v těle funkce (další možností je použití $GLOBALS['jmenopromenne'], kde použití "global" odpadá)

a superglobální proměnné jsem v PHP takové, že jejich obsah je automaticky dostupný ve kterékoliv části skriptu (sem patří již zmíněná pole $_GET a $_POST)

jinak http://www.linuxsoft.cz/php
tam je tato věc taktéž popsána
Měsíček
Profil
nightfish :

"to nic máš to taky dobře až na tohle : ".$_GET["mail"]."' by mělo být ".$_GET['mail']." "

máš pravdu omlouvám se jak wnc tak i tobě .. myslel jsem, že jsou dable """" .., ale je to řetězec omlouvám se ...
wnc
Profil
ono holt " není ''

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