Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: GoldRazor le le 07-08-2008 a 01:12:32

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&eacute;licitation, votre annonce a bien &eacute;t&eacute; modifi&eacute;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
Citation:
if($_POST['description']<>"");


remplaces le ; par un {

soit
Citation:
if($_POST['description']<>"") {


et ensuite tu rajoutes un } comme ici en rouge
Citation:
if($utilisateur=mysql_fetch_object(mysql_query("SELECT * FROM `membres` WHERE `email`='".$_SESSION['email']."'"))){

$erreur="<center>F&eacute;licitation, votre annonce a bien &eacute;t&eacute; modifi&eacute;e.</center>";

}


par contre étant donné que le message "Veuillez saisir une description" s'affiche, il semblerait que la condition
Citation:
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.
Citation:
if($utilisateur=mysql_fetch_object(mysql_query("SELECT * FROM `membres` WHERE `email`='".$_SESSION['email']."'"))){
$erreur="<center>F&eacute;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
Citation:
$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
Citation:
<input name="titre" type="text" id="titre" size="50" maxlength="60" value="<?php echo $lot->titre; ?>">


tu mets plutot
Citation:
<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
Citation:
$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
Citation:
$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.