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

Requêtes MySQL Discussion :

Filtrer une requete avec une variable array


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut Filtrer une requete avec une variable array
    Bonjour,

    J'ai ce code qui va créé un panier.

    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
    <?php 
    // caddie_add.php... sert à ajouter un produit... 
    session_start(); 
    if(isset($_GET['id'])) 
    { 
        // si on a spécifié un produit anisi qu'une quantité : 
        // on vérifie si un panier existe déja... 
     
        if(session_is_registered('panier') && is_array($panier)) 
        { 
     
            // si le panier existe déja... 
            $nbprod = count($panier); 
            // on compte le nombre d'éléments dans le panier... 
            for($i=0;$i<$nbprod;$i++) 
            { 
                // on fait une boucle qui va passer en revue chaque produit du panier 
                // pour voir si le produit que l'on veut rajouter existe déja 
                if($panier[$i]['id'] == $_GET['id']) 
                { 
                    // le produit existe... 
                    $prodin = "true"; 
                    // inscrit dans une variable que le produit existe... 
                    $prodline = $i; 
                    // et on précise aussi quel est son emplacment dans le caddie 
                } 
            } 
            if(isset($prodin) && $prodin == "true") 
            { 
                // si le produit existe déja... 
                // ...la quantité précédente est effacée... 
                array_splice($panier,$prodline,1); 
                // ...pour laisser place à celle qui le client vient de rajouter... 
                array_push($panier,$_GET['id']); 
            } 
            else 
            { 
                // sinon on rajoute le produit dans le panier tt simplement... 
                array_push($panier,$_GET['id']); 
            }     
            header("Location: panier.php"); 
            // on peut faire une redirection vers une page qui va faire la liste de tous les produits... 
        } 
        else 
        { 
            // si le panier n'existe pas... 
            session_register('panier'); 
            // on le créer... 
            $panier = array (); 
            // on rajoute le produit et la quantité... 
            array_push($panier,$_GET['id']); 
            // le panier à été crée... 
            header("Location: panier.php"); 
            // on peut faire une redirection vers une page qui va faire la liste de tous les produits... 
        } 
    } 
    else 
    { 
        // les variable prod et qtte n'existent pas... 
        header("Location: index.php"); 
    } 
    ?>




    Jai ce code qui va afficher le panier

    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
    connectionBDD();
     
    	$liste = "SELECT id, titre FROM films  WHERE id =$panier  "; 
    $hliste = @mysql_query($liste); 
     
     
     
     
             while($resultliste = mysql_fetch_array($hliste)  ) 
             { 
                echo $resultliste['titre']; 
     
    } 
     
     
     
     
     
    deconnectionBDD();

    Ce que je voudrais cest filtrer les resultats en fonction des elements du panier dans cette requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $liste = "SELECT id, titre FROM films  WHERE id =$panier  ";
    Mais comme panier comprends plusieurs valeurs, ca ne marche pas.
    Jai deja effectué des recherches mais je nai rien trouvé qui maide.

    MErci

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut Re: Filtrer une requete avec une variable array
    Bonjour,

    Tu envoies au serveur MySQL une requête du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id, titre FROM films  WHERE id =<un tableau PHP>
    Bien entendu MySQL ne peut pas comprendre cette requête (d'ailleurs il te suffira de faire un echo $liste pour voir que quelque chose ne tourne pas rond).

    Une requête valide serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id, titre FROM films  WHERE id =1 OR id = 2 OR id = 3 OR ...
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id, titre FROM films  WHERE id IN (1, 2, 3, ...)
    Il te faut donc manipuler ton tableau en PHP afin de construire et envoyer une requête SQL de ce type...

  3. #3
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut
    oui mais je nai pas les valeurs, il faut quil les filtres en fonction du panier, donc en fonctio du tableau construit.

    J'essai de trouver une requete filtree a partir du tableau mais je narrive pas à trouver la formule!!!!!

    Javais compris le probleme mais je ne trouve pas la solution.

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...WHERE id IN (".implode(', ',$panier).")

  5. #5
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut
    merci bcp ca marche parfait.
    Jai cherché un moment.

  6. #6
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut
    Et si je met ca pour rajouter des valeurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array_push($panier,array("id" => $_GET['id'],"qtte" => 1));
    au lieu de ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array_push($panier,$_GET['id']);

    Comment utiliser le implode pour quil ne prenne que l'"id"?

    Merci

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    tu peux pas à moins de te faire ta procédure qui parse ton panier et qui te renvoie le IN(,,,) qui va bien, comme te l'a dit Maximilian

  8. #8
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut
    jai rien compris.

    "A moins de faire ta procedure..."

    Comment fais ton cette procédure?

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Faire une requete avec une jointure ramenant une base SQL et un ebase Oracle
    Par Clement M dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 22/12/2014, 14h13
  3. [MySQL] requete dans une table avec une varible d'une autre table
    Par kogoi dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 03/11/2011, 15h24
  4. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  5. Réponses: 4
    Dernier message: 15/10/2009, 13h33

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