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 :

Recherche multicritere sur base mysql


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Points : 6
    Points
    6
    Par défaut Recherche multicritere sur base mysql
    Bonjour,
    Je suis en train de faire une recherche multicritere sur une base de donnée voiture et je bloque.
    Mon code est surement long et inutile, je cherche a faire comme sur ce site,
    http://www.sndiffusion.fr/pl/stock.pl

    est ce quelqu'un peut m'aider svp, je met mon code mais il ne marche pas avec 2 entrées.
    Merci de votre aide


    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
     
    <form id="recherche" name="recherche" method="GET" action="#">
     
    // CHOIX STOCK
     
      <label>Stock :</label>
        <select name="stock" >
    	<option>Tout</option> 
    <?php
    // connexion à la base 
    $db = mysql_connect('mysql5-6', 'xxx', 'xxx')  or die('Erreur de connexion '.mysql_error()); 
     
    // on sélectionne la base 
    mysql_select_db('elecsystmor',$db);
     
    // on crée la requête SQL
    $sql = "select * from test_voiture";
     
    // on envoie la requête
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    while($data = mysql_fetch_assoc($req))
    {
    echo '<option>'.$data['stock'].'</option>';
    }
     
    // on ferme la connexion à mysql
    mysql_close();?> 
        </select>
      </label>
     
    // CHOIX MARQUE
     
    <label>Marque :</label>
        <select name="marque" >
        <option>Tout</option>
    <?php
    // connexion à la base 
    $db = mysql_connect('mysql5-6', 'xxxx', 'xxxx')  or die('Erreur de connexion '.mysql_error()); 
     
    // on sélectionne la base 
    mysql_select_db('elecsystmor',$db);
     
    // on crée la requête SQL
    $sql = "select * from test_voiture";
     
    // on envoie la requête
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    while($data = mysql_fetch_assoc($req))
    {
    echo '<option>'.$data['marque'].'</option>';
    }
     
    // on ferme la connexion à mysql
    mysql_close();?> 
        </select>
      </label>
     
     
    <input name="valider" type="submit" value="OK" />
    </form>
     
     
    // MON TABLEAU
    <center>
    <table width="1070" border="1" cellpadding="0" cellspacing="0">
      <tr>
        <td colspan="2" width="430" bgcolor="#999999">Modèles</td>
        <td width="60" bgcolor="#999999">Année</td>
        <td width="60" bgcolor="#999999">Km</td>
        <td width="60" bgcolor="#999999">Couleur</td>
        <td width="400" bgcolor="#999999">Equipements</td>
        <td width="60" bgcolor="#999999">Prix</td>
      </tr>
     
    <?php
    // connexion à la base 
    $db = mysql_connect('mysql5-6', 'xxxx', 'xxxx')  or die('Erreur de connexion '.mysql_error()); 
     
    // on sélectionne la base 
    mysql_select_db('elecsystmor',$db);
     
    // on crée la requête SQL
    if($_GET['stock'] == "Tout" AND $_GET['marque'] == "Tout")
    {
         $sql = "select * from test_voiture";
    }
    else
    {
         //on concaténe la chaine de la requete avec la valeur envoyée par le formulaire :    
    $sql = "SELECT * FROM `test_voiture` WHERE `stock`='".$_GET['stock']."' AND marque='".$_GET['marque']."' "; 
    }
     
    // on envoie la requête
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    while($data = mysql_fetch_assoc($req))
        {
        // on affiche les informations de l'enregistrement en cours
    	echo '<tr>';
    	echo '<td width="30"></td><td width="400">'.$data['Nom_modele'].'</td><td width="60"> '.$data['Annee_modele'].'</td><td width="60"> '.$data['Nbre_km'].'</td><td width="60"> '.$data['Couleur'].'</td><td width="400" height="10"> '.$data['Equipements_court'].'</td><td width="60"> '.$data['Prix_vente'].'</td></tr>';
    	}
     
    // on ferme la connexion à mysql
    mysql_close();?>

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut
    Salut,

    quand tu dis "il ne marche pas" pourrais tu preciser? Erreurs, boucles...etc?

    Merci

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Il marche avec une seule entrée avec le select "Stock" quand je rajoute la marque je n'y arrive plus.
    Juste pour précision pour la marque et les suivants il faut que ma liste soit généré par ma base.

    Pour info voici l'adresse de ma page test
    http://www.elecsystemes.fr/test_voiture/

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut
    Je ne vois pas trop ou est le problème, pourrais tu afficher les requetes (via des echo) pour voir ce qu'il y a dedans?
    As tu essayé decrire les requetes directement dans phpmyadmin et si oui fonctionnent elles?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Mon probleme c'est que j'ai dans mes listes de choix :

    Stock : Tout, Occasion, neuf
    Marque : Tout, reprend toutes les marques dans ma base de donnée

    Mon problème est pour intégrer le Tout

    ex : Stock = Tout et Marque = Audi

    Voici mon nouveau code et cela me prends sur mon adresse

    xxxxx/?stock=Tout&marque=ALFA+ROMEO&valider=OK#
    le probleme je pense est le "Tout"

    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
    <?php
    // connexion à la base 
    $db = mysql_connect('mysql5-6', 'xxxx', 'xxxx')  or die('Erreur de connexion '.mysql_error()); 
     
    // on sélectionne la base 
    mysql_select_db('elecsystmor',$db);
     
    // on crée la requête SQL
    if($_GET['stock'] == "Tout" )
    {
         $champs1=="";
    	 echo $champs1;
    }
    else
    {
    	$champs1==$_GET['stock'];
    	echo $champs1;
    }
     
    if($_GET['marque'] == "Tout" )
    {
         $champs2=="";
    	 echo $champs2;
    }
    else
    {
    	$champs2==$_GET['marque'];
    	echo $champs2;
    }
     
     
    //on concaténe la chaine de la requete avec la valeur envoyée par le formulaire :    
    $sql = "SELECT * FROM `test_voiture` WHERE `stock`='".$champs1."' AND `marque`='".$champs2."' "; 
     
     
    // on envoie la requête
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    while($data = mysql_fetch_assoc($req))
        {
        // on affiche les informations de l'enregistrement en cours
    	echo '<tr>';
    	echo '<td width="30"></td><td width="400">'.$data['Nom_modele'].'</td><td width="60"> '.$data['Annee_modele'].'</td><td width="60"> '.$data['Nbre_km'].'</td><td width="60"> '.$data['Couleur'].'</td><td width="400" height="10"> '.$data['Equipements_court'].'</td><td width="60"> '.$data['Prix_vente'].'</td></tr>';
    	}
     
    // on ferme la connexion à mysql
    mysql_close();?> 
    </table>

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut
    La première solution était mieux : il faut separer les cas ou c'est "tout" et le cas ou c'est un modele ou une marque en particulier.
    Voila ce que je ferai :
    (ne copie colle pas j'ai pas tout verifié^^)

    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
     
    if ($_GET['stock']=="Tout")
    {
            if ($_GET['marque']=="Tout")
             {
                   $req= "select * from test_voiture"; 
              }
            else
            {
                   $req="select * from test_voiture where marque ='".$_GET['marque']."'";
            }
    }
    else
    {
    if ($_GET['marque']=="Tout")
             {
                   $req= "select * from test_voiture where stock='".$_GET['stock']."'"; 
              }
            else
            {
                   $req="select * from test_voiture where stock='".$_GET['stock']."' and marque ='".$_GET['marque']."'";
            }
     
    }

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 22/06/2010, 16h08
  2. Moteur de recherches sur base Mysql
    Par Kenya dans le forum Dreamweaver
    Réponses: 0
    Dernier message: 13/08/2008, 20h01
  3. Rechercher remplacer dans base MySQL
    Par mandala75 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/09/2006, 15h14
  4. recherche multicriteres sur 2 tables
    Par fsautejeau dans le forum VBA Access
    Réponses: 18
    Dernier message: 15/07/2006, 13h34
  5. C++ écriture sur base mysql
    Par kenny_badboy dans le forum MFC
    Réponses: 2
    Dernier message: 02/02/2006, 17h41

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