Titre: [Résolu] Erreur de script (formulaire)
Posté par: GoldRazor le le 07-08-2008 a 01:12:32
Bonjour,
J'ai un petit problème avec mon formulaire.
Le probleme est le suivant, lorsque je clique sur une annonce pour la modifier, les formulaires se remplissent de leur données anciennes mais lorsque je fais une modifications, l'erreur "veuillez saisir une description" s'affiche et les champs sont vides alors que les données ont été modifié dans la bdd.
Si une âme charitable peut y jeter un coup d'oeil, j'implorerai le ciel pour que joie et volupté lui soit apporté :
Code:
<?php
$titre = $_POST["titre"]; $categorie = $_POST["categorie"]; $prix = $_POST["prix"]; $quantite = $_POST["quantite"]; $description = $_POST["description"]; $photo = $_POST["photo"]; $session_id2 = $_SESSION["id"]; $id = $_GET["act"]; $session_id = $utilisateurs->id;
$affichform=true; if($_GET['act']){ $affichform=false; //test titre if($_POST['titre']<>""){ //test categorie if($_POST['categorie']<>""){ //test prix if($_POST['prix']<>""){ //test quantite if($_POST['quantite']<>""){ //test description if($_POST['description']<>""); $query= "UPDATE annonces SET titre='$titre', categorie='$categorie', prix=$prix, quantite=$quantite, description='$description', photo='$photo' WHERE id=$id AND nomembre=$utilisateurs->id";
mysql_query ($query); if($utilisateur=mysql_fetch_object(mysql_query("SELECT * FROM `membres` WHERE `email`='".$_SESSION['email']."'"))){ $erreur="<center>Félicitation, votre annonce a bien été modifiée.</center>";
// fin test description } else {$erreur="Erreur : Veuillez saisir une description";$affichform=true;} // fin test quantite } else {$erreur="Erreur : Veuillez saisir la quantite";$affichform=true;} // fin test prix } else {$erreur="Erreur : Veuillez saisir le prix";$affichform=true;} // fin categorie } else {$erreur="Erreur : Veuillez saisir la catégorie";$affichform=true;} // fin test titre } else {$erreur="Erreur : Veuillez saisir un titre d'annonce";$affichform=true;} } ?>
<?php echo $erreur; if($affichform==true){ ?>
<?php $lot=mysql_fetch_object(mysql_query("SELECT * FROM annonces WHERE id='".$_GET['id']."' AND nomembre=$utilisateurs->id")); ?>
<form action="modif_annonces.php?act=<?php echo $lot->id; ?>" method="post" name="form1" id="form1"> .... |
|
Si jamais vous voyez une explication, n'hésitez pas, merci. |
Titre: Re:Erreur de script (formulaire)
Posté par: GoldRazor le le 08-08-2008 a 13:09:49
| Personne ne semble avoir une idée ? |
Titre: Re:Erreur de script (formulaire)
Posté par: pppplus le le 08-08-2008 a 22:45:56
1- refaire le script avec moins de if else imbirqués
=> exemple : tester les conditions les unes après les autres. if($lacondition!='montest_ok')$erreur.="message d'erreur lacondition"; idem pour toutes les conditions à la suite
Et juste avant d'envoyer à la bdd, vérifier si $erreur est vide ou pas. if($erreur=="") j'envoie à la bdd et j'arrête mon script else echo $erreur;
2- je pense qu'après validation de votre site et envoie à la bdd, le script recommence à vérifier les conditions, mais il n'y a plus de données. |
Titre: Re:Erreur de script (formulaire)
Posté par: Krash le le 08-08-2008 a 23:38:42
Moi je vois plutot
| if($_POST['description']<>""); |
|
remplaces le ; par un {
soit
| if($_POST['description']<>"") { |
|
et ensuite tu rajoutes un } comme ici en rouge
if($utilisateur=mysql_fetch_object(mysql_query("SELECT * FROM `membres` WHERE `email`='".$_SESSION['email']."'"))){ $erreur="<center>Félicitation, votre annonce a bien été modifiée.</center>";
} |
|
par contre étant donné que le message "Veuillez saisir une description" s'affiche, il semblerait que la condition
| if($utilisateur=mysql_fetch_object(mysql_query("SELECT * FROM `membres` WHERE `email`='".$_SESSION['email']."'"))) |
|
ne soit pas rempli, pour ca il faudrait plus d'infos |
Titre: Re:Erreur de script (formulaire)
Posté par: GoldRazor le le 10-08-2008 a 02:21:41
Merci beaucoup pour vos precisions. Krash, j'ai suivi ton conseil, celui de mettre une accolade et donc les champs s'actualise avec les nouvelles données.
Par contre, j'ai un autre problème. Si je laisse un champ vide et que je valide, le message d'erreur approprié apparait mais les valeurs ne s'affiche plus, et donc les champs sont vides.
:-\ |
Titre: Re:Erreur de script (formulaire)
Posté par: Krash le le 10-08-2008 a 10:11:34
| c'est possible de voir la suite de ton code ? |
Titre: Re:Erreur de script (formulaire)
Posté par: GoldRazor le le 10-08-2008 a 14:21:48
Salut Krash, je te remercie grandement pour ton aide,
J'ai hebergé ma page pour que tu puisse y avoir accés, ca sera beaucoup plus clair que si je poste le code ici.
MP envoyé |
Titre: Re:Erreur de script (formulaire)
Posté par: Krash le le 10-08-2008 a 14:34:29
Ok je vois
en fait s'il y a une erreur, le code suivant ne se lance pas.
if($utilisateur=mysql_fetch_object(mysql_query("SELECT * FROM `membres` WHERE `email`='".$_SESSION['email']."'"))){ $erreur="<center>Félicitation, votre annonce a été modifiée avec succès.<br><br> <a href=\"http://www.destock.biz/V2/moncompte.php\">Retour à votre espace membre</a></center>"; } |
|
donc $utilisateur n'existe pas et
| $lot=mysql_fetch_object(mysql_query("SELECT * FROM annonces WHERE id='".$_GET['id']."' AND nomembre=$utilisateurs->id")); |
|
retourne une erreur car la condition nomembre=$utilisateurs->id" n'est pas vérifiée.
Il faudrait donc, si $affichform==true, initialiser la variable $utilisateur pour récupérer les infos correspondantes. |
Titre: Re:Erreur de script (formulaire)
Posté par: GoldRazor le le 10-08-2008 a 14:40:37
| hum okay merci, je vais essayer de voir ça :o, ca promet |
Titre: Re:Erreur de script (formulaire)
Posté par: Krash le le 10-08-2008 a 14:43:31
| ah nan attends je vais revoir car les autres fois c'est utilisateurs alors que l'autre c'est $utilisateur |
Titre: Re:Erreur de script (formulaire)
Posté par: Krash le le 10-08-2008 a 14:51:13
mais en fait tu veux faire quoi ? Tu veux récupérer des données que la personne avait déjà entrée ultérieurement ou récupérer les données correctes entrées avant validation du formulaire et affichage de l'erreur car dans ce cas au lieu de mettre| <input name="titre" type="text" id="titre" size="50" maxlength="60" value="<?php echo $lot->titre; ?>"> |
|
tu mets plutot| <input name="titre" type="text" id="titre" size="50" maxlength="60" value="<?php echo $titre; ?>"> |
|
etc pour les autres champs |
Titre: Re:Erreur de script (formulaire)
Posté par: GoldRazor le le 10-08-2008 a 14:58:06
Je voudrais "récupérer les données correctes entrées avant validation du formulaire et affichage de l'erreur"
Je vais voir si ta solution fonctionne.
Merci |
Titre: Re:Erreur de script (formulaire)
Posté par: GoldRazor le le 10-08-2008 a 15:15:54
non ca fonctionne pas, car au premier chargement de la page, ya aucune valeur dans les champs, et après validation, il y a certe les nouvelles valeurs qui remplissent les champs mais ca les change pas dans la bdd et normallement il devrait y avoir le message suivant "Félicitation, votre annonce a été modifiée avec succés"
Je vais continuer à plancher dessus, mais en tout cas, merci pour ta contribution, c'est trés gentil ;) |
Titre: Re:Erreur de script (formulaire)
Posté par: Krash le le 10-08-2008 a 15:23:43
ligne 295 à 302
remplaces
$titre = $_POST["titre"]; $categorie = $_POST["categorie"]; $prix = $_POST["prix"]; $quantite = $_POST["quantite"]; $description = $_POST["description"]; $photo = $_POST["photo"]; $session_id = $_SESSION["id"]; $id = $_GET["act"]; |
|
par
$titre = (isset($_POST["titre"])) ? $_POST["titre"] : $utilisateurs->titre; $categorie = (isset($_POST["categorie "])) ? $_POST["categorie "] : $utilisateurs->categorie ; $prix = (isset($_POST["prix "])) ? $_POST["prix "] : $utilisateurs->prix ; $quantite = (isset($_POST["quantite "])) ? $_POST["quantite "] : $utilisateurs->quantite ; $description = (isset($_POST["description "])) ? $_POST["description "] : $utilisateurs->description ; $photo = (isset($_POST["photo"])) ? $_POST["photo"] : $utilisateurs->photo; $session_id = $_SESSION["id"]; $id = $_GET["act"]; |
|
|
Titre: Re:Erreur de script (formulaire)
Posté par: GoldRazor le le 10-08-2008 a 15:40:51
ALELOUIIAAAAAAAAAAA ALLEELOUIAAAAAAAAAAA ;D
Merciiiiiiiiiii !!!!!!!!!! JE VOUS AIME !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! :-X
T'es vraiment un pro ! Ça fonctionne nikel ! Longue vie à Krash ! Merci beaucoup |
Titre: Re:Erreur de script (formulaire)
Posté par: Krash le le 10-08-2008 a 15:59:05
ah ben voila enfin ca marche
par contre une fois que tu maîtrisera à fond php et les class, lances toi dans le modèle MVC, tu vas voir ca aide pour avoir un code propre
http://julien-pauli.developpez.com/tutoriels/php/mvc-controleur/ |
Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.
|