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 :

le fonctionnement de Where IN [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 34
    Par défaut le fonctionnement de Where IN
    bonjour,
    Alors voilà mon soucis. J'ai beau tourner et retourner ce bout de code dans tous les sens, il ne marche pas :
    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
    <?php
    /* Classes/panier.php  
     *  public function getPanier(){
            return array_keys($_SESSION['panier']);*/
     
     require 'Classes/Db.php';
     require 'Classes/panier.php';
    $DB = new Db();
    $panier= new Panier($DB);
    $liste = $panier->getPanier();
    $items = implode(',',$liste);
    var_dump($items);
          echo"<br>";
     
    $produits = $DB->query("SELECT * FROM products WHERE id IN ($items)");
          var_dump($produits);
          echo"<br>";
          var_dump($liste);
          echo"<br>";
     
     
    ?>
    Il est tiré d'un tuto pour créer un site de ecommerce.
    Mon problème c'est ce IN dans ma requête.
    J'arrive a afficher la variable Items : string(11) {11,2....}
    mais lorsque je l'appelle dans ma requete, elle est vide. Du coup, $produit m'affiche : array (0){}
    d'ou vient l'erreur.
    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
    Par défaut
    mais lorsque je l'appelle dans ma requete, elle est vide.
    Quel test te permet de dire ça ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 34
    Par défaut
    salut sabotage.
    Le var_dump() que j'ai fait sur $produit. La variable items est composé d'id de produits.
    le premier var_dump sur $items m'affiche des id.
    en demandant d'afficher avec var_dump() les produits de la tables dont l'id est stocké dans $items grâce a $produits, on devrait avoir des valeurs.
    si mon tableau est vide, je n'ai rien dans $items non?
    ou alors je n'est pas tout compris, et je ne sais pas comment faire le liens entre $items et la table products.

  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
    Par défaut
    si mon tableau est vide, je n'ai rien dans $items non?
    Non ça veut dire que ta méthode query() renvoit un tableau vide.
    Si tu contrôle la chaine de requête dans la méthode, tu verras sûrement qu'elle est normale.

    Le contenu de $items ne se volatilise certainement pas entre la ligne 12 et la ligne 15.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 34
    Par défaut
    oui, il me renvoie un tableau vide, mais ce que je ne comprends pas, c'est que si je mets les id contenues dans $items (.... WHERE id IN (57,2)...), j'obtiens un résultat. Donc, c'est comment est interprété $items qui me pose soucis. Normalement, $items est égale a (57,2) alors pourquoi il ne remplace pas et ne renvoie pas ce qui est dedans

  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
    Par défaut
    Je t'ai dit : il faut contrôler la requête directement dans ta méthode.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 34
    Par défaut
    bon, maintenant ca marche. a force de tester contrôler et refaire, j'ai du enlever ou rajouter un caractère. Ou alors, le navigateur ne se rafraichissait pas (plus probable).

    merci encore sabotage.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonctionnement where EXISTS ?
    Par xpander dans le forum Développement
    Réponses: 2
    Dernier message: 08/01/2009, 13h27
  2. Clause WHERE qui ne fonctionne pas
    Par philippef dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 25/05/2008, 12h40
  3. Réponses: 4
    Dernier message: 15/05/2007, 10h10
  4. where texte <> '' ne fonctionne pas
    Par Fox_magic dans le forum Oracle
    Réponses: 3
    Dernier message: 07/12/2004, 16h03
  5. "where @text" ou @text='nom='julien'' fonctionne p
    Par lord_paco dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/09/2003, 14h37

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