Problème de variables. Merci pour votre aide.
totorom
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous.
Donc pour ma pars, j'ai eu beau chercher depuis plusieurs jours sur le fofo et sur google, j'ai du mal a trouver pourquoi et comment faire pour que ma requete fonctionne.
Donc je fais actuellement une petite boutique qui vendrait des livres.
D'un côté, j'ai donc le vendeur et de l'autre, l'acheteur.
Côté BDD, j'ai deux tables. Une table membres et une table livre_en_ventes.
Les acheteurs ont la possibilité de voter pour un livre qu'il ont acheté et aimé.
Le problème vient de là.
L'acheteur a donc une page Liste.php où s'affiche la liste des livres qu'il a acheté et aimé/detesté.
Il a donc la possibilité de voter positif si il a aimé le livre, ou de voter négatif si le livre ne lui a pas plus.
En cliquant sur le bouton de vote (positif ou négatif car il y a deux boutons), le traitement renvoi sur le page Liste_votes.php
Sur cette page, il y a 3 requetes qui se suivent Celle-ci s'enregistre bien en base de données :
Celle-ci par contre n'enregistre pas du tout :
Et celle-ci fonctionne impec :
Je comprends bien que le problème doit provenir de la variable $user_vendeur que je n'arrive pas a implanter sur la page Liste_votes.php, pour que celle-ci fonctionne, mais comment ?
J'ai essayé en faisant des testes en get ou post mais j'ai beaucoup de mal a comprendre ou a trouver le code avec toutes les infos que je trouve à droite ou à gauche sur le web, je me mélange les pinceaux.
Quelqu'un pourrait-il donc me dire ou me donner juste le code pour que ma deuxième requete fonctionne s'il vous plait ?
Merci par avance.
Je mets le code complets des deux fichiers ci-dessous :
page Liste.php
Page Liste_votes.php
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
.
Donc pour ma pars, j'ai eu beau chercher depuis plusieurs jours sur le fofo et sur google, j'ai du mal a trouver pourquoi et comment faire pour que ma requete fonctionne.
Donc je fais actuellement une petite boutique qui vendrait des livres.
D'un côté, j'ai donc le vendeur et de l'autre, l'acheteur.
Côté BDD, j'ai deux tables. Une table membres et une table livre_en_ventes.
Les acheteurs ont la possibilité de voter pour un livre qu'il ont acheté et aimé.
Le problème vient de là.
L'acheteur a donc une page Liste.php où s'affiche la liste des livres qu'il a acheté et aimé/detesté.
Il a donc la possibilité de voter positif si il a aimé le livre, ou de voter négatif si le livre ne lui a pas plus.
En cliquant sur le bouton de vote (positif ou négatif car il y a deux boutons), le traitement renvoi sur le page Liste_votes.php
Sur cette page, il y a 3 requetes qui se suivent Celle-ci s'enregistre bien en base de données :
mysql_query("UPDATE membres set votes_positif_envoyes=votes_positif_envoyes+1 where user='".$_SESSION['user']."'") or die("Erreur 01");
Celle-ci par contre n'enregistre pas du tout :
mysql_query("UPDATE membres set votes_positif_recus=votes_positif_recus+1 where user='$user_vendeur'") or die("Erreur 02");
Et celle-ci fonctionne impec :
mysql_query("UPDATE livre_en_ventes set vote=1 where id='$id'") or die("Erreur vote positif 1");
Je comprends bien que le problème doit provenir de la variable $user_vendeur que je n'arrive pas a implanter sur la page Liste_votes.php, pour que celle-ci fonctionne, mais comment ?
J'ai essayé en faisant des testes en get ou post mais j'ai beaucoup de mal a comprendre ou a trouver le code avec toutes les infos que je trouve à droite ou à gauche sur le web, je me mélange les pinceaux.
Quelqu'un pourrait-il donc me dire ou me donner juste le code pour que ma deuxième requete fonctionne s'il vous plait ?
Merci par avance.
Je mets le code complets des deux fichiers ci-dessous :
page Liste.php
<? include("config.php"); if (!session_is_registered("password") || !session_is_registered("user")) { header(); include("fichier_nonconnect.php"); footer(); } else { header(); ?> <p align="center"> Blabla... <br> Merci.</p><br> <table width="600" style="border:2px solid #4fdcd6; margin:auto; text-align:center;"> <tr style="background:#4fdcd6; font-weight:bold; color:#ffffff;"> <td>Votre pseudo</td> <td>Pseudo du vendeur</td> <td>Date d'achat</td> <td>Type de livre acheté</td> <td>Livre</td> <td>Prix de vente</td> <td>Votez livre positif</td> <td>Votez livre négatif</td> </tr> <? $exec=mysql_query("select id,id_type,livre,date,heure,user_vendeur,prixdulivre,nom,user_acheteur from livre_en_ventes where user_acheteur='".$_SESSION['user']."' AND vote='0'"); while ($result = mysql_fetch_array ($exec)) { ?> <tr style="background:#ffffff;"> <td><p><? echo $result['user_acheteur'] ?></p></td> <td><p><? echo $result['user_vendeur'] ?></p></td> <td><p><? echo $result['date']." à ".substr($result['heure'],0,5) ?></p></td> <td><p><? echo $result['nom'] ?></p></td> <td><p><? echo $result['livre'] ?></p></td> <td><p><? echo $result['prixdulivre'] ?></p></td> <form name="form1" method="POST" action="Liste_votes.php?act=positif&id=<? echo $result['id']; ?>&user=<? echo $result['user_acheteur']; ?>&vendeur=<? echo $result['user_vendeur']; ?>"> <td> <input type="Submit" name="Submit" value="positif"> </td> </form> <form name="form2" method="POST" action="Liste_votes.php?act=negatif&id=<? echo $result['id']; ?>&user=<? echo $result['user_acheteur']; ?>&vendeur=<? echo $result['user_vendeur']; ?>"> <td> <input type="Submit" name="Submit" value="negatif"> </td> </form> </tr> <? } ?> </table> <? } footer(); ?>
Page Liste_votes.php
<? include ("config.php"); $Submit = $_POST['Submit']; $user_acheteur=$_POST['user_acheteur']; //On récupère les données envoyées $user_vendeur=$_POST['user_vendeur']; //On récupère les données envoyées if ($act=="positif") { mysql_query("UPDATE membres set votes_positif_envoyes=votes_positif_envoyes+1 where user='".$_SESSION['user']."'") or die("Erreur 01"); mysql_query("UPDATE membres set votes_positif_recus=votes_positif_recus+1 where user='$user_vendeur'") or die("Erreur 02"); mysql_query("UPDATE livre_en_ventes set vote=1 where id='$id'") or die("Erreur vote positif 1"); echo "<p align='center'><strong>Vote <font color='#2d902d'>POSITIF</font> envoyé !<br> Merci.<br></strong></p>"; echo"<META HTTP-EQUIV='refresh' CONTENT='5; URL=Liste.php'>"; } if ($act=="negatif") { mysql_query("UPDATE membres set votes_negatif_envoyes=votes_negatif_envoyes+1 where user='".$_SESSION['user']."'") or die("Erreur 03"); mysql_query("UPDATE membres set votes_negatif_recus=votes_negatif_recus+1 where user='$user_vendeur'") or die("Erreur 04"); mysql_query("UPDATE livre_en_ventes set vote=2 where id='$id'") or die("Erreur vote negatif 2"); echo '<p align="center"><strong>Vote <font color="#FF0000">NEGATIF</font> envoyé !<br> Merci.<br></strong></p>'; echo"<META HTTP-EQUIV='refresh' CONTENT='5; URL=Liste.php'>"; } ?>
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
.
A voir également:
- Problème de variables. Merci pour votre aide.
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp - Forum Microsoft Office
- Vérifiez la variable d'environnement TEMP. QUE FAIRE ????? ✓ - Forum Microsoft Office
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
- Dans son restaurant, igor utilise une application pour gérer les réservations. dans le schéma (structure) de la base de données de l’application représenté ci-dessous : de quoi « telephone » est-il le nom ? de quoi « reservations » est-il le nom ? associez chaque terme avec un attribut, une donnée, un enregistrement, une table, une valeur ou une variable. - Forum Webmastering
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
3 réponses
Bonjour,
Déjà... il faut récupérer "proprement" les variables AVANT de les utiliser.
Pour se faire.. tu peux utiliser l'écriture TERNAIRE (sorte de IF) et s'assurer que les variables Existent avec la fonction ISSET ou !Empty
ce qui donnerait :
Ensuite... attention... tu utilises l'ancienne extension mysql. celle-ci est considérée comme obsolète. Je t'invite à passer à la PDO.
Voir ceci : https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
Et enfin... il faut que tu ajoutes un peu de debug à ton code.. histoire d'essayer de comprendre où ça bloque.
Par exemple (sans passer à PDO.. ) :
Par contre... il y a des variables dans ton code qui sortent de nul part ... $act ... $id ....
D'où viennent-elles ? Comment sont elles initialisées ? (elles viennent de ton fichier config.php ?? )
Cordialement,
Jordane
Déjà... il faut récupérer "proprement" les variables AVANT de les utiliser.
Pour se faire.. tu peux utiliser l'écriture TERNAIRE (sorte de IF) et s'assurer que les variables Existent avec la fonction ISSET ou !Empty
ce qui donnerait :
//Récupération des variables // $variable = (condition) ? valeur si vraie : valeur si faux ; $Submit = isset($_POST['Submit'])?$_POST['Submit']:NULL; $user_acheteur=!empty($_POST['user_acheteur'])? $_POST['user_acheteur'] : NULL; //On récupère les données envoyées $user_vendeur=!empty($_POST['user_vendeur'])?$_POST['user_vendeur']:NULL; //On récupère les données envoyées
Ensuite... attention... tu utilises l'ancienne extension mysql. celle-ci est considérée comme obsolète. Je t'invite à passer à la PDO.
Voir ceci : https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
Et enfin... il faut que tu ajoutes un peu de debug à ton code.. histoire d'essayer de comprendre où ça bloque.
Par exemple (sans passer à PDO.. ) :
<?php //utilisation de la balise PHP complète au lieu de l'abrégée <? require_once "config.php"; //Récupération des variables // $variable = (condition) ? valeur si vraie : valeur si faux ; $Submit = isset($_POST['Submit'])?$_POST['Submit']:NULL; $user_acheteur=!empty($_POST['user_acheteur'])? $_POST['user_acheteur'] : NULL; //On récupère les données envoyées $user_vendeur=!empty($_POST['user_vendeur'])?$_POST['user_vendeur']:NULL; //On récupère les données envoyées $user = !empty($_SESSION['user']) ? $_SESSION['user'] : NULL; if($Submit){ //utilisation d'un SWITH au lieu de IF/ELSE.. switch($act){ case "positif": mysql_query("UPDATE membres set votes_positif_envoyes=votes_positif_envoyes+1 where user='".$user."'") or die("Erreur 01"); mysql_query("UPDATE membres set votes_positif_recus=votes_positif_recus+1 where user='$user_vendeur'") or die("Erreur 02"); mysql_query("UPDATE livre_en_ventes set vote=1 where id='$id'") or die("Erreur vote positif 1"); echo "<p align='center'><strong>Vote <font color='#2d902d'>POSITIF</font> envoyé !<br> Merci.<br></strong></p>"; echo"<META HTTP-EQUIV='refresh' CONTENT='5; URL=Liste.php'>"; break; case "negatif": mysql_query("UPDATE membres set votes_negatif_envoyes=votes_negatif_envoyes+1 where user='".$user."'") or die("Erreur 03"); mysql_query("UPDATE membres set votes_negatif_recus=votes_negatif_recus+1 where user='$user_vendeur'") or die("Erreur 04"); mysql_query("UPDATE livre_en_ventes set vote=2 where id='$id'") or die("Erreur vote negatif 2"); echo '<p align="center"><strong>Vote <font color="#FF0000">NEGATIF</font> envoyé ! <br> Merci.<br></strong></p>'; echo"<META HTTP-EQUIV='refresh' CONTENT='5; URL=Liste.php'>"; break; default: //aucune valeur correspondante.... echo "<br> Erreur : variable act inconnue : ".$act; break; }//fin du switch }else{ echo "<br> Erreur : la variable submit n'existe pas !<br>"; echo "<pre>"; print_r($_POST); echo "</pre>"; } ?>
Par contre... il y a des variables dans ton code qui sortent de nul part ... $act ... $id ....
D'où viennent-elles ? Comment sont elles initialisées ? (elles viennent de ton fichier config.php ?? )
Cordialement,
Jordane
Je vois juste une erreur dans ton code PHP :
Il doit y avoir un point virgule à la fin, j'ai déjà rencontré des problèmes moi-même à cause de l'utilisationdu <?, à la place mieux vaut utiliser le <?php
C'est bête mais peut-être que c'est ça, sinon je vois que tu utilises d'anciennes fonctions mysql_query , elles fonctionnent toujours mais elles sont vieillottes et vont disparaitre dans quelques années, elles ont été remplacées par mysqli_query. Il y a juste un i à rajouter.
<? echo $result['user_acheteur'] ?>
Il doit y avoir un point virgule à la fin, j'ai déjà rencontré des problèmes moi-même à cause de l'utilisationdu <?, à la place mieux vaut utiliser le <?php
<?php echo $result['user_acheteur']; ?>
C'est bête mais peut-être que c'est ça, sinon je vois que tu utilises d'anciennes fonctions mysql_query , elles fonctionnent toujours mais elles sont vieillottes et vont disparaitre dans quelques années, elles ont été remplacées par mysqli_query. Il y a juste un i à rajouter.
Merci geekat pour ton idée, mais non ça ne fonctionne toujours pas.
En faite lorsque l'acheteur clic sur la note "positif" ou "négatif", le lien du navigateur donne bien l'url avec l'id , l'user_acheteur et l'user_vendeur, mais lorsque ça arrive sur la page Liste_votes.php pour executer les requêtes, seules la ligne 28 et 31 fonctionnent et s'enregistrent bien.
Pas l'update avec $user_vendeur.
Donc j'ai bien le livre qui est noté dans la table livre_en_ventes, j'ai bien la note+1 pour l'acheteur, celui qui donne la note positive ou négative, mais le vendeur n'a rien du tout.Pas de note.
Donc le problème provient en toute logique de ma variable $user_vendeur je pense.
En faite lorsque l'acheteur clic sur la note "positif" ou "négatif", le lien du navigateur donne bien l'url avec l'id , l'user_acheteur et l'user_vendeur, mais lorsque ça arrive sur la page Liste_votes.php pour executer les requêtes, seules la ligne 28 et 31 fonctionnent et s'enregistrent bien.
Pas l'update avec $user_vendeur.
Donc j'ai bien le livre qui est noté dans la table livre_en_ventes, j'ai bien la note+1 pour l'acheteur, celui qui donne la note positive ou négative, mais le vendeur n'a rien du tout.Pas de note.
Donc le problème provient en toute logique de ma variable $user_vendeur je pense.