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 :

[SQL] Requete contenant plusieurs conditions


Sujet :

PHP & Base de données

  1. #1
    Membre chevronné Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Par défaut [SQL] Requete contenant plusieurs conditions
    Bonjour,

    je souhaite effectuer une requête qui contient plusieurs conditions where.

    je dois chercher des éléments par rapport à :
    -Jour de la demande
    -Mois de la demande
    -Annee de la demande
    -Heure de la demande
    -Demandeur

    Toutes ces conditions peuvent être combinées. (donc imaginez le nombre de requêtes que ça peut faire...)

    j'aimerais simplifier la tâche en faisant une requête générale du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM demande WHERE DayOfYear(Date)=..., Month(Date)=..., Year(Date)=..., Hour(Date)=..., login=... ;
    Mais si je ne vois pas comment faire (l'utilisateur peut très bien faire une recherche sur un seul champs, comme sur plusieurs)

    pour le login, je pense faire : login LIKE %$login%

    mais pour le reste

    Merci d'avance

  2. #2
    Expert confirmé 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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE champ1 = 'truc' AND champ2 = 'muche' OR champ3 = 'foo'

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 151
    Par défaut
    Tu peux très bien utiliser plusieurs conditions sur le même champs ou bien sur des champs différents.
    - where condition1 and condition2: signifie que les deux conditions doivent etre acceptées.
    - where condition1 or condition2: signifie que soit condition1 est vérifiée, soit condition2 est vérifiée, soit les deux em même temps.

  4. #4
    Membre chevronné Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Par défaut
    Bonsoir,

    Ai-je bien compris ton problème.

    Un utilisateur peut sélectionner de zero à xx champs sur le(s)quel(s) il désire effectuer la clause where de ta requête??

    Si c'est cela tu pourrais utiliser des checkbox et quand tu les récupère après le submit, tu construis ta requête petit à petit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $req="select * from demande where ";
    if (isset($mois))
    $req .= "month(date)=\"".$mois."\" and";
    if (isset($annee))
    $req .= "year(date)=\"".$annee."\" and ";
    ...
    et ainsi de suite en n'oubliant pas de retirer le dernier " and ".
    Il faudra aussi vérifier qu'il y a au moins une clause where en testant les 6 derniers caractères de la requête si ils sont = à "where " alors il faut les supprimer.

  5. #5
    Membre chevronné Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Par défaut
    mué boff
    je pensais plus à une astuce qui permettait en une seule requete de faire tout ça ;-)
    style un tit like qlq chose mais bon ... je crois que ce sera pas faisable

  6. #6
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    SELECT * FROM demande WHERE DayOfYear(Date)=..., Month(Date)=..., Year(Date)=..., Hour(Date)=..., login=... ;
    D'après ce que j'ai vu pour le demandeur c'est mort il te faut une condition.

    Par contre pour l'histoire de la date y'à peut être moyen de s'arranger.

    Si ce n'est pas du between que tu veux faire, pour quoi ne pas faire un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $jour = "%";
    if( isset($_get["jour"]) )
    {
    $jour = $_get["jour"];
    }
    ..ect pour le mois, l'année, l'heure 
     
    $sql = "SELECT * FROM toto WHERE `date` LIKE '$annee-$mois-$jour $heure:%:%' ";
    comme cela si le mec choisi l'annee 2005 ta requete devient :
    SELECT * FROM toto WHERE `date` LIKE '2005-%-% %:%:%

    Pour les trucs à 15 heures du mois de décembre tu aurais :
    SELECT * FROM toto WHERE `date` LIKE '2005-12-% 15:%:%

    Je trouve cela un peu bancale mais la comme ca à l'air de fonctionner.

  7. #7
    Membre chevronné Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Par défaut
    ah ué super ton idée, j'essai ça demain !!
    je voyais pas comment formulaire !!
    merci beaucoup

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

Discussions similaires

  1. requete avec plusieurs conditions
    Par louis85 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/05/2008, 10h50
  2. [SQL] Pb avec une requete et plusieurs conditions
    Par syl2042 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 04/09/2007, 12h02
  3. [SQL] Requete sur plusieurs tables
    Par Emotion dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 24/08/2007, 19h38
  4. [SQL] SQL Requete sur plusieurs tables/traitement particulier
    Par fluojet dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/02/2007, 19h59
  5. Réponses: 1
    Dernier message: 06/12/2006, 18h25

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