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 :

Recherche multi-critères ou un seul [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 39
    Points : 20
    Points
    20
    Par défaut Recherche multi-critères ou un seul
    Bonjour,

    j'ai fait un formulaire de recherche, jusque là tout va bien.
    Mais j'aimerai l'améliorer légérement, en permettant à l'utilisateur de choisir son domaine de recherche via ce formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <form action="resultat.php" method="Post"> 
    <input name="recherche" size="50">
    <select name="type">
    <option value="tout" selected>tout</option>
    <option value="groupes">Groupes</option>
    <option value="chroniques">Chroniques</option>
    <option value="reports">Live Reports</option>
    <option value="agenda">Agenda</option>
    <option value="mp3">MP3</option>
                                                </select>
    <input type="submit" value="Ok" onclick="this.value='Recherche en cours...'"> 
    </form>
    Jusque là pas de problèmes !

    Mais c'est après que ça se corse. Je ne sais pas comment agencé ma page "resultat.php"

    Dois je faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if ( $type == "tout") {
    puis tous mes codes un par un un
    de même pour chaque type

    (dans ce style là :
    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
    // on recherche un label
    $sq3 = "select * from chronique where label like '%$recherche%'"; 
     
    // on execute la requête SQL. 
    $result3 = mysql_db_query('soulknot2',$sq3); 
    $totalRows_tab_label = mysql_num_rows($result3);
    if ($result3) { 
    if (mysql_num_rows($result3) == 0) { 
    } else { //sinon?>
            <p class="big"><B>Il y a <?php echo $totalRows_tab_label ?> chroniques de ce label : </B></p>
            <?php while($row_label = mysql_fetch_array($result3)) { // on passe le texte ?>
     
     
            <a href="chronique.php?id=<?php echo $row_label['id']; ?>"><img src="cover/<?php echo $row_label['pochette']; ?>" width="100" height="100" alt="<?php echo $row_label['groupe']; ?> - <?php echo $row_label['album']; ?>" border="0"></a> 
     
     
      <?php }
    }
    }
    Ou alors existe t'il un moyen de simplifier le tout et de réduire le nombre de requêtes ?

    Merci d'avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    Ou alors faut'il que je fasse quelque chose dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    switch ($_GET["type"]) {
             case Chroniques : {
               // on recherche un label 
    $sq3 = "select * from chronique where label like ' $recherche%'";             
     
    [...]
     
    break;
            }
    :

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    je n'ai pas tout lu mais ta seconde proposition devrait globalement fonctionner, sauf que
    • dans ton formulaire, ton action="post", donc tu dois faire ton switch avec $_POST en non $_GET
    • si value = "chronique" avec un petit c, le case de ton switch doit également l'être, et pas avec une majuscule. Le blabla dans ta form ne compte pas. Seul compte le value
    • et dans ce cas, chronique n'est ni une variable ni une constante, mais du texte. Dans ton switch case, il doit donc se trouver entre guillemets
    • en lisant ton select, j'en déduis que chronique est une table, puisque tu fais un from chronique. Je suppose qu'il en est de même pour groupes, reports, etc. Tu devrais donc pouvoir faire un $sq3 = dépendant de cette variable et ne pas être obligé de faire un switch, mais c'est plus compliqué et commence par les points précédents
    • si chacune de ces rubriques est une table séparée, tu devras faire une requête multi-table pour l'option "tous"... Il serait sûrement plus simple d'avoir une seule table avec un champ comprenant la rubrique, et de faire un where sur recherche et rubrique, et je dirais, commence par ce point-ci, car tu pourras supprimer ton switch...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    Thanks

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

Discussions similaires

  1. Recherche multi-critères
    Par PAUL87 dans le forum Access
    Réponses: 66
    Dernier message: 13/12/2005, 12h12
  2. 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, 19h33
  3. 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, 11h00
  4. Procédure stockée: recherche multi-critères
    Par biroule dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 01/09/2004, 16h02
  5. Recherche multi-mots sur une seule colonne
    Par Badiste dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2004, 11h24

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