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 :

Afficher le resultat d'une recherche multicritére dans une autre page [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Afficher le resultat d'une recherche multicritére dans une autre page
    Bonjour à tous,

    Voici mon probleme,

    J'ai créer un "formulaire" de recherche multicriteres afin de faciliter ces dernieres aux visiteurs du site.

    Cependant mon probleme est que j'ai bien ma recherche muticritere qui se fait mais cela ne m'affiche rien.

    Les codes sont des codes récupérés et modifiés pour qu'ils fonctionnent sur ma base.
    Je travail avec Mysql et Php.

    Voici le code de mon premier fichier (celui de la recherche multicritéres). Il permet au visiteur de choisir dans des menu déroulant des choix vis à vis de leurs préférences. C'est choix son des valeurs de ma 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
    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
     
    <?php
    include('config.php')
    ?>
     
    <form method="POST" action="result_plantes.php">
    Exposition à la lumiére
    <SELECT Name = "expo">
    <?php
    									//menu déroulant appel mysql en excluant les doublons là, c'est pour l'exposition de la plante
    $rep= mysql_query("SELECT distinct exposition FROM `plantes` ORDER BY 'exposition'");
     
    									//utilisation d'un while dans le but d'afficher un ou plusieurs nom
    while ($ligne_liste = mysql_fetch_array($rep))
    {
    ?>
    <OPTION Value = "<?php echo $ligne_liste['exposition']; ?>"><?php echo $ligne_liste['exposition']; ?></OPTION>
    <?php
    }
    									// Je ferme ma boucle
    ?>
    </SELECT>
    <br />
    <br />
    Utilisation
    <SELECT Name = "utilisation">
    <?php
    $rep= mysql_query("SELECT distinct utilisation FROM `plantes` ORDER BY 'utilisation'");
     
     
    while ($ligne_liste = mysql_fetch_array($rep))
    {
    ?>
    <OPTION Value = "<?php echo $ligne_liste['utilisation']; ?>"><?php echo $ligne_liste['utilisation']; ?></OPTION>
    <?php
    }
    ?>
    </SELECT>
     
    <br />
    <br />
    Catégorie de la plante
    <SELECT Name = "categorie">
    <?php
    $rep= mysql_query("SELECT distinct categorie FROM `plantes` ORDER BY 'categorie'");
     
    while ($ligne_liste = mysql_fetch_array($rep))
    {
    ?>
    <OPTION Value = "<?php echo $ligne_liste['categorie']; ?>"><?php echo $ligne_liste['categorie']; ?></OPTION>
    <?php
    }
    ?>
    </SELECT>
     
    <br />
    <br />
    Choisir le type de feuillage
    <SELECT Name = "feuillage">
    <?php
    $rep= mysql_query("SELECT distinct feuillage FROM `plantes` ORDER BY 'feuillage'");
     
    while ($ligne_liste = mysql_fetch_array($rep))
    {
    ?>
    <OPTION Value = "<?php echo $ligne_liste['feuillage']; ?>"><?php echo $ligne_liste['feuillage']; ?></OPTION>
    <?php
    }
    ?>
    </SELECT>
     
    <br />
    <br />
     
    <input type = "submit" value = "Valider"/>
    Et une fois que l'on clique sur "valider" ça renvoie à result_plantes.php et c'est là que ça coince (ou peut être avant, j'avoue que je seche bien là!)
    voici le code minimisé avec un seul echo (ça sert à rien que je les mettent tous tant que ça fonctionne pas .

    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
    <?php include('config.php')?>
    <?php               
     
                    //Test si les $_POST sont vides               
                    if (!empty($_POST['exposition']))
                    {
                    $exposition = $_POST["exposition"];
                    }                             
    							             // on récupère les critères sélectionnés
                     extract($_POST);
     
                    $i = 0;
     
                    						    // si la variable est présente, on lui affecte une place dans le tableau 'choix[]', qui nous servira ensuite à construire le WHERE de la requête.
                     if(!empty($exposition)) { $choix[$i++] = "exposition = '$exposition'"; }
     
                    						   // etc... tu fais pareil pour chaque critère
     
                    // on insère les éléments remplis dans une variable $critere, en commençant par la première occurrence, puis on boucle
                     $critere = $choix[0]." ";
     
                    for($j=1;$j<$i;$j++)
                    {
                             $critere .= " AND ".$choix[$j]." ";
                     }
     
                    // enfin on fait la requête si $i >0, ça veut dire qu'il y a des critères
                     if($i > 0)
                    {
                             // requete de selection
                             $sql = "SELECT * FROM 'plantes' WHERE $critere ORDER BY plantes";
                             $requete = mysql_query( $sql, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
                     }
     
                    // si $i = 0, alors l'utilisateur n'a pas saisi de critère, là soit on fait la même requete mais sans "WHERE $critere", soit on lui demande de saisir au moins un critère.
                     else
                    {
                             $sql = "SELECT * FROM 'plantes' ORDER BY plantes";
                     }
     
                            //récupération avec mysql_fetch_array(), et affichage de nos résultats :
                             echo( "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" align=\"center\">\n" );
                             echo( "<tr>
                             <td><div align=\"center\">Exposition</div></td>
                            </tr>" );
     
                             while( $result = mysql_fetch_array( $requete ) )
                             {   
     
                             echo( "<tr>\n" );
                             echo( "<td><div align=\"center\">".$result['exposition']."</div></td>\n" );
                             //echo( "<td><div align=\"center\"><form method='post' action='contact3.php'><input type='submit' value='Détails'/></form></div></td>\n" );
                             echo( "</tr>\n" );
                             }
                             echo( "</table><br>\n" );      
                    ?>
    Si vous avez des suggestion (pas forcément la solution) je suis preneur. Ha oui et en passant pourquoi mes menus déroulant ne s'affiche pas en utf-8?

    Merci par avance de votre aide

  2. #2
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Points : 4
    Points
    4
    Par défaut
    Aprés quelques tapages de tête sur le mur, j'ai trouvé mon erreur!
    Je m'etait emmêler les pinceaux avec mes côtes et mes guillemets.
    Voici mon code fonctionnel :

    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
    <?php                            
                            $cnx = mysql_connect('blabla') or die("Impossible de se connecter");
                            $db = mysql_select_db(blabla) or die("Impossible de se connecter");
                                    if (mysql_connect ('blabla'))
                                    {
                                           // echo 'Connexion réussie'; echo '<br>';
                                    }
                                    else
                                    {
                                            echo 'Connexion impossible...'.mysql_error(); echo '<br>';
                                    }
     
                    // on récupère les critères sélectionnés
                    extract($_POST);
     
                    $i = 0;
     
                    // si la variable est présente, on lui affecte une place dans le tableau 'choix[]', qui nous servira ensuite à construire le WHERE de la requête.
     
                    if(!empty($exposition)) { $choix[$i++] = "exposition = '$exposition'"; }
     
     
                    // on insère les éléments remplis dans une variable $critere, en commençant par la première occurrence, puis on boucle
                    $critere = $choix[0]." ";
     
                    for($j=1;$j<$i;$j++)
                    {
                            $critere .= " AND ".$choix[$j]." ";
                    }
     
                    // enfin on fait la requête si $i >0, ça veut dire qu'il y a des critères
                    if($i > 0)
                    {
                            // requete de selection
                            $sql = "SELECT * FROM plantes WHERE $critere ORDER BY exposition";
                            $requete = mysql_query( $sql, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
                    }
     
                    // si $i = 0, alors l'utilisateur n'a pas saisi de critère, là soit on fait la même requete mais sans "WHERE $critere", soit on lui demande de saisir au moins un critère.
                    else
                    {
                            $sql = "SELECT * FROM plantes ORDER BY exposition";
                    }
     
                            //récupération avec mysql_fetch_array(), et affichage de nos résultats :
                            echo( "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" align=\"center\">\n" );
                            echo( "<tr>
                            
                            <td><div align=\"center\">Exposition</div></td>
    			 
    			                      
    
                            </tr>" );
     
                            while( $result = mysql_fetch_array( $requete ) )
                            {      
                            echo( "<tr>\n" );
     
                            echo( "<td><div align=\"center\">".$result["exposition"]."</div></td>\n" );
     
                            /*echo( "<td><div align=\"center\"><form method='post' action='telechargement.php'><input type='submit' value='Telechargement'/></form></div></td>\n" );*/
                            echo( "</tr>\n" );
                            }
                            echo( "</table><br>\n" );      
                    ?>
    Il me reste encore 1 souci :

    Comment laisser un vide dans mon menu déroulant si l'utilisateur ne veux pas se servir de tout les critères?

    EDIT : Finalement j'ai trouvé.

    Si quelqu'un à une idée je suis preneur.
    Merci d'avance

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/12/2009, 13h21
  2. Dates dans une recherche multicritères
    Par alainGL dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 11/05/2007, 08h54
  3. Recherche multicritères dans une seule fonction ?
    Par ilouma dans le forum Pascal
    Réponses: 13
    Dernier message: 06/05/2007, 23h19
  4. Réponses: 5
    Dernier message: 27/04/2007, 16h06
  5. Erreur syntaxe dans une recherche multicritère
    Par cigale13 dans le forum Access
    Réponses: 2
    Dernier message: 12/06/2006, 10h58

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