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 multicritères selon listes déroulantes [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Septembre 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut Recherche multicritères selon listes déroulantes
    Bonjour à tous,

    Après avoir envisagé le suicide pendant 2 secondes, je me suis rappelé que les membres de Développez m'avait déjà aidé par le passé.

    Le défis du jour est donc le suivant:

    J'ai modifié un script de moteur de recherche trouvé sur le web pour l'adapter à mon besoin et jusqu'à ce jour tout allait bien. Le principe est assez simple, une page PHP de recherche avec quatre listes déroulantes. Les utilisateurs peuvent choisir d'utiliser l'ensemble ou seulement certaines de ces listes pour affiner leur recherche (l'opérateur est AND).

    une page de résultat PHP affiche sous forme de tableau la liste éléments présents dans la table (unique) correspondant aux critères de recherche.

    Depuis quelques jours, je rencontre un problème parce que je souhaite que la valeur d'un choix effectué dans l'une des liste déroulante soit utilisé pour être recherchée dans deux champs de ma table. (avant c'était uniquement dans un seul champs). J'ai bien essayé d'utiliser OR, la recherche fonctionne correctement lors que la liste déroulante est utilisée seule mais des qu'il y a plus d'une liste déroulante utilisée dans la recherche, les résultats ne sont plus filtrés.

    La parte du code posant problème est celle de la valeur de $corps_emploi qui doit être recherchée dans les champs corps_emploi ou corps_emploi2 de ma table

    Toute aide est la bienvenue, merci!

    Le code de la page de recherche est le suivant:


    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
    <?
    include("../JE/connJE.php");
    $corps_emploi=$_POST["corps_emploi"];
    $corps_emploi2=$_POST["corps_emploi"];
    $domaine_emploi=$_POST["domaine_emploi"];
    $region=$_POST["region"];
    $MO=$_POST["MO"];
    $o="AND";
    				 $rest="";
    				 $text="Critère(s) utilisé(s): ";
     
    					 if($corps_emploi!="")
    					 {
    					 	if($rest=="")
    							{
    						 $rest.=" where corps_emploi='$corps_emploi' 
    						 OR corps_emploi2='$corps_emploi' ";
    						 $text.="Corps d'emploi $corps_emploi ";
    						 }
    						 else 
    						 {
    						 	$rest.=" $o corps_emploi='$corps_emploi' ";
    							$text.=", Corps d'emploi = $corps_emploi ";
    						 }
    					 }
     
    					 if($domaine_emploi!="")
    					 {
    					 	if($rest=="")
    							{
    								$rest.=" where domaine_emploi='$domaine_emploi' ";
    								$text.="Domaine d'emploi = $domaine_emploi ";
    							}
    							else
    							{
    							$rest.=" $o domaine_emploi='$domaine_emploi' ";
    							$text.=", Domaine d'emploi =  $domaine_emploi ";
    							}
    					 }
    					 if($region!="")
    					 {
    					 	if($rest=="")
    							{
    								$rest.="where region='$region' ";
    								$text.="Région = $region ";
    							}
    							else
    							{
    							$rest.=" $o region='$region' ";
    							$text.=", Région = $region ";
    							}
    					 }
     
    				     if($MO!="")
    					 {
    					 	if($rest=="")
    							{
    								$rest.="where MO='$MO' ";
    								$text.="Ministère ou Organisme = $MO";
    							}
    							else
    							{
    							$rest.=" $o MO='$MO' ";
    							$text.=", Ministère ou Organisme = $MO";
    							}
    					 }
     
     
    					if($rest!="")
    					{
    					$rest=$rest;
    					}
    					else
    					{
     
    					//die("Enter Search Parameter<br>");
    					}
    $sql="select $TP2013.* from $TP2013 $rest";
    $result=mysql_query($sql,$connection) or die(mysql_error());			
    $num=mysql_num_rows($result);
    ?>

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2010
    Messages : 13
    Points : 22
    Points
    22
    Par défaut
    bonjour, sauf erreur
    debut du code

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $corps_emploi = $_POST["corps_emploi"];
    $corps_emploi2 = $_POST["corps_emploi"];
    donc
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $corps_emploi = $corps_emploi2
    d'ou la difficulte par la suite comme par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    where corps_emploi='$corps_emploi' 
    OR corps_emploi2='$corps_emploi';
    cordialement

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    j'ai repris intégralement ton code en tenant compte de la remarque de gilbee en le sécurisant un peu quand même.
    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
     
    include('../JE/connJE.php');
     
    $emploi_1 = isset($_POST['corps_emploi'])   ? $_POST['corps_emploi']   : '';
    $emploi_2 = isset($_POST['corps_emploi2'])  ? $_POST['corps_emploi2']  : '';
    $domaine  = isset($_POST['domaine_emploi']) ? $_POST['domaine_emploi'] : '';
    $min_org  = isset($_POST['MO'])             ? $_POST['MO']             : '';
    $where    = array();
    $title    = array();
     
    /*
    on sécurise les données à destination
        - de la base de données avec mysql_real_escape_string()
        - de l'affichage HTML avec htmlspecialchars()
    
    Note que les fonctions mysql_xxx() sont obsolètes et que tu devrais passer à mysqli_xxx() ou à PDO
    */
     
    if (($emploi_1 !== '') || ($emploi_2 !== ''))
    {
        $where_tmp = array();
        $title_tmp = array();
     
        if ($emploi_1 !== '')
        {
            $where_tmp[] = 'corps_emploi ="'.mysql_real_escape_string($emploi_1).'"';
            $title_tmp[] = $emploi_1;
        }
     
        if ($emploi_2 !== '')
        {
            $where_tmp[] = 'corps_emploi ="'.mysql_real_escape_string($emploi_2).'"';
            $title_tmp[] = $emploi_2;
        }
     
        $where[] = '('.implode(' OR ', $where_tmp).')';
        $title[] = "Corps d'emploi = ".implode(' OU ', $title_tmp);
    }
     
    if ($domaine !== '')
    {
        $where[] = '(domaine_emploi = "'.mysql_real_escape_string($domaine).'")';
        $title[] = "Domaine d'emploi = ".$domaine;
    }
     
    if ($region !== '')
    {
        $where[] = '(region = "'.mysql_real_escape_string($region).'")';
        $title[] = 'Région = '.$region;
    }
     
    if ($min_org !== '')
    {
        $where[] = '(MO = "'.mysql_real_escape_string($min_org).'")';
        $title[] = 'Minsitère ou Organisme = '.$min_org;
    }
     
    $sql_where  = (empty($where)) ? '' : ' WHERE '.implode(' AND ', $where);
    $html_title = 'Critères utilisé(s) : '.(empty($title)) ? '' : htmlspecialchars(implode(', ', $title), ENT_QUOTES, 'utf-8'); // ici je suppose l'encodage
     
    $sql = "SELECT * FROM {$TP2013}{$sql_where}";
    $qry = mysql_query($sql) or die(mysql_error());
    $num = mysql_num_rows($qry);
    ?>

  4. #4
    Membre à l'essai
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Septembre 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Merci à vous,

    Je vais essayer ça. Désolé si je prends du temps è vous répondre, je pense que nous ne sommes pas du même côté de l'atlantique.

    Je vous reviens avec le résultat de la modification du code

    Encore merci

  5. #5
    Membre à l'essai
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Septembre 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Salut raws

    Tu auras certainement compris que je suis loin d'être expert en la matière :-(

    le code que tu écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $emploi_1 = isset($_POST['corps_emploi'])   ? $_POST['corps_emploi']   : '';
    $emploi_2 = isset($_POST['corps_emploi2'])  ? $_POST['corps_emploi2']  : '';
    $domaine  = isset($_POST['domaine_emploi']) ? $_POST['domaine_emploi'] : '';
    $min_org  = isset($_POST['MO'])             ? $_POST['MO']             : '';
    $where    = array();
    $title    = array();
    Semble m'obliger à ajouter une liste déroulante corps_emploi2 dans ma page de recherche. Si c'est le cas, ca va ma me poser un problème (un de plus).
    Si tu le veux bien, tu peux visiter la page de recherche à http://www.cspq.net/JE/search3PC.php, le choix effectué dans la liste choisir un corps d'emploi doit faire que la valeur sélectionnée soit recherchée et dans corps_emploi et dans corps_emploi2 de la BD car elle peut effectivement se retrouver dans l'un ou l'autre de ces 2 champs.

    Cela dit, j'ai peut être mal compris ton code et ton explication ne va me faire sentir que plus c..

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2010
    Messages : 13
    Points : 22
    Points
    22
    Par défaut
    Une question bête,
    Si les emplois sont tous différents, n'est-il pas possible de faire une table principale emploi avec les liens sur les autres tables pour remplir les champs de emploi et d'afficher le résultat de la recherche en 1 seule requête?

    table emploi :
    Ref_emploi (identifiant)
    Corps_emploi (corps_emploi de la table corps_d_emploi)
    grade (grade de la table grade)
    domaine (voir table domaine)
    niveau (voir table niveau)
    region (voir table region )
    ministere (voir table ministere )
    offre (len sur pdf)

    le select serait simplifié puisque tous les critère seront dans la même table.
    bon courage

  7. #7
    Membre à l'essai
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Septembre 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Principalement parce que je suis une vraie chèvre en programmation et que je manque de temps pour le faire.


    Je vais essayer de trouver une solution en utilisant vos conseils.

    Je sais que c'est un peu facile mais si ca chante quelqu'un de regarder l'ensemble du code des deux pages, le voici:

    Un gros merci!


    PAGE DE RECHERCHE (les modifications proposées ne sont pas encore montés)

    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
    !DOCTYPE html>
    <html lang="en">
        <head>
            <title>Centre de services partagés</title>
            <meta charset="UTF-8" />
            <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
            <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
            <meta name="description" content="CSPQ/DRP/DGOGDD/VPRH" />
            <meta name="keywords" content="Recrutement, Promotion, Fonction publique, Services à la carte, CSPQ, cspq" />
            <meta name="author" content="Codrops" />
            <link rel="shortcut icon" href="../VPRH/favicon.ico"> 
            <link rel="stylesheet" type="text/css" href="../VPRH/JETI2012/css/demo.css" />
            <link rel="stylesheet" type="text/css" href="../VPRH/JETI2012/css/style4.css" />
            <link href='http://fonts.googleapis.com/css?family=Terminal+Dosis' rel='stylesheet' type='text/css' />
            <style type="text/css">
    <!--
    .Style5 {color: #000000}
    .Style6 {font-size: 18px}
    .Style7 {font-size: 9px}
    -->
            </style>
    </head>
        <body>
            <div class="container">
                </div>
                <table width="1024" border="0" cellpadding="0" cellspacing="0">
      <!--DWLayoutTable-->
      <tr>
        <td width="1024" height="280" valign="top"><div align="center"><img src="../JE.png" width="1024" height="280" /></div></td>
        </tr>
      <tr>
        <td height="24" valign="top">        	
        <div class="content">
    	<!--MAIN CONTENT-->
      <div id="content">
        <p align="center" class="container Style6"><span class="Style7"><a href="/JE/Search3PC.php" class="Style5">
    | - Réinitialiser le formulaire - | </a> <a href="/JE/Resultat3PC.php" class="Style5">| - Voir toutes les offres - | </a></span></p>
     
    <form name="form1"  align="center"   method="post" action="/JE/Resultat3PC.php">
                    <div align="center">
      <select name="corps_emploi" size="1" class="deroul" id="corps_emploi" style="width: 80%";>
        <option value="">Sélectionnez un corps d'emploi</option>
        <option value="186 - Ingénieure ou ingénieur, grade 1">186 - Ingénieure ou ingénieur, grade 1</option>
        <option value="186 - Ingénieure ou ingénieur grade stagiaire">186 - Ingénieure ou ingénieur, grade stagiaire</option>
        <option value="263 - Technicienne ou technicien des travaux publics, classe nominale">263 - Technicienne ou technicien des travaux publics, classe nominale</option>
        <option value="263 - Technicienne ou technicien des travaux publics, classe principale">263 - Technicienne ou technicien des travaux publics, classe principale</option>				    
      </select>
      <br /> 
      <br />
      <select name="domaine_emploi" class="deroul" id="domaine_emploi"  style="width: 80%">
        <option value="">Sélectionnez un domaine d'emploi</option>
        <option value="Génie civil">Génie civil</option>
        <option value="Génie géotechnique, géologique et environnement">Génie géotechnique, géologique et environnement</option>
        <option value="Arpentage, géodésie et géomatique et aménagement du territoire">Arpentage, géodésie et géomatique et aménagement du territoire</option>
        <option value="Génie mécanique, mécanique du bâtiment, architecture et électrotechnique">Génie mécanique, mécanique du bâtiment, architecture et électrotechnique</option>
        <option value="Santé et sécurité au travail ou autre">Santé et sécurité au travail ou autre</option>
      </select>
      <br /> 
                      <br />
                    </div>
                    <h5 align="center"></h5>
                    <div align="center">
      <select name="region" class="deroul" id="region"   style="width: 80%">
        <option value="">Sélectionnez une région d'intérêt</option>
        <option value="Capitale-Nationale (03)">Capitale-Nationale (03)</option>         
        <option value="Montréal (06)">Montréal (06)</option>                  
        <option value="Chaudi&egrave;re-Appalaches (12)">Chaudière-Appalaches (12)</option>
      </select>
      <br /> 
      <br />
                      </span>              </div>
                  <h5 align="center"></h5>
                    <div align="center">
                      <select name="MO" class="deroul" id="MO"   style="width: 80%">
                        <option value="">Sélectionnez un ministère ou un organisme</option>
                        <option value="Assemblée nationale du Québec">Assemblée nationale du Québec</option>
    					<option value="Commission de la santé et de la sécurité du travail">Commission de la santé et de la sécurité du travail</option>
    	               <option value="Ministère du Développement durable, de l’Environnement, de la Faune et des Parcs">Ministère du Développement durable, de l’Environnement, de la Faune et des Parcs</option>
                       <option value="Ministère des Ressources naturelles">Ministère des Ressources naturelles</option>
                       <option value="Ministère des Transports du Québec">Ministère des Transports du Québec</option>
                       <option value="Société d’habitation du Québec">Société d’habitation du Québec</option>
                      </select>
                      </span>
                      <br /> 
                      <br /> 
                  </div>
                    <tr>
                    <td><input name="Submit" type="submit" class="button" style="width: 80%"  value="RECHERCHER" /></td>
    			  </tr>
          </form>
        </div>
        <!-- content -->   </div>    </tr>
      <tr>
        <td height="300">&nbsp;</td>
      </tr>
    </table>
        </div><!-- content -->   </div>
     
                    </div>
                </div>
    		          </div>
     
           <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
    </body>
    </html>

    LA PAGE DE RESULTATS

    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
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    <?
    include("../JE/connJE.php");
    $corps_emploi=$_POST["corps_emploi"];
    $domaine_emploi=$_POST["domaine_emploi"];
    $region=$_POST["region"];
    $MO=$_POST["MO"];
    $o="AND";
    				 $rest="";
    				 $text="Critère(s) utilisé(s): ";
     
    					 if($corps_emploi!="")
    					 {
    					 	if($rest=="")
    							{
    						 $rest.=" where corps_emploi='$corps_emploi' ";
    						 $text.="Corps d'emploi $corps_emploi ";
    						 }
    						 else 
    						 {
    						 	$rest.=" $o corps_emploi='$corps_emploi' ";
    							$text.=", Corps d'emploi = $corps_emploi ";
    						 }
    					 }
     
    					 if($domaine_emploi!="")
    					 {
    					 	if($rest=="")
    							{
    								$rest.=" where domaine_emploi='$domaine_emploi' ";
    								$text.="Domaine d'emploi = $domaine_emploi ";
    							}
    							else
    							{
    							$rest.=" $o domaine_emploi='$domaine_emploi' ";
    							$text.=", Domaine d'emploi =  $domaine_emploi ";
    							}
    					 }
    					 if($region!="")
    					 {
    					 	if($rest=="")
    							{
    								$rest.="where region='$region' ";
    								$text.="Région = $region ";
    							}
    							else
    							{
    							$rest.=" $o region='$region' ";
    							$text.=", Région = $region ";
    							}
    					 }
     
    				     if($MO!="")
    					 {
    					 	if($rest=="")
    							{
    								$rest.="where MO='$MO' ";
    								$text.="Ministère ou Organisme = $MO";
    							}
    							else
    							{
    							$rest.=" $o MO='$MO' ";
    							$text.=", Ministère ou Organisme = $MO";
    							}
    					 }
     
     
    					if($rest!="")
    					{
    					$rest=$rest;
    					}
    					else
    					{
     
    					//die("Enter Search Parameter<br><br><br><br><br><br><br><br><br><br><br>");
    					}
    $sql="select $TP2013.* from $TP2013 $rest";
    $result=mysql_query($sql,$connection) or die(mysql_error());			
    $num=mysql_num_rows($result);
    ?>
    <!DOCTYPE html>
    <html lang="en">
        <head>
            <title>Centre de services partagés</title>
            <meta charset="UTF-8" />
            <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
            <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
            <meta name="description" content="CSPQ/DRP/DGOGDD/VPRH" />
            <meta name="keywords" content="Recrutement, Promotion, Fonction publique, Services à la carte, CSPQ, cspq" />
            <meta name="author" content="Codrops" />
            <link rel="shortcut icon" href="../VPRH/favicon.ico"> 
            <link rel="stylesheet" type="text/css" href="../VPRH/JETI2012/css/demo.css" />
            <link rel="stylesheet" type="text/css" href="../VPRH/JETI2012/css/style4.css" />
            <link href='http://fonts.googleapis.com/css?family=Terminal+Dosis' rel='stylesheet' type='text/css' />
            <style type="text/css">
    <!--
    .Style5 {color: #000000}
    .Style6 {font-size: 18px}
    -->
            </style>
    </head>
        <body>
            <div class="container">
                </div>
                <table width="1024" border="0" cellpadding="0" cellspacing="0">
      <!--DWLayoutTable-->
      <tr>
        <td width="1024" height="280" valign="top"><div align="center"><img src="../JE.png" width="1024" height="280" /></div></td>
        </tr>
      <tr>
        <td height="24" valign="top">        	
        <div class="content">
    <!--MAIN CONTENT-->
      <div id="content">
        <p align="center" class="container Style6"><a href="/JE/Search3PC.php" class="Style5">
    | - Retour au formulaire de recherche - | </a> <a href="/JE/Resultat3PC.php" class="Style5">| - Voir toutes les offres - | </a></p>
      <div id="content">
    <br /> 
    <br />
            	  <div align="center" class="container">
            	    <?
    echo "<div align=center>$text</div>";
    echo "<table width=240 border=0 cellpadding=7 cellspacing=10 align=center>\n
    <tr>\n
    	<td  align=center>Nombre total d'enregistrement(s) trouv&eacute;(s) selon le(s) critère(s) sélectionné(s): <b> $num &nbsp;<b> \n
    	<td> &nbsp;\n
    <tr> \n";
    $counter=0;
    while($row=mysql_fetch_array($result))
    {
    	$sn=$row['sn'];
    	$corps_emploi=$row['corps_emploi'];
        $corps_emploi2=$row['corps_emploi2'];
    	$code_offre=$row['code_offre']." - Nombre de poste(s) offert(s): ".$row['nb_postes'];
    	$domaine_emploi=$row['domaine_emploi'];
    	$classe_emploi=$row['classe_emploi'];
    	$currentAdd=$row['thouseno']." ".$row['tstreet']." ".$row['tcity'];
    	$MO=$row['MO']." - Kiosque: ".$row['kiosque'];
    	$phone=$row['tphno'];
    	$region=$row['region'];
    	$email=$row['email'];
    	$PDF=$row['PDF'];
     
     
    	if($counter>=0) {
    	echo "<td valign=top>\n
    	<table width=800 border=1 align=center bordercolor=#ADD8E6 class=allborder> \n
    	<tr> \n
    
    		<td ROWSPAN=2 <td width=200 align=left> Corps d'emploi:</td>
    		<td><B> $corps_emploi</B></td>
    		    </TR><TR>
    		<td><B> $corps_emploi2</B></td>
    		    </TR><TR>		
    	</tr>\n		
    	<tr> \n
    		<td width=200 align=left> Domaine d'emploi:  <td> $domaine_emploi\n
    	</tr>\n
    	
    	<tr> \n
    		<td width=200 align=left> Niveau d'emploi:  <td> $classe_emploi\n
    	</tr>\n
    	
    	<tr> \n
    		<td width=200 align=left> R&eacute;gion d'emploi:  <td> $region\n
    	</tr>\n
    	
    	<tr> \n
    		<td width=200 align=left> Ministère ou organisme:  <td> $MO\n 
    	</tr>\n
    	
    	<tr> \n
    		<td width=200 align=left> R&eacute;f&eacute;rence de l'emploi:  <td><b> $code_offre\n</b>
    	</tr>\n
    	
    	<tr> \n
    		<td width=200 align=left> Offre au format PDF:  <td> <a href=https://www.cspq.net/PDF/$PDF.pdf target=_blank class=type1><B>Voir l'offre d'emploi</B></a> \n
    	</tr>\n
    	</tr>\n
    	</tr>\n
    	</table>\n</td>\n
    	 ";
    	 $counter++;
    	 } 
    	 if($counter==1) {
    	 	echo "</tr>\n<tr>\n<td colspn=2>&nbsp; \n</tr>\n<tr>\n";
    		$counter=0;
    	 }
    }
    echo "</table>\n";
    ?>  
    			  	  <div align="center"> <a href="#top"><strong>[-] haut de page</strong></a></div>
            	  <!-- content -->   </div>   </tr>
     
      <tr>
        <td height="300">&nbsp;</td>
      </tr>
    </table>
        </div><!-- content -->   </div>
    		<div class="mb_footer">
    <a class="ac_left" href="https://www.cspq.net">Retour</a>
    		</div>
                    </div>
                </div>
    		          </div>
     
           <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
    </body>
    </html>

  8. #8
    Membre à l'essai
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Septembre 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    la fatigue me gagne, j'en suis au point ou je me demande si je ne devrais pas faire plus simple.

    J'ai donc envisagé l'utilisation de valeurs multiples dans l'option value de la première liste déroulante (corps_emploi) par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="1_3" >3 Corps d'emploi 108</option>
    Mais voilà, je dois maintenant placer ce code ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $corps = explode('_',$_POST['corps_emploi]);
    dans celui-ci pour être capable d'utiliser les 2 valeurs
    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
    include("../JE/connJE.php");
    $corps_emploi=$_POST["corps_emploi"];
    $domaine_emploi=$_POST["domaine_emploi"];
    $region=$_POST["region"];
    $MO=$_POST["MO"];
    $o="AND";
    				 $rest="";
    				 $text="Critère(s) utilisé(s): ";
     
    					 if($corps_emploi!="")
    					 {
    					 	if($rest=="")
    							{
    						 $rest.=" where corps_emploi='$corps_emploi' ";
    						 $text.="Corps d'emploi $corps_emploi ";
    						 }
    						 else 
    						 {
    						 	$rest.=" $o corps_emploi='$corps_emploi' ";
    							$text.=", Corps d'emploi = $corps_emploi ";
    						 }
    					 }
    Encore merci de m'aider

    Finalement Access, c'était bien

  9. #9
    Membre à l'essai
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Septembre 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Bonjour à tous.

    Finalement, quelques jours en dehors du code m'a permis de prendre un peu de recul. Il a suffit d'adapter légèrement votre code comme ceci:

    Encore merci et à la prochaine

    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
     
    include('../JE/connJE.php');
     
    $emploi_1 = isset($_POST['corps_emploi'])   ? $_POST['corps_emploi']   : '';
    $emploi_2 = isset($_POST['corps_emploi'])   ? $_POST['corps_emploi']   : '';
    $domaine  = isset($_POST['domaine_emploi']) ? $_POST['domaine_emploi'] : '';
    $region   = isset($_POST['region']) ? $_POST['region'] : '';
    $min_org  = isset($_POST['MO'])     ? $_POST['MO'] : '';
    $where    = array();
    $title    = array();
     
    /*
    on sécurise les données à destination
        - de la base de données avec mysql_real_escape_string()
        - de l'affichage HTML avec htmlspecialchars()
     
    */
     
    if (($emploi_1 !== '') || ($emploi_2 !== ''))
    {
        $where_tmp = array();
        $title_tmp = array();
     
        if ($emploi_1 !== '')
        {
            $where_tmp[] = 'corps_emploi ="'.mysql_real_escape_string($emploi_1).'"';
            $title_tmp[] = $emploi_1;
        }
     
        if ($emploi_2 !== '')
        {
            $where_tmp[] = 'corps_emploi2 ="'.mysql_real_escape_string($emploi_1).'"';
            $title_tmp[] = $emploi_1;
        }
     
        $where[] = '('.implode(' OR ', $where_tmp).')';
        $title[] = "Corps d'emploi = ".implode(' OR ', $title_tmp);
    }
     
    if ($domaine !== '')
    {
        $where[] = '(domaine_emploi = "'.mysql_real_escape_string($domaine).'")';
        $title[] = "Domaine d'emploi = ".$domaine;
    }
     
    if ($region !== '')
    {
        $where[] = '(region = "'.mysql_real_escape_string($region).'")';
        $title[] = 'Région = '.$region;
    }
     
    if ($min_org !== '')
    {
        $where[] = '(MO = "'.mysql_real_escape_string($min_org).'")';
        $title[] = 'Minsitère ou Organisme = '.$min_org;
    }
     
    $sql_where  = (empty($where)) ? '' : ' WHERE '.implode(' AND ', $where);
    $html_title = 'Critères utilisé(s) : '.(empty($title)) ? '' : htmlspecialchars(implode(', ', $title), ENT_QUOTES, 'utf-8'); // ici je suppose l'encodage
     
    $sql = "SELECT * FROM {$TP2013}{$sql_where}";
    $qry = mysql_query($sql) or die(mysql_error());
    $num = mysql_num_rows($qry);
    ?>

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

Discussions similaires

  1. Recherche multicritère et liste déroulante
    Par JenTry dans le forum IHM
    Réponses: 5
    Dernier message: 06/09/2007, 12h11
  2. [MySQL] rechercher via une liste déroulante
    Par chicho dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 06/03/2007, 14h45
  3. Recherche etablissement dans Liste déroulante
    Par ypfr2000 dans le forum Access
    Réponses: 7
    Dernier message: 03/02/2007, 10h45
  4. [PHP-JS] affiche selon liste déroulante
    Par cell dans le forum Langage
    Réponses: 10
    Dernier message: 10/12/2006, 22h39
  5. Recherche formulaire avec liste déroulante
    Par kimar dans le forum Access
    Réponses: 2
    Dernier message: 28/07/2006, 12h02

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