IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème sur une requête SQL


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 22
    Points
    22
    Par défaut Problème sur une requête SQL
    Bonsoir,

    Je suis actuellement en plein projet de fin d'année. Le but de ce projet est de faire un site web permettant à des client d'acheter des produit.

    J'arrive à la fin du projet mais je rencontre un problème au moment de lister les produits de la commande de mon client.

    J'ai réussi à afficher tous les nom des produits de la commande en cours.

    Par contre j'ai un problème pour afficher la quantité.

    Je récupère la quantité de chaque produits de la commande avec un SELECT, ensuite je fais un test avec un echo pour afficher les valeur passé dans ma variable, ce qui me renvoi donc toutes les quantité de chacun de mes produits.
    Je viens de vérifier, toute mes quantités correspondent bien à mes valeurs dans ma base de données.

    Maintenant mon problème c'est que je n'arrive pas à utiliser ma variable $donnees['quantité'] un peu plus bas dans mon code.

    Voici la partie inintéressante de mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    <?php
    	
    	/*echo "<pre>";
    		print_r($_SESSION);
    		echo "</pre>";*/
    		
    //Récupération de la référence de la commande ou l'id du client est egal  à l'id du client actuellement connecté 
    
    		$id_client = $_SESSION['id'];
    		$req = $bdd->query('SELECT référence FROM commande WHERE id_client = ' . $id_client. " AND etat = 0 ");
    		$refcom = $req->fetchcolumn();
    		echo "<p>Ref. commande :" . $refcom . "</p>";
    		// $req->closeCursor();
    
    //Récupération de l'id des produit correspondant à la commande en cours de l'utilisateur connecté
    	$req = $bdd->prepare('SELECT id_produit, quantite FROM `association-produit-commande` WHERE ref_commande = ? ');
    	$req->execute(array($refcom));
    	$id_produit = $req->fetchAll();
    	
    //Récupération de la quantité pour chaque produit
    	$req = $bdd->prepare('SELECT quantite FROM `association-produit-commande` WHERE ref_commande = ?');
    		$req->execute(array($refcom));
    		while ($donnees = $req->fetch())
    			
    		echo"<p>" .$donnees['quantite'].  "</p>";
    	
    	
    	//echo $donnees['quantite'];
    ?>	
    	<table>
       <tr>
           <th>Produit</th>
           <th>Quantite</th>
       </tr>
       
    <?php
    	
    	foreach($id_produit as $id )
    	{
    		//print_r($id);
    		
    		
    		$req = $bdd->prepare('SELECT nomCommercial FROM `produit` WHERE id =  ? ');
    		$req-> execute(array($id['id_produit']));
    		$nom = $req->fetchColumn();
    		
    		// problème ligne 109 
    		
    		?>
    		
    		<tr>
    		<td><?php echo $nom; ?></td>					
    		<td><?php echo $donnees['quantite']; ?></td> //Mon problème est ici, la variable $donnees['quantité'] n'affiche rien
    		</tr>
    
    	
    		<?php	
    		
    		//echo "<p>" .$id['id_produit']. "</p>";
    		//echo "<p>" .$nom. "</p>";
    		
    	}
    ?>
    
    ?>
    Est ce que quelqu'un saurait me dire le problème ? J'ai l'impression que le problème survient seulement si ma variable se trouve dans le foreach.

    Et voici une image de ma page pour que vous compreniez.

    Nom : siteweb.png
Affichages : 200
Taille : 127,7 Ko

    C'est bête parce que j'ai pratiquement fini et ça me bloque.

    Merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu ne trouves pas que tes deux requêtes se ressemblent un peu trop pour que ça vaille le coup d'en avoir deux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req = $bdd->prepare('SELECT id_produit, quantite FROM `association-produit-commande` WHERE ref_commande = ? ');
    $req = $bdd->prepare('SELECT quantite FROM `association-produit-commande` WHERE ref_commande = ?');
    Au passage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = $bdd->prepare('SELECT nomCommercial FROM `produit` WHERE id =  ? ');
    Tu devrais avoir une jointure entre "produits " et "association-produit-commande" dans la requête précédente et surtout pas une sous-requête dans une boucle.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Justement j'avais commencé à faire seulement la première requête (que j'ai ensuite oublié de modifié pour enlever "quantite") mais je ne parviens pas à récuperer mes valeur quantite et nom avec une seule requête.

    Donc si je fais ma requête comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
            $req = $bdd->prepare('SELECT id_produit, quantite FROM `association-produit-commande` WHERE ref_commande = ? ');
    	$req->execute(array($refcom));
    	$id_produit = $req->fetch();
    	echo"<p>" .$donnees['quantite'].  "</p>";
    ?>

    Cela me renvoi une erreur :
    Notice: Undefined variable: donnees in C:\wamp\www\Siteweb\panier.php on line 91
    Alors comment faire pour la faire fonctionner tout d'abord ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Regarde un peu ton code : d'ou viendrait ce $donnees ?
    Le retour de ton fetch c'est $id_produit.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Ah oui effectivement, à force de tout faire dans la précipitation...

    J'imagine qu'il vaut mieux que je refasse tout avec des jointures ?

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tout refaire c'est un peu grand, il faut seulement rassembler tes 3 requêtes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Oui c'est ce que je voulais dire.

    Ok donc je fais ça parce que je m'en sors pas la.

    Je reviendrai ici si je n'y arrive pas.

    Merci

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Re bonjour,

    J'ai donc essayé de faire une jointure interne à la place de mes nombreuses requêtes SQL.

    J'ai tout d'abord essayé de récupérer la référence de la commande du client actuellement connecté.

    Voila mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $req = $bdd->query('SELECT tbl_user.id, commande.id_client
    	FROM commande
    	INNER JOIN tbl_user
    	ON commande.id_client = tbl_user.id
    	WHERE tbl_user.id = ' . $_POST['pseudo'] .");
    	');
    Si j'enlève la partie WHERE, cela fontionne et me renvoi la jointure entre les deux tables.
    Maintenant ce que je voudrai c'est que ça corresponde à la personne connecté. Donc j'ai rajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE tbl_user.id = ' . $_SESSION['pseudo'] .");
    Mais j'ai un problème avec la concaténation.
    Quelqu'un saurai t'il m'aider ?

    Merci

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si c'est un pseudo, surtout venant de $_POST, il faut faire une requête préparée.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Effectivement j'ai essayé mais ça ne fonctionne toujours pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $reponse = $bdd->prepare('SELECT tbl_user.id AS tbl_id, commande.id_client AS com_id
    	FROM commande
    	INNER JOIN tbl_user
    	ON commande.id_client = tbl_user.id
    	WHERE tbl_user.id = "'.$_SESSION['pseudo'].'"');
    	while($client = $reponse->fetch())
    	{
    	print_r ($client);
    	}
    Ca ne me renvoi rien.

    Pourtant dans l'après midi avec le même code, ça avait fonctionné une fois et après plus rien.

    Et si je tape la commande en dur dans phpmyadmin et que met par exemple 3 après le WHERE ça me sort bien ce qu'il faut.

Discussions similaires

  1. Probléme sur une requête SQL
    Par ggoncalves dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/10/2012, 15h45
  2. Problème sur une requête SQL
    Par Jezlife dans le forum Bases de données
    Réponses: 8
    Dernier message: 18/03/2012, 10h35
  3. Problème sur une requête SQL
    Par juju05 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 20/06/2010, 18h20
  4. Problème sur une requête SQL (PL/SQL)
    Par goofyrocks dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/01/2009, 17h33
  5. Problème de SUM sur une requête SQL
    Par Lapicure dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 12/06/2007, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo