goldrazor06 Posté 27 Octobre 2007 Posté 27 Octobre 2007 Bonjour, J'ai un soucie avec mon code. Je n'arrive pas à chopper la valeur "id" de ma barre d'adresse avec GET. Lorsque je fais ma requete avec le WHERE id='".$_GET['id']."', id retourne aucune valeur alors qu'il est dans la barre d'adresse. tandis que sur la requete suivante "$lot", le id='".$_GET['id']."' recuprer bien la valeur. Avez vous une solution ? Cordialement <?php $affichform=true; if($_GET['act']=="fin"){ $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']<>""); mysql_query("UPDATE annonces SET titre='".$_POST['titre']."', categorie='".$_POST['categorie']."', prix='".$_POST['prix']."', quantite='".$_POST['quantite']."', description='".$_POST['description']."', photo='".$_POST['photo']."', titre='".$_POST['titre']."' WHERE id='".$_GET['id']."' AND nomembre='".$_SESSION['id']."'"); if($utilisateur=mysql_fetch_object(mysql_query("SELECT * FROM `membres` WHERE `email`='".$_SESSION['email']."'"))){ $erreur="<center>Félicitation, votre annonce est en ligne.</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; ?> <?php if($affichform==true){ ?> <?php $lot=mysql_fetch_object(mysql_query("SELECT * FROM annonces WHERE id='".$_GET['id']."' AND nomembre='".$_SESSION['id']."'")); ?>
Callisto Posté 27 Octobre 2007 Posté 27 Octobre 2007 Le code concernant le $_GET['id'] fonctionne bien sur les deux requêtes. Ton problème doit être ailleurs. Je te conseille de procéder davantage par étapes pour construire tes requêtes SQL, au moins au début. Ainsi, tu pourras plus facilement dépister un bug. Dans ton cas, essaye de coder plus de cette façon : $id = $_GET["id"];$titre = $_POST["titre"];$categorie = $_POST["categorie"];//... ainsi de suite...$query = "UPDATE annonces SET titre='$titre', categorie='$categorie', prix='$prix', quantite='$quantite', description='$description', photo='$photo', titre='$titre' WHERE id='$id' AND nomembre='$session_id'";$res = mysql_query($query);if ($res) echo "Requête réussie";else echo "Requête échouée.<br />Détail : '$query'<br />Erreur : " . mysql_error(); Le code est plus lisible et si tu as un problème de ce genre, tu peux intercaler entre tes lignes des "echo $variable" pour t'aider à trouver la faille. Il y a une chose qui est bizarre dans tes requêtes SQL, c'est que tu entoures toutes les valeurs par des guillemets ' '. Alors soit tu as déclaré toutes tes colonnes comme étant des chaînes de caractère (VARCHAR, TEXT, ...), ce qui est un peu bizarre pour des variables comme id, prix, quantite,... Ou bien tu auras des erreurs si tu entoures $id par des guillemets ('$id') et qu'il est de type INT, SMALLINT, BIGINT,...
binarygirl Posté 27 Octobre 2007 Posté 27 Octobre 2007 Il faudrait faire afficher avec echo le code SQL qui est exécuté. Ma petite idée est qu'il y a des apostrophes dans le texte que vous essayez de sauver, et votre code ne semble pas gérer cela. Du coup, le code SQL est peut être 'brisé' car mal délimité et ne s'exécute pas.
goldrazor06 Posté 27 Octobre 2007 Auteur Posté 27 Octobre 2007 (modifié) Merci beaucoup pour voir reponse. J'ai testé la methode de Callisto, ca m'affiche requête réussie malgrés le non changement des valeurs dans la base. J'ai fais un test pour voir si get recupere bien la valeur id, pas de soucie a ce niveau là, mais les info ne sont pas actualiser dans la base. Voici ma base mysql: peut etre une erreur de configuration .... Merci beaucoup pour vos solutions potentiels PS : Je vais essayer la solution à binarygirl, si je vois ce que tu veux dire, c'est la solution ou faut mettre des slash partout ... Modifié 27 Octobre 2007 par goldrazor06
Callisto Posté 27 Octobre 2007 Posté 27 Octobre 2007 Si la requête passe mais les valeurs dans la base ne changent pas c'est que la requête ne s'applique à aucune ligne. Tu spécifies qu'elle doit s'appliquer à la ligne qui a id=$id et nomembre=$session_id, mais imagine que $session_id=5 et que dans la table tu n'as aucune ligne où nomembre est égal à 5, alors la requête ne fait rien. Et pourtant sa syntaxe est bonne. Après avoir vu les types de colonnes utilisés dans ta table, je réecrirai la requête comme ça : UPDATE annonces SET titre='$titre', categorie='$categorie', prix=$prix, quantite=$quantite, description='$description', photo='$photo' WHERE id=$id AND nomembre=$session_id Attention, la colonne "titre" était en double. Ce n'est pas la source de ton problème, mais il faut l'enlever quand même. Je te conseille de mettre un : echo $query; juste après le '$query = "update...' pour que la requête s'affiche dans le navigateur telle qu'elle va être envoyée au serveur mysql. Tu pourras ainsi vérifier visuellement qu'elle est correcte et faire un copier/coller dans PhpMyAdmin, onglet SQL. Ca te permettra de voir si, comme je le pense, elle n'affecte aucun enregistrement à cause d'un couple id/nomembre inexistant dans la table.
goldrazor06 Posté 27 Octobre 2007 Auteur Posté 27 Octobre 2007 (modifié) Merci beaucoup pour ton intervention. Voici le message renvoyé : UPDATE annonces SET titre='11111', categorie='1', prix=111, quantite=111, description='1111', photo='' WHERE id='' AND nomembre='1' La case id est vide ce qui confirme mes pensées. J'ai pourtant mis un $_GET["id"], mais cela ne recupere pas la valeur inscrite dans la barre d'adresse. pourtant quand je fais un var_dump($_GET); il me detecte bien le numero id mon code : <?php$titre = $_POST["titre"];$categorie = $_POST["categorie"];$prix = $_POST["prix"];$quantite = $_POST["quantite"];$description = $_POST["description"];$photo = $_POST["photo"];$session_id = $_SESSION["id"];$id = $_GET["id"]; $affichform=true; if($_GET['act']=="fin"){ $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=$session_id";mysql_query ($query);echo $query; if($utilisateur=mysql_fetch_object(mysql_query("SELECT * FROM `membres` WHERE `email`='".$_SESSION['email']."'"))){ $erreur="<center>Félicitation, votre annonce est en ligne.</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; ?> Modifié 28 Octobre 2007 par Dudu
goldrazor06 Posté 28 Octobre 2007 Auteur Posté 28 Octobre 2007 Merci a Akis du forum rentabilisez.com pour la solution <?php$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"]; $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=$session_id";mysql_query ($query);echo $query; if($utilisateur=mysql_fetch_object(mysql_query("SELECT * FROM `membres` WHERE `email`='".$_SESSION['email']."'"))){ $erreur="<center>Félicitation, votre annonce est en ligne.</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; ?>
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant