Page 1 sur 1
ecriture sur bdd qui s'effacent
Posté : 01 sept. 2011, 18:35
par olivxii
bonjour, j'ai fais un petit script qui écrit les infos d'un formulaire dans des champs de ma bdd,
les données s’écrivent bien mais si je revient sur la page ils s'effacent sans que j'ai touché a rien..
ma requête :
<?
designhaut('Modifier votre profil');
$id = intval($_SESSION[$prefix.'id']);
$reponse = mysql_query('SELECT * FROM '.$prefix.'membres WHERE id='.$id) or die(mysql_error());
$donnees = mysql_fetch_array($reponse);
$question = htmlspecialchars($_POST['question']);
$retour = htmlspecialchars($_POST['retour']);
//Puis on met à jour la table membres
mysql_query('UPDATE '.$prefix."membres SET question='".$question."', retour='".$retour."' WHERE id=".$_SESSION[$prefix.'id']) or die(mysql_error());
?>
mon formulaire :
<FORM method="POST" action="questsec.php">
- Veuillez choisir une question.<br/>
<select name="question">
<option name="question">Le prenom de ma mere</option>
<option name="question">Le nom de mon animal domestique</option>
<option name="question">la marque de ma premiere voiture</option>
<option name="question">Le nom de mon dernier lycée</option>
<option name="question">Le nom de mon proffesseur preferé</option>
<option name="question">La chose qui ma le plus marqué</option>
</select>
<br/><br/>
- Votre reponse<br/>
<input type="text" name="retour" id="retour" />
<form>
<br/>
<br/>
<input type="submit" value="ajouter" />
je ne voit pas d’où cela peu provenir
Re: ecriture sur bdd qui s'effacent
Posté : 01 sept. 2011, 18:45
par AB
Ils ne s'affichent plus ou sont-ils réellement effacés de ta bdd ?
Re: ecriture sur bdd qui s'effacent
Posté : 01 sept. 2011, 18:49
par Alf?>
Salut,
Sa vient de fait que :
- Tu ne vérifie pas si le bouton submit existe et n'est pas vide. Du coup a chaque fois que tu arrive sur la page...bah le script d'update se lance sans ta permission
Ta balise <form> n'est pas bien fermé,
Ton bouton submit n'est pas dans le formulaire,
D'autre question ?
Re: ecriture sur bdd qui s'effacent
Posté : 01 sept. 2011, 18:53
par Alf?>
Oulalah
Désolé j'avais aussi oublié qu'il manquait tout ça :
tu n'as pas mis de value="", ici :
<input type="text" name="retour" id="retour" />
tu n'as pas mis de name="AJOUTER", ici :
<input type="submit" value="ajouter" />

C'est pas bien !

