Autor Zpráva
Ford
Profil *
Zde je kód, který jsem splácal za pomoci různé literatury a tutoriálů, bohužel nevkládá data do MySQL:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>submit.php</title>

<?php
define("server","localhost");
define("user","root");
define("pass","*****");
define("db","test");
?>

</head>

<body>

<form action="<? php echo $_SERVER['php_self'];?> method='post'">
<table>
<tr><td><b>Name:</b>
<td><input type="text" name="name" maxlenght=20 size=20>

<tr><td><b>Comment:</b>
<td><textarea type="text" name="comment" maxlenght=500 cols=40 rows=5 wrap="hard"></textarea>

<tr><td>
<td><input type="submit" name="submit" value="Send!">
</table>
</form>

<?php

if (isset($_POST['submit']))
{
$connect = mysql_connect(server,user,pass)or die("Error 1.");
$select_db = mysql_select_db(db,$connect)or die("Error 2.");
$nick = $_POST['nick'];
$comment = $_POST['comment'];
$query = "INSERT INTO book SET nick='$nick',comment='$comment')";
$result = mysql_query($query);

if ($result) echo "Success!";
else echo "Error 3.";
mysql_close();
}
?>

</body>

</html>


Podotýkám že po zmáčknutí submit se neděje vůbec nic, ani žádná chybová hláška.
souki
Profil
nahrad
<form action="<? php echo $_SERVER['php_self'];?> method='post'">
za
<form action="<? php echo $_SERVER['php_self'];?>" method='post'>
Ford
Profil *
Nahrazeno, ale do databáze se stále nic neukládá.
djlj
Profil
Ford
Píšeš, že s to dělal podle tutoriálů.

Pokud někde byl takovýto kód: $query = "INSERT INTO book SET nick='$nick',comment='$comment')";, tak na tu stránku už raději nechoď. Koukni se na správnou syntaxi INSERTu v manuálu nebo na mm.gene.cz.
Ford
Profil *
Takže jsem to změnil na:

$query = "INSERT INTO book VALUES ('$nick','$comment')";


(Ten SET je použitý v "Velké knize PHP5 a MySQL")

Do databáze se stále nic neukládá. Může mi někdo alespoň potvrdit že má ten kód smysl a že to není od základů úplná pitomost?
djlj
Profil
Za $result = mysql_query($query); napiš echo mysql_error();.
A je ta tabulka v databázi opravdu jen o těch dvou sloupcích?
Ford
Profil *
Tabulka vypadá takto:


Ani s tím mysql_error() to nehlásí žádnou chybu.
Ford
Profil *
V zájmu přehlednosti posílám nový kód:



<body>

<form action="<? php echo $_SERVER['php_self'];?>" method='post'>
<table>
<tr><td><b>Name:</b>
<td><input type="text" name="nick" maxlenght=20 size=20>

<tr><td><b>Comment:</b>
<td><textarea type="text" name="comment" maxlenght=500 cols=40 rows=5 wrap="hard"></textarea>

<tr><td>
<td><input type="submit" name="submit" value="Send!">
</table>
</form>

<?php

if (isset($_POST['submit']))
{
$connect = mysql_connect(server,user,pass)or die("Error 1.");
$select_db = mysql_select_db(db,$connect)or die("Error 2.");
$nick = $_POST['nick'];
$comment = $_POST['comment'];
$query = "INSERT INTO book VALUES ('$nick','$comment')" or die("Error 3.");
$result = mysql_query($query);
echo mysql_error();
if ($result) echo "Success!";
else echo "Error 4.";
mysql_close();
}
?>

</body>
DJ Miky
Profil
Zkus
<form action="<? php echo $_SERVER['php_self'];?>" method='post'>
nahradit za
<form action="<?php echo $_SERVER['php_self'];?>" method='post'>
djlj
Profil
A ještě bych nahradil PHP_SELF za php_self. Řekl bych, že pole php_self neexistuje.
Ford
Profil *
"<? php..." => "<?php..." taky nepomáhá.
nightfish
Profil
<body>

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method='post'>
<table>
<tr><td><b>Name:</b>
<td><input type="text" name="nick" maxlenght=20 size=20>
<tr><td><b>Comment:</b>
<td><textarea type="text" name="comment" maxlenght=500 cols=40 rows=5 wrap="hard"></textarea>
<tr><td>
<td><input type="submit" name="submit" value="Send!">
</table>
</form>


<?php

if (isset($_POST['submit']))
{
$connect = mysql_connect(server,user,pass)or die("Error 1.");
$select_db = mysql_select_db(db,$connect)or die("Error 2.");
$nick = $_POST['nick'];
$comment = $_POST['comment'];
$query = "INSERT INTO book VALUES ('$nick','$comment')";
$result = mysql_query($query) or Die(mysql_error());
if ($result) echo "Success!";
else echo "Error 4.";
mysql_close();
}
?>
</body>
Ford
Profil *
Vyřešeno, díky, ten poslední vážně funguje!
Ford
Profil *
Teď by mě zajímalo, jak je možné, že jde do databáze jak do 'nick' tak do 'comment' vložit hodnota ""(nic), když jsou nastaveny na NOT NULL.
souki
Profil
jenže mezi "" a NULL je podstatný rozdíl
Ford
Profil *
Takže, pokusil jsem se to vyřešit tak, že pokud se nezadá jméno, automaticky se nahradí za Anonymous, a pokud se nezadá příspěvek, tak se objeví hláška zadejte jméno a nic se neodešle. S tím kódem (viz. dole) to zatím funguje tak, že:

1. Pokud zadám nick i comment, přidá se do db.
2. Pokud zadám jen nick, objeví se hláška. (tzn. asi to funguje správně)
3. Pokud zadám jen comment, vůbec nic se nestane (tzn. zde je asi problém)
4. Pokud nezadám nic, nestane se taky nic. (další problém)
...

if (!($_POST['nick']))

{
$nick="'Anonymous'";
}

else if (!($_POST['comment']))

{
echo "Please add your comment.";
exit;
}

else

{

$query = "INSERT INTO ...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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