Autor Zpráva
Ondrs
Profil
Pisu si navstevni knihu, ale mam jeden problem........nevim jak dostat data do databaze. Moje reseni nefunguje :(
Tady je kod..........pomuzete mi ?

mysql_connect($sql_host, $sql_username, $sql_passwd);
mysql_select_db($sql_dbname);
//------------------------------------------------------------------

?>

<table>
<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
<tr><td>Jméno </td><td><input type="text" value="<?php echo $_POST['jmeno']; ?>" size="20" /></td></tr>
<tr><td>Vzkaz </td><td><textarea rows="6" cols="30" name="vzkaz"><?php echo $_POST['vzkaz']; ?></textarea></td></tr>
<tr><td><input type="hidden" name="odeslano" value="true" /></td><td><input type="submit" name="odeslat" /></td></tr>
</form>
</table>

<?php
if($_POST['odeslano']) {
if (strlen($_POST['vzkaz'])==0 || strlen($_POST['vzkaz'])>255) {
echo "Délka vzkazu musí byt mezi 1-255 znaky.";
} else {
mysql_query('insert into kniha_hostu(cas, jmeno, vzkaz) values('.time().', '.$_POST['jmeno'].', '.$_POST['vzkaz'].')');
Header('Location: '.$_SERVER['PHP_SELF'].'');
echo "Váš vzkaz byl úspěšně odeslán.";
}
}


$vysledek=mysql_query('select cas, jmeno, vzkaz from kniha_hostu order by cas desc') or die(mysql_error());
while ($zaznam=mysql_fetch_array($vysledek)) {
echo "<p>".$zaznam['jmeno']." vložil ".date('j.n.Y', $zaznam['cas'])." následující vzkaz:<br />\n"
.strip_tags($zaznam['vzkaz'])."</p>\n"
."<hr />\n";
}
ronnie
Profil
Jasně, že nefunguje, totiž prvek input u jména nemá žádnou hodnotu name, oprav to tedy na Jméno <input type="text" value="<?php echo $_POST['jmeno']; ?>" name="jmeno" size="20" /></td> a bude to fungovat;)
Ondrs
Profil
Zapomel sem na to ;) Nicmene tohle neni fatalni chyba a i po jejim opraveni se data do MySQL neodeslou.....
Robotus
Profil *
zkus prepsat
mysql_query("insert into kniha...... values ('...',  '...', '...')");


btw
Poznámka: Pamatujte, že funkce header() musí být volána dříve než se odešle jakýkoliv normální výstup, ať už normálními HTML tagy, nebo z PHP.

;)
Ondrs
Profil
RobotusNefunguje.........dokonce fatalni chyba rekl bych ;)
Jakym jinym zpusobem nez pouzitim header() lze tedy docilit refreshe stranky po odeslani vzkazu ?
ronnie
Profil
Poradím ti něco, jak řeším podobné problémy.

Před header dej dvojté lomítko (//), čimž se nic odesílat nebude.

Místo
mysql_query('insert into kniha_hostu(cas, jmeno, vzkaz) values('.time().', '.$_POST['jmeno'].', '.$_POST['vzkaz'].')');

to přepiš na
$dotaz = "insert into kniha_hostu(cas, jmeno, vzkaz) values('.time().', '.$_POST['jmeno'].', '.$_POST['vzkaz'].')";

a přidej
echo $dotaz;

Pak zkus normálně formulář zprocovat, na stránce se ti zobrazí přesný formát dotazu, který nyní míří do databáze, tam už pravděpodobně objedvíš chybu, pokud se ti bude zdát vše v pořádku, otevři si phpMyAdmin, zkopiruj dotaz (exho $dotaz po odeslání) a phpmyAdmin ti už řekne, kde je chyba;)
ronnie
Profil
Chyba, $dotaz přepiš na


$jm = $_POST['jmeno'];
$vz = $_POST['vzkaz'];

$dotaz = "insert into kniha_hostu(cas, jmeno, vzkaz) values('time()', '$jm', '$vz')";

Předešlý příklad byl špatně.
Ondrs
Profil
Diky za rady
Nakonec byla chyva v syntaxi:

mysql_query('insert into kniha_hostu(cas, jmeno, vzkaz) values('.time().', '.$_POST['jmeno'].', '.$_POST['vzkaz'].')');
---------------------------
Spravne to ma byt takto:
mysql_query("insert into kniha_hostu(cas, jmeno, vzkaz) values('time()', '$_POST['jmeno']', '$_POST['vzkaz']')");
Robotus
Profil *
njn :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0