ecriture sur bdd qui s'effacent

Eléphant du PHP | 119 Messages

01 sept. 2011, 18:35

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

ViPHP
AB
ViPHP | 5818 Messages

01 sept. 2011, 18:45

Ils ne s'affichent plus ou sont-ils réellement effacés de ta bdd ?

Eléphanteau du PHP | 34 Messages

01 sept. 2011, 18:49

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 :mrgreen:
    Ta balise <form> n'est pas bien fermé,
    Ton bouton submit n'est pas dans le formulaire,
D'autre question ?

Eléphanteau du PHP | 34 Messages

01 sept. 2011, 18:53

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" />
:non: C'est pas bien ! :mrgreen:

Eléphant du PHP | 119 Messages

01 sept. 2011, 19:51

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>

Eléphanteau du PHP | 25 Messages

01 sept. 2011, 22:39

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
}

Eléphant du PHP | 119 Messages

01 sept. 2011, 23:15

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 ... #-o

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());  	
?>

Eléphanteau du PHP | 25 Messages

02 sept. 2011, 09:00

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

Eléphanteau du PHP | 34 Messages

02 sept. 2011, 19:11

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).

Eléphant du PHP | 119 Messages

02 sept. 2011, 20:51

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

02 sept. 2011, 21:30

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 !

@+
Il en faut peu pour être heureux ......