Re: ecriture sur bdd qui s'effacent
Posté : 01 sept. 2011, 19:51
par olivxii
alors j'ai donc suivis vos conseils suite a mes erreur mais je me retrouve dans le meme cas,
une fois remplis je sort de la page, je regarde dans ma bdd et les deux sont presents,
mais si je revient sur la page cela efface les données deja ecritent dans la bdd.
<FORM method="POST" action="questsec.php">
- Veuillez choisir une question.<br/>
<select name="question">
<option name="question">Le prenom de ma mere</option>
<option name="question">Le nom de mon animal domestique</option>
<option name="question">la marque de ma premiere voiture</option>
<option name="question">Le nom de mon dernier lycée</option>
<option name="question">Le nom de mon proffesseur preferé</option>
<option name="question">La chose qui ma le plus marqué</option>
</select>
<br/><br/>
- Votre reponse<br/>
<input type="text" value="" name="retour" id="retour" />
<br/>
<br/>
<input type="submit" value="ajouter" name="ajouter"/><br/><br/>
</form>
Re: ecriture sur bdd qui s'effacent
Posté : 01 sept. 2011, 22:39
par leozoe
Bonsoir
Alf?> t'a donné la solution, des que tu vas sur ta page l'update s'effectue
il te faut donc une condition pour que le script s'exécute
tu peux faire par ex
rajouter cette ligne a ton formulaire sous <FORM method="POST" action="questsec.php"><input type="hidden" name="valeur" value="modifier">
et créer la condition dans laquelle tu inseres ton update
if ($_POST['valeur'] == "modifier")
{
ta requete d'update
}
Re: ecriture sur bdd qui s'effacent
Posté : 01 sept. 2011, 23:15
par olivxii
j'ai securisé le formulaire pour que le submit ne fonctionne que si les champs son remplis mais ca reste pareil,
les champs se remplisse bien mais des que je revient sur la page il s'effacent ...
Code : Tout sélectionner
<FORM method="POST" action="questsec.php">
- Veuillez choisir une question.<br/>
<select name="question" type="hidden" >
<option name="question">Le prenom de ma mere</option>
<option name="question">Le nom de mon animal domestique</option>
<option name="question">la marque de ma premiere voiture</option>
<option name="question">Le nom de mon dernier lycée</option>
<option name="question">Le nom de mon proffesseur preferé</option>
<option name="question">La chose qui ma le plus marqué</option>
</select>
<br/><br/>
- Votre reponse<br/>
<input type="text" value="" name="retour" type="hidden" />
<br/>
<br/>
<input type="submit" value="ajouter" name="ajouter" onClick="verifForm(this.form)"/><br/><br/>
</form>
Code : Tout sélectionner
<SCRIPT LANGUAGE="JavaScript">
function verifForm(formulaire)
{
if(formulaire.retour.value == "")
alert('Vous devez mettre une réponse !');
else
formulaire.submit();
}
</SCRIPT>
<?
designhaut('Modifier votre profil');
$id = intval($_SESSION[$prefix.'id']);
$reponse = mysql_query('SELECT * FROM '.$prefix.'membres WHERE id='.$id) or die(mysql_error());
$donnees = mysql_fetch_array($reponse);
//Si les variables contenant le pseudo, le mot de passe et l'email contiennent quelque chose.
if (!empty($_POST['question']) && !empty($_POST['retour']))
$question = htmlspecialchars($_POST['question']);
$retour = htmlspecialchars($_POST['retour']);
// ecriture
mysql_query('UPDATE '.$prefix."membres SET question='".$question."', retour='".$retour."' WHERE id=".$_SESSION[$prefix.'id']) OR die(mysql_error());
?>
Re: ecriture sur bdd qui s'effacent
Posté : 02 sept. 2011, 09:00
par leozoe
bonjour,
je n'utilise pas bcp javascript, mais a première vue il manque le nom de ton formulaire dans le form pour que ça fonctionne
<FORM method="POST" action="questsec.php" name="formulaire">
sinon tu mets 2 fois le type dans cette ligne <input type="text" value="" name="retour" type="hidden" />
je pense qu'il est préférable d'utiliser la méthode en php que je t'ai indiqué plus haut, par ce que si javascript est désactivé ton formulaire ne fonctionnera pas
Bonne journée
Re: ecriture sur bdd qui s'effacent
Posté : 02 sept. 2011, 19:11
par Alf?>
Salut,
Je te conseil de lire ceci :
http://www.phpdebutant.org/article67.php
Tu apprendras le HTML, le PHP et le SQL (dans la base de la base).
Re: ecriture sur bdd qui s'effacent
Posté : 02 sept. 2011, 20:51
par olivxii
sur le lien que tu me donne au niveau du form il n'y a pas de name"" donc ca revient au meme, mon probleme ne vient pas de la..
mais ce qui est bizzard c'est que si je ne remplis pas tout je ne peu pas envoyé alors que la le form envoie des donnés vide meme si il n'est pas appelé donc ca doit ce passer en amond du form.
Re: ecriture sur bdd qui s'effacent
Posté : 02 sept. 2011, 21:30
par moogli
Commence par virer le javascript et valide ou non le formulaire.
si tu le valide juste en virant le JS tu sais d'où viens le problème il ne reste qu'a vérifier le JS !
@+