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 :

select multiple à reporter dans une requête [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut select multiple à reporter dans une requête
    Salut à tous,

    Voilà je suis un train de créer un filtre de données en PHP à partir d'une base de donneés mysql. J'ai ainsi un select multiple dans une des mes pages PHP. Je récupère les valeurs de ce select multiple dans une autre page PHP afin de pouvoir les introduire dans une requête mysql avec des Where et &&.
    C'est à dire que je fais un truc ce genre pour récupérer les données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sql_tab="select * from table where project_id='".$_POST['project_id']."'";
     
    for($i=0;$i<count($_POST['severity']);$i++){     
     
      $sql_tab.="|| severity=$_POST['severity'][$i]";
     
    }
    Ca ne fonctionne pas, et en plus je voudrais qu'il y est un ET avant le OR, c'est à dire :

    select * from table where project_id='".$_POST['project_id']."' && (severity=$_POST['severity'][$i1]" || $_POST['severity'][$i2]" ........);

    Voilà si vous avez une idée je suis preneur.

    Merci d'avance.

  2. #2
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    Dans une requête SQL tu dois utiliser AND et OR et non && et ||.

    Essaye aussi de bien mettre les guillements comme il faut partout

    Sinon fais un echo de ta requête pour voir si elle est correcte
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Ouai effectivement c'est ùieux avec des OR et des AND.

    Bon j'ai modifié le truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sql_tab="select * from mantis_bug_table where project_id='".$_POST['project_id']."'";
     
    $sql_tab_select = "";
     
    for($i=0;$i<count($_POST['severity']);$i++){     
    $sql_tab_select.="OR severity='$_POST['severity'][$i]'";
    }
    CA me met toujours une erreur.

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Et c'est quoi l'erreur (à première vue je pense qu'il te manque un espace avant le OR...)

    Au passage pour ta boucle le foreach est bien mieux adapté.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    T'as raison avec le foreach et l'espace avant le OR ça marche.
    PAr contre après je voudrait concatener le résultat obtenu avec la requête initiale avec un truc du genre :

    $sql_tab=$sql_tab." AND $sql_tab_select";

    Et là ça fonctionne pas, ça me renvoie une erreur de syntaxe.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut
    un echo de ton $sql_tab ne te donnerait pas un (...) AND OR (...) par hasard? Donc erreur de syntaxe!

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Si c'est bien le problème. Vous avez pas une idée de la façon dont je pourrais contourner cette erreur de syntaxe?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut
    De différente façons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for($i=0;$i<count($_POST['severity']);$i++)
    {     
    $sql_tab_select.="severity='$_POST['severity'][$i]' OR";
    }
    $sql_tab_select_modif = substr($sql_tab_select, 0, strlen($sql_tab_select)-3);
    $sql_tab=$sql_tab." AND ".$sql_tab_select_modif;

  9. #9
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    OK, ça a l'air nickel. PAr contre quand ça me renvoie juste une erreur de syntaxe sur la ligne :

    $sql_tab_select.="severity='$_POST['severity'][$i]' OR";

    Je vois pourtant pas où est l'erreur.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql_tab_select.="severity='".$_POST['severity'][$i]."' OR";
    Je ne suis déjà pas adepte des variables php dans des chaines, mais en l'occurence en plus on manie un tableau je ne suis pas sur que php interprète la variable correctement.
    Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

    Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"

  11. #11
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Merci à tous, ça a l'air de fonctionner parfaitement.

    A plus

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 19/11/2016, 22h32
  2. fusion de 2 colonnes dans une requête select?
    Par epeichette dans le forum Requêtes
    Réponses: 1
    Dernier message: 04/11/2005, 23h05
  3. Inclure un SELECT dans une requète Update
    Par carolinebelle dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/07/2005, 14h19
  4. C'est possible dans une requête SELECT ?
    Par Kokito dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/04/2005, 16h59
  5. Problème select MAX(annee) dans une requête
    Par grisounette dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 28/10/2004, 17h36

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