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 :

Formulaire Multicriteres "tout simple" [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 68
    Points : 44
    Points
    44
    Par défaut Formulaire Multicriteres "tout simple"
    Bonjour
    Sur un site de petites annonces, je souhaite effectuer une recherche multicritères "toute simple".
    Voici le code du formulaire :
    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
    <form method="post" action="ResultAnnonces.php" name="cherche"> 
     
          <tr> 
            <td><font size="2"><strong><font color="#000000" face="Arial, Helvetica, sans-serif">Je 
              recherche :</font></strong></font></td> 
            <td><select name="civilite"> 
                <option value="Un homme">Un homme</option> 
                <option value="Une femme" selected>Une femme</option> 
              </select></td> 
            <td>&nbsp;</td> 
          </tr> 
          <tr> 
            <td><font size="2" face="Arial, Helvetica, sans-serif"><strong>de la région 
              : </strong></font></td> 
            <td><select name="cp"> 
                <option value="ALSACE" selected>ALSACE</option> 
                <option value="AQUITAINE">AQUITAINE</option> 
                <option value="AUVERGNE">AUVERGNE</option> 
                <option value="BASSE NORMANDIE">BASSE NORMANDIE</option> 
                <option value="BOURGOGNE">BOURGOGNE</option> 
                <option value="BRETAGNE">BRETAGNE</option> 
                <option value="CENTRE VAL DE LOIRE">CENTRE VAL DE LOIRE</option> 
                <option value="CHAMPAGNE ARDENNE">CHAMPAGNE ARDENNE</option> 
                <option value="CORSE">CORSE</option> 
                <option value="FRANCHE COMTE">FRANCHE COMTE</option> 
                <option value="HAUTE NORMANDIE">HAUTE NORMANDIE</option> 
                <option value="ILE DE FRANCE">ILE DE FRANCE</option> 
                <option value="LANGUEDOC ROUSSILLON">LANGUEDOC ROUSSILLON</option> 
                <option value="LIMOUSIN">LIMOUSIN</option> 
                <option value="LORRAINE">LORRAINE</option> 
                <option value="MIDI PYRENEES">MIDI PYRENEES</option> 
                <option value="NORD PAS DE CALAIS">NORD PAS DE CALAIS</option> 
                <option value="PAYS DE LA LOIRE">PAYS DE LA LOIRE</option> 
                <option value="PICARDIE">PICARDIE</option> 
                <option value="POITOU CHARENTES">POITOU CHARENTES</option> 
                <option value="PACA">PACA</option> 
                <option value="RHONE ALPES">RHONE ALPES</option> 
                <option value="DOM">DOM</option> 
                <option value="TOM">TOM</option> 
              </select></td> 
            <td>&nbsp;</td> 
          </tr> 
          <tr> 
            <td><font size="1"><font size="1"><font size="1" face="Arial, Helvetica, sans-serif"><strong><font size="2" face="Arial, Helvetica, sans-serif"><strong>Ag&eacute;(e) 
              : </strong></font></strong></font></font></font><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;</font></td> 
            <td><strong><font size="2" face="Arial, Helvetica, sans-serif">de 
              <select name="age"> 
                <option value="18" selected >18</option> 
                <option value="19" >19</option> 
             <option value="20" selected >20</option> 
              </select> 
              &agrave; 
              <select name="age2"> 
                <option value="18" >18</option> 
                <option value="19" >19</option> 
                <option value="20" >20</option> 
                <option value="21" >21</option> 
                <option value="22" >22</option> 
                <option value="23" >23</option> 
                <option value="24" >24</option> 
                <option value="25">25</option> 
               <option value="26" selected >26</option> 
              </select>
    Qui va afficher la page suivante :
    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
     
    // sélection de la base  
        mysql_select_db('toto',$db)  or die('Erreur de selection '.mysql_error()); 
     
       $retour = mysql("toto",$query); 
     
     
     
       /// Définition des variables 
    $civilite=$_POST['civilite']; 
    $cp=$_POST['cp']; 
     
     
     
    //// Liste des requetes 
     
             if ($civilite=="" AND $cp=="" ) 
             { 
             $reponse = mysql_query("SELECT * FROM membre "." ORDER BY id" ); 
     
     
             } 
     
             elseif ($civilite=="" ) 
             { 
             $reponse = mysql_query("SELECT * FROM membre WHERE cp='$cp' "." ORDER BY id" ) ; 
     
     
             } 
     
             elseif ($cp=="" ) 
             { 
             $reponse = mysql_query("SELECT * FROM membre WHERE civilite='$civilite' "." ORDER BY id" ); 
     
     
             } 
     
             else 
             { 
             $reponse = mysql_query("SELECT * FROM membre WHERE civilite='$civilite' AND cp='$cp' "." ORDER BY id" ); 
     
     
             } 
     
     
     
    { 
     
     
     
     
     
    $row=mysql_fetch_array($reponse);//on recupere la ligne suivante de la requete 
    echo $row["civilite"]; 
    echo $row["cp"]; 
    echo '<br />'; 
    } 
     
    mysql_close($db); 
     
    ?>
    A l'execution de ce sript, rien ne s'affiche...
    Si vous pouviez m'aider svp
    Merci
    Yann

  2. #2
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 279
    Points : 164
    Points
    164
    Par défaut
    salut Yanng,

    Pourquoi mets tu un point en plein milieu?
    ecris plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM membre  ORDER BY id"
    cela revient au meme, le point sert a concatener deux chaines mais la tu n'en a pas lutilite.

    Puis essaie un truc comme ca :

    while ($row = mysql_fetch_array($reponse)) {
    echo $row["civilite"];
    echo $row["cp"];
    echo '<br />';
    }
    mais regarde bien que ce que tu recherches soit exactement ecrit pareil dans ta base car tu utilises des = sans trim ou strtolower...

  3. #3
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo $row["civilite"]; 
    echo $row["cp"];
    Cela ne marche pas qu'avec un mysql_fetch_assoc plutôt? un mysql_fetch_array c'est un simple tableau donc on affiche en donnant un id et pas un nom de colonne
    ►Ne pas oublier le

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 68
    Points : 44
    Points
    44
    Par défaut ça ne marche pas...
    Après vos modifications, ça ne fonctionne pas non plus...Rien ne s'affiche !

  5. #5
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while ($row=mysql_fetch_assoc($reponse)){
     
    echo $row["civilite"]; 
    echo $row["cp"]; 
     
    }
    ►Ne pas oublier le

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 68
    Points : 44
    Points
    44
    Par défaut
    Toujours rien

  7. #7
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    { 
    $row=mysql_fetch_array($reponse);//on recupere la ligne suivante de la requete 
    echo $row["civilite"]; 
    echo $row["cp"]; 
    echo '<br />'; 
    } 
    C'est ce que tu as écris la cependant le { et le } ne sont pas à mettre Essaie donc:

    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
     
    // sélection de la base  
        mysql_select_db('toto',$db)  or die('Erreur de selection '.mysql_error()); 
     
       $retour = mysql("toto",$query); 
     
     
     
       /// Définition des variables 
    $civilite=$_POST['civilite']; 
    $cp=$_POST['cp']; 
     
     
     
    //// Liste des requetes 
     
             if ($civilite=="" AND $cp=="" ) 
             { 
             $reponse = mysql_query("SELECT * FROM membre ORDER BY id" ); 
     
     
             } 
     
             elseif ($civilite=="" ) 
             { 
             $reponse = mysql_query("SELECT * FROM membre WHERE cp='$cp' "." ORDER BY id" ) ; 
     
     
             } 
     
             elseif ($cp=="" ) 
             { 
             $reponse = mysql_query("SELECT * FROM membre WHERE civilite='$civilite' ORDER BY id" ); 
     
     
             } 
     
             else 
             { 
             $reponse = mysql_query("SELECT * FROM membre WHERE civilite='$civilite' AND cp='$cp' ORDER BY id" ); 
     
     
             } 
     
     
     
    while($row=mysql_fetch_assoc($reponse)){ 
     
        echo $row["civilite"]; 
        echo $row["cp"]; 
        echo '<br />'; 
    } 
     
    mysql_close($db); 
     
    ?>
    Si rien ne s'affiche soit la requête n'est pas bonne soit le nom des champs civilite et cp est erroné^^
    ►Ne pas oublier le

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 68
    Points : 44
    Points
    44
    Par défaut
    Je viens de regarder dans ma base, tout est ok. Je ne vois pas d'où cela vient. Ma requête semble bonne...

  9. #9
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 279
    Points : 164
    Points
    164
    Par défaut
    Affiche ta requete :
    $req="SELECT * FROM membre WHERE cp='$cp' "." ORDER BY id";
    $reponse = mysql_query($req ) ;

    echo $req;
    Puis fais un copier coller dans ta page sql de phpmyadmin(ou autre)
    afin de voir si tu as des resultats ou pas...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 68
    Points : 44
    Points
    44
    Par défaut ça marche !
    C'est Ok ! Merci

    Yann

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

Discussions similaires

  1. simple quote et double quote
    Par sam01 dans le forum Langage
    Réponses: 2
    Dernier message: 24/06/2010, 17h05
  2. Formulaire de recherche tout simple ?
    Par VB69 dans le forum Access
    Réponses: 6
    Dernier message: 11/04/2006, 11h32
  3. Probleme avec encodage de simple quote
    Par linkowich dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2005, 13h16

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