Aller au contenu

Sujets conseillés

Posté

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']."'"));
?>

Posté

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

Posté

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.

Posté (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:

scr10cc27dcg7.png

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é par goldrazor06
Posté

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.

Posté (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é par Dudu
Posté

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...