Forum Clubic

Rien n'est enregistré dans la base mysql

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 ?


<?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 à 25
{
echo "<h1>Page 1</h1>";
		?>
Comptes tu venir  ?
<form method="post">
<input name="venu_oui" type="radio" value="" />Oui<input name="venu_non" type="radio" value="" />Non
    <input type="text" name="nom" /> 
    <input type="text" name="prenom" /> 

    <input type="submit" value="Valider" />
</form>
<?php
$venu_oui = mysql_real_escape_string(htmlspecialchars($_POST['venu_oui']));
$venu_non = mysql_real_escape_string(htmlspecialchars($_POST['venu_non']));
$code = rand(1001, 9999);
$prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom']));
$nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));


mysql_query("INSERT INTO soiré VALUES('', '$age', '$venu_oui', '$venu_non', '$nom', '$prenom', '$code')");
mysql_close();
 }

else // SINON
{
echo "<h1>Page 2</h1>";
mysql_connect("localhost", "root", "");
        mysql_select_db("parents");
$age = mysql_real_escape_string(htmlspecialchars($_POST['age']));
?>

Comptes tu venir  ?
<form method="post">
<input name="venu_oui2" type="radio" value="" />Oui<input name="venu_non2" type="radio" value="" />Non
    <input type="text" name="nom2" /> 
    <input type="text" name="prenom2" /> 

    <input type="submit" value="Valider" />
</form>
<?php
$venu_oui2 = mysql_real_escape_string(htmlspecialchars($_POST['venu_oui2']));
$venu_non2 = mysql_real_escape_string(htmlspecialchars($_POST['venu_non2']));
$code2 = rand(1001, 9999);
$prenom2 = mysql_real_escape_string(htmlspecialchars($_POST['prenom2']));
$nom2 = mysql_real_escape_string(htmlspecialchars($_POST['nom2']));


mysql_query("INSERT INTO soiré VALUES('', '$age', '$venu_oui2', '$venu_non2', '$nom2', '$prenom2', '$code2')");
mysql_close();

}
}

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>

Edité le 21/11/2008 à 23:25

Il y a des erreurs? Tu as essayé d’afficher la requête plutôt que l’executer?

Non il y a pas d’erreur.
Comment est ce qu’on peut afficher une requête ? :confused:

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”!

En théorie oui, en principe, faut soit éviter, soit les délimiter (mettre soiré ou “soiré” selon le sql_mode).

Mais là encore, ça devrait péter une erreur ça.

Je viens d’essayer sans les accents mais ça ne change rien :frowning:

J’ai très peu de connaissances en php, mais en ajoutant :


echo mysql_errno() . ": " . mysql_error() . "\n";

juste avant :

mysql_close();

ne permettrait-il pas d’avoir le message d’erreur ?

fr.php.net…

Si.

Par contre, tu ouvres deux connexions pour deux bases différentes?

<?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

Ton test est mal fait :

$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