Bonsoir, je suis débutant en php.
Je voulais réaliser un script qui enregistre des informations dans une base mysql.
Mais ce que j’ai fais n’enregistre rien dans la base.
Quel est l’erreur ?
Une interrogation, est-il possible d’utiliser des accents pour les tables et les attributs en MySQL?
J’essaierai, à ta place, de redéfinir ma table “soiré” en “soire”!
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("marine");
$age = mysql_real_escape_string(htmlspecialchars($_POST['age']));
if (isset($_POST['age']))
{
if ($age <= 25) // SI l'âge est inférieur ou égal à 12
{
echo "<h1>Page 1</h1>";
$venu = $_POST['venu'];
$code = rand(1001, 9999);
$prenom = $_POST['prenom'];
$nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
$date = date("Y");
if (isset($_POST['prenom']) AND isset($_POST['nom']) AND isset($_POST['venu']))
{
mysql_query("INSERT INTO soire VALUES('', '$age', '$nom', '$prenom', '$code', 'timestamp', '$venu')");
echo mysql_errno() . ": " . mysql_error() . "\n";
mysql_close();
echo "merci d \'avoir répondu. Votre code est : $code, le garder bien il vous sera demander à l'entrée.";
}
else
{?>
Comptes tu venir à la soirée ?
<form method="post">
<input name="venu" type="radio" value="oui" />Oui<input name="venu" type="radio" value="non" />Non
<input type="text" name="nom" />
<input type="text" name="prenom" />
<input type="submit" value="Valider" />
</form>
<?php }
}
else // SINON
{
echo "<h1>Page 2</h1>";
}
}
else
{
?>
<p align="center">Bonjour,
Merci de saisir votre age :</br>
</p>
<form method="post">
<div align="center">
<input type="text" name="age" />
<input type="submit" value="Valider" />
</p>
</div>
</form>
<?php } ?>
</body>
</html>
Voila ce que j’ai fais, il demande l’âge, puis il va sur une page où il demande si il va venir, le prénom, le nom.
Ensuite on est redirigé vers la demande de l’age. Ce qui veut dire que la condition où il doit écrire dans la bdd n’est jamais faite.
Quel est le problème ?
Merci beaucoup de vos réponses
Edité le 22/11/2008 à 22:46
$age = mysql_real_escape_string(htmlspecialchars($_POST['age']));
if (isset($_POST['age']))
{
if ($age <= 25) // SI l'âge est inférieur ou égal à 12
...
—>
if (isset($_POST['age']))
{
$age = intval($_POST['age']);
if ($age <= 25) // SI l'âge est inférieur ou égal à 12
...
Ça ne sert à rien de vérifier l’existence d’une variable après s’en être servi : en gros, tu utilises une variable qui n’existe pas, pour ensuite la vérifier. C’est inutile, voire dans une certaine mesure bête.
Ensuite, si c’est un entier, utilise intval, et pas mysql_… + htmlspecialchars.
Mais cette modification ne change rien.
Il n’y a rien qui est écrit dans la base de donnée.
Cettte partie ne s’applique pas :
if (isset($_POST['prenom']) AND isset($_POST['nom']) AND isset($_POST['venu']))
{
mysql_query("INSERT INTO soire VALUES('', '$age', '$nom', '$prenom', '$code', 'timestamp', '$venu')");
echo mysql_errno() . ": " . mysql_error() . "\n";
mysql_close();
echo "merci d \'avoir répondu. Votre code est : $code, le garder bien il vous sera demander à l'entrée.";
}
Pourtant il doit pouvoir trouver $_POST[‘prenom’], $_POST[‘nom’] et $_POST[‘venu’].
Qui sont demandés dans le else après.
Edité le 23/11/2008 à 19:57