Problème livre d'or
akio.j
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
avion-f16 Messages postés 19253 Date d'inscription Statut Contributeur Dernière intervention -
avion-f16 Messages postés 19253 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai réaliser un livre d'or dont le commentaire est traité une fois sur cinq. Exemple: je rentre le pseudo,message,réponse a la question et bien le message arrive une fois sur cinq a la BDD (voir jamais parfois). J'ai chercher plusieurs jour,testé plusieurs technique et sans succé . Je suis debutant, merci de votre aide.
PS:(j'ai mis que la partie du code d'où le problème pourrais venir) je crois que le probleme vient de la variable $reponse.
J'ai réaliser un livre d'or dont le commentaire est traité une fois sur cinq. Exemple: je rentre le pseudo,message,réponse a la question et bien le message arrive une fois sur cinq a la BDD (voir jamais parfois). J'ai chercher plusieurs jour,testé plusieurs technique et sans succé . Je suis debutant, merci de votre aide.
<form method="post" action="<?$PHP_SELF;?>"> <fieldset> <legend> Livre d'or </legend> <label for="textbox1">Pseudo : </label> <input type="text" id="textbox1" name="pseudo" /> <br></br> <label for="textarea1">Commentaire : </label> <textarea id="textarea1" name="commentaire" rows="2" cols="20"> </textarea> <?php $question = rand(0,4); $reponse = array (25, 15,'chat', 'chien', 5); switch ($question) { case 0: echo '<label for="textbox2">Question : Combien font 5 x 5 ? </label>'; break; case 1: echo '<label for="textbox2">Question : Combien font 10 + 5 ? </label>'; break; case 2: echo '<label for="textbox2">Question : Quel animal miaule ? le : </label>'; break; case 3: echo '<label for="textbox2">Question : Quel animal aboie ? le :</label>'; break; case 4: echo '<label for="textbox2">Question : Combien de doigts possede une main ? </label>'; break; } ?> <input id="textbox2" name="antibot"/> <input type="submit" name="valide" value="Envoyer"/> <?php extract($_POST); if ((isset($antibot)) && ($antibot == $reponse[$question]) && (!empty($antibot))) { if ((isset($pseudo)) && (isset($commentaire)) && (!empty($pseudo)) && (!empty($commentaire)) ) { $sql = "INSERT INTO livreor ( pseudo, message ) VALUES ('".$pseudo."', '".$commentaire."');"; $req = mysql_query($sql); if (!$req) { die ('l\'envoie au serveur n\'a pas fonctionné :'.mysql_error()); }else echo "<br> <br> <strong> le commentaire a bien etais envoyer </strong>"; } else echo 'les champs pseudo et commentaire doient obligatoirement etre remplie'; } ?> </fieldset> </form>
PS:(j'ai mis que la partie du code d'où le problème pourrais venir) je crois que le probleme vient de la variable $reponse.
A voir également:
- Problème livre d'or
- Or - Guide
- Télécharger livre de lecture ce2 gratuit pdf - Télécharger - Éducatifs
- Livre coran en français pdf - Télécharger - Histoire & Religion
- Malheureusement, votre colissimo ne peut pas être livré. - Forum Consommation & Internet
- Request header or cookie too large - Forum Webmastering
4 réponses
Salut,
Le nombre de la question est généré deux fois :
- La première lors de l'affichage du formulaire
- La seconde après l'envoie, lors du deuxième chargement.
Le nombre ne sera pas toujours le même.
De plus, je te déconseille l'usage de extract()
En ajoutant manuellement des champs, on peut réécrite $question et $reponse.
Le nombre de la question est généré deux fois :
- La première lors de l'affichage du formulaire
- La seconde après l'envoie, lors du deuxième chargement.
Le nombre ne sera pas toujours le même.
De plus, je te déconseille l'usage de extract()
En ajoutant manuellement des champs, on peut réécrite $question et $reponse.
akio.j
up
Yo,
Merci avion-f16 pour ton aide. Alors j'essaye de régler le problème de la re-génération de la question a l'envoie, avec "if(isset($_POST) && !empty($_POST))" comprendre "si j'envoie un formulaire". Donc je genere ma question avec rand(); dans le else le probleme c'est que la variable $question disparais lors de l'envoie du formulaire donc plus de comparaison possible avec $antibot :/
Merci avion-f16 pour ton aide. Alors j'essaye de régler le problème de la re-génération de la question a l'envoie, avec "if(isset($_POST) && !empty($_POST))" comprendre "si j'envoie un formulaire". Donc je genere ma question avec rand(); dans le else le probleme c'est que la variable $question disparais lors de l'envoie du formulaire donc plus de comparaison possible avec $antibot :/
<?php if(isset($_POST) && !empty($_POST)) { $antibot = $_POST['antibot']; $commentaire = $_POST['commentaire']; $pseudo = $_POST['pseudo']; if ((isset($antibot)) && ($antibot == $reponse[$question]) && (!empty($antibot))) { if ((isset($pseudo)) && (isset($commentaire)) && (!empty($pseudo)) && (!empty($commentaire)) ) { $sql = "INSERT INTO livreor ( pseudo, message ) VALUES ('".$pseudo."', '".$commentaire."');"; $req = mysql_query($sql); if (!$req) { die ('l\'envoie au serveur n\'a pas fonctionné :'.mysql_error()); } else echo "<br> <br> <strong> le commentaire a bien etais envoyer </strong>"; } else echo 'les champs pseudo et commentaire doient obligatoirement etre remplie'; } } else { $question = rand(0,4); $reponse = array (25, 15,'chat', 'chien', 5); switch ($question) { case 0: echo '<label for="textbox2">Question : Combien font 5 x 5 ? </label>'; break; case 1: echo '<label for="textbox2">Question : Combien font 10 + 5 ? </label>'; break; case 2: echo '<label for="textbox2">Question : Quel animal miaule ? le : </label>'; break; case 3: echo '<label for="textbox2">Question : Quel animal aboie ? le :</label>'; break; case 4: echo '<label for="textbox2">Question : Combien de doigts possede une main ? </label>'; break; } } ?>
Salut,
Les vérifications isset() que tu fais sur les variables que tu déclares avant ($pseudo, $antibot) ne servent à rien : forcément que les variables existent, puisque tu les crées avant.
Tu peux stocker la réponse en session lors de l'affichage du formulaire, et ensuite, comparer cette variable de session avec la variable POST quand le formulaire est envoyé.
Les vérifications isset() que tu fais sur les variables que tu déclares avant ($pseudo, $antibot) ne servent à rien : forcément que les variables existent, puisque tu les crées avant.
Tu peux stocker la réponse en session lors de l'affichage du formulaire, et ensuite, comparer cette variable de session avec la variable POST quand le formulaire est envoyé.