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 :

[php5] recherche multi-critère [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Inscrit en
    Février 2007
    Messages
    327
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 327
    Points : 127
    Points
    127
    Par défaut [php5] recherche multi-critère
    salut tous le monde,
    j'ai une function php pour rechercher dans une table

    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
    function r($table,$i1,$i2,$i3,$i4)
    {
    for $i=$i1 to $i max{
    $sql = "SELECT * FROM $table WHERE $tab[$i]=$ta[$i]"; 
    $req = mysql_query($sql);
    $res = mysql_num_rows($req); 
     
    if($res!=0){
    $r=1;
    exit for;
    }
    else{
    $r=0
    } 
    }
    }
    le probleme c'est que le nombre de $i et variable parfois 1 parfois 3 ou 4


    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
    Je crois que tu t'es trompé de langage
    De plus tu ne nous aides pas a comprendre ton code avec $i2, $i3, $tab, $ta, $res, $r ...

    Si ton but est d'ajouter des criteres a une requete tu peux faire un truc dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $tblCriteres[] = array("champ"=>toto, "valeur"=>45646);
    $tblCriteres[] = array("champ"=>titi, "valeur"=>"ABCDe");
     
    $sql = "SELECT * FROM $table WHERE ";
    foreach ($tblCriteres as $n=>$critere) {
         $sql .= $critere['champ'] . '="' . $critere['valeur'] . '"';
         $n <= count($tblCriteres) - 1 ? $sql .= ' AND ';
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 106
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
         $n <= count($tblCriteres) - 1 ? $sql . ' AND ';
    Désolée de m'immiscer, mais cette partie-là m'intéresse. Je crois comprendre en fronçant les neurones que cette ligne signifie que l'on rajoute " AND " à la requête seulement si ce n'est pas la dernière entrée du tableau.
    Ce qui me fait me questionner, c'est la façon dont c'est écrit. Moi j'aurai mis un "if(...) {...}" et je comprends pas comment c'est possible sans :p

    Mais là, je suis impressionnée et j'aimerai comprendre, sans vouloir toutefois dévier le sujet !
    Merci

  4. #4
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Bonjour,

    en effet, c'est pareil que if.
    tu peux aussi faire :

    condition ? action si c'est vrai : action si c'est faux.

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo ($var == 2) ? "var vaut 2" : "var ne vaut pas 2";
    c'est pareil que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if ($var == 2) {
      echo "var vaut 2";
    } else {
      echo "var ne vaut pas 2";
    }

    Gillou

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 106
    Points : 79
    Points
    79
    Par défaut
    J'adore !! C'est propre et pro
    Merci pour la réponse, ça risque fort de me servir souvent !
    Sur ce j'arrête de dévier le sujet

  6. #6
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Attention à ne pas abuser de cette syntaxe.
    Ca prend moins de ligne mais ca n'est pas plus rapide à éxécuter.

    Si ton code est destiné à être lu par d'autre, je trouve que c'est parfois moins lisible.
    Donc pour des éléments qui ne sont pas essentiels à la compréhension du déroulement du script c'est bien. C'est le cas dans ce que propose Sabotage.

    Par contre il ne faut pas l'utliser pour des conditions ou des boucles plus importantes. Si il y en a trop, ca devient vite illisible.

    Ca n'est qu'un point de vu...

    Gillou.

  7. #7
    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
    LeGilou a parfaitement expliqué : la forme ternaire est souvent plus difficile a lire et est moins performante mais par contre elle prend moins de place dans le code.
    Donc quand je veux placer une condition discrète, il m'arrive de l'utiliser.

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

Discussions similaires

  1. [MySQL] Recherche multi-critères ou un seul
    Par jack1234 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/12/2005, 09h56
  2. Recherche multi-critères
    Par PAUL87 dans le forum Access
    Réponses: 66
    Dernier message: 13/12/2005, 13h12
  3. problème SQL avec le tutoriel recherche multi critère
    Par qbihlmaier dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/12/2005, 20h33
  4. problème avec résultat de recherche multi-critères
    Par audrey_desgres dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2005, 12h00
  5. Procédure stockée: recherche multi-critères
    Par biroule dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 01/09/2004, 17h02

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