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ère


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2015
    Messages : 37
    Par défaut Recherche multicritère
    Bonjour à tous, je reviens encore une fois sur ce beau forum.
    En effet, je vous sollicite encore et merci d'avance pour votre aide.

    J'essaie de faire un formulaire multicritères mais mon code me retourne aucun résultat.
    Quand je place le mysql _query juste après la $requete= "SELECT LAST_NAME, LOGIN, WKG_NAME, BE_NAME FROM user where 1=1"; ça me donne toutes mes données de ma base ce qui est normal! je pense que mes IF ne fonctionnent pas??

    Ci dessous mon Code PHP:
    Code PHP : 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
     
    <table width="530" border="0" cellpadding="0" cellspacing="0"> 
    <tr><td width="50" class="Titres">NOM</td> 
    <td width="50" class="Titres">LOGIN</td> 
    <td width="380" class="Titres">WorkGroup</td> 
    <td width="380" class="Titres">BE</td> 
    </tr> 
     
    <?php 
     
    $cn=mysql_connect("localhost","root","")or die ("probleme de connection");
    mysql_select_db("bdmou",$cn)or die("probleme de selection de base de donnée");
     
    $login=$_POST['t_login'];
    $WKG=$_POST['t_wkg'];
    $BE=$_POST['t_be']; 
    $nom =$_POST['t_nom'];
     
    {
     
    $requete= "SELECT LAST_NAME, LOGIN, WKG_NAME, BE_NAME  FROM user where 1=1"; 
     
     
    if ((isset($nom)) and ($nom !='') ){ 
    $requete = $requete." and LAST_NAME = '$nom'"; 
    } 
    if ((isset($login)) and ($login !='') ){ 
    $requete = $requete." and LOGIN = '$login'"; 
    } 
     
    if ((isset($WKG)) and ($WKG !='') ){ 
    $requete = $requete." and WKG_NAME= '$WKG'"; 
    }  
    if ((isset($BE)) and ($BE !='') ){ 
    $requete = $requete." and BE_NAME = '$BE'"; 
    } 
    $var = mysql_query($requete,$cn) or die ("Execution de la requete impossible".mysql_error()); 
     
    }
     
    $i = 0; 
     
    while ($data=mysql_fetch_assoc($var)) 
    { 
    if ($i % 2) 
    { 
    echo '<tr><td width="50" height="40" class="Ligne1">' . $data['LAST_NAME'] . '</td>'; 
    echo '<td width="50" class="Ligne1">' . $data['LOGIN'] . '</td>'; 
    echo '<td width="380" class="Ligne1">' . $data['WKG_NAME'] . '</td>'; 
    echo '<td width="50" class="Ligne1">' . $data['BE_NAME'] . '</td></tr>'; 
     
    } 
    else 
    { 
    echo '<tr><td width="50" height="40" class="Ligne2">' . $data['LAST_NAME'] . '</td>'; 
    echo '<td width="50" class="Ligne2">' . $data['LOGIN'] . '</td>'; 
    echo '<td width="380" class="Ligne2">' . $data['WKG_NAME'] . '</td>'; 
    echo '<td width="50" class="Ligne2">' . $data['BE_NAME'] . '</td></tr>'; 
    } 
     
    $i++; 
     
    } 
    mysql_close(); 
     
    ?> 
     
    </table>

  2. #2
    Membre chevronné
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Par défaut
    Bonjour,

    A quoi ressemble le code de votre formulaire ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2015
    Messages : 37
    Par défaut
    Bonjour Valaenda, voici le code HTML
    Merci pour votre réactivité.
    Code html : 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
    <form id="form1" name="form1" method="post" action="testrech.php">
        <table width="400" align="lift" bgcolor="#CCCCCC" cellspacing="2" cellpadding="2">
     
         <p>&nbsp; </p>
    	 <h2> <font color="red ">recherche</font> </h2>
    	 <p>&nbsp; </p><p>&nbsp; </p>
     
       <tr>
     
         <td>Nom</td>
        <td width="200" bgcolor="#DE2916"><label>
        <input name="t_nom" type="text" id="t_nom" value=""/>
         </label>Recherche par Nom</td>
       </tr> 
       <tr>
         <td>Login</td>
        <td width="200" bgcolor="#DE2916"><label>
        <input name="t_login" type="text" id="t_login" value=""/>
         </label>Recherche par Login </td>
       </tr>
       <tr>
         <td>Groupe </td>
         <td width="169" bgcolor="#DE2916"><label>
        <input name="t_wkg" type="text" id="t_wkg" value=" " />
         </label>Recherche par Groupe</td>
       </tr>
       <tr>
         <td>BE</td>
       <td width="169" bgcolor="#DE2916"><label>
    	 <input name="t_be" type="text" id="t_be" value=" "/></label>Recherche BE</td>
       </tr>
       <tr>
          <td width="200" bgcolor="#DE2916"><label>
        <input name="rechercher" type="submit" id="rechercher" value="Rechercher" />
         </label></td>
     
       </tr>
        </table>
        <p> </p>
      </form>
      <form id="form1" name="form1" method="post" action="index.php">
        <tr><td colspan="2"><label>
       <a href="index.php" class="button"><span class="lens">Nouvelle recherche...</span></a>
     
    	 </label></td></tr>
    	 </form><br>
    	 </center>
    </body>
    </html>

  4. #4
    Membre chevronné
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Par défaut
    Dans le code de votre premier post, les 2 accolades lignes 23 et 43 n'ont pas lieu d'être.

    De plus, à chaque "if", vous redéfinissez la variable requête alors qu'il faudrait concaténer (Notez les points ajoutés aux opérateurs "=" dans les conditions "IF").

    La première chose à faire et de s'assurer que vos champs ont été saisis et ne sont pas vides.

    Puis vérifier la requête en l'affichant :

    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
    $login= !empty($_POST['t_login']) ? $_POST['t_login'] : null; // si $_POST['t_login'] saisi alors on attribue la valeur à la variable sinon on attribue la valeur null
    $WKG= !empty($_POST['t_wkg']) ? $_POST['t_wkg'] : null;
    $BE= !empty($_POST['t_be']) ? $_POST['t_be'] : null; 
    $nom = !empty($_POST['t_nom']) ? $_POST['t_nom'] : null;
     
    $requete= "SELECT LAST_NAME, LOGIN, WKG_NAME, BE_NAME  FROM user where 1=1"; // Requête de base
     
     
    if ($nom !== null) ){ // si $nom n'est pas null, on ajoute la condition à la requête SQL
      $requete .= $requete." and LAST_NAME = '$nom'"; 
    } 
     
    if ($login !== null ){ 
      $requete .= $requete." and LOGIN = '$login'"; 
    } 
     
    if ($WKG !== null ){ 
      $requete .= $requete." and WKG_NAME= '$WKG'"; 
    }  
     
    if ($BE !== null ){ 
      $requete .= $requete." and BE_NAME = '$BE'"; 
    } 
     
    echo $requete; // Affichage de la requête pour contrôle
     
    $var = mysql_query($requete,$cn) or die ("Execution de la requete impossible".mysql_error());
    Ceci dit, les fonctions mysql_ sont dépréciées et supprimées à partir de PHP7.
    De plus, le code ci-dessus est sensible aux injections SQL, il serait judicieux d'utiliser les requêtes préparées avec mysqli_ ou PDO.

    Je vous invite à lire cet excellent tuto sur les requêtes préparées : http://fmaz.developpez.com/tutoriels...omprendre-pdo/

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2015
    Messages : 37
    Par défaut
    Merci valaendra, pour ce tuto:-)

    J'ai essayé d'adapter ta proposition à mon code mais la requête me renvoi l'erreur ci dessous

    SELECT LAST_NAME, LOGIN, WKG_NAME, BE_NAME FROM user where 1=1SELECT LAST_NAME, LOGIN, WKG_NAME, BE_NAME FROM user where 1=1 and WKG_NAME= ' 'SELECT LAST_NAME, LOGIN, WKG_NAME, BE_NAME FROM user where 1=1SELECT LAST_NAME, LOGIN, WKG_NAME, BE_NAME FROM user where 1=1 and WKG_NAME= ' ' and BE_NAME = ' 'Execution de la requete impossibleYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LAST_NAME, LOGIN, WKG_NAME, BE_NAME FROM user where 1=1 and WKG_NAME= '' at line 1
    Pouvez vous SVP me dire si vous voyez quelque chose qui va pas dans mon code ci- dessous? moi sincèrement NON.
    Code php : 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
     
    <table width="530" border="0" cellpadding="0" cellspacing="0"> 
    <tr><td width="50" class="Titres">NOM</td> 
    <td width="50" class="Titres">LOGIN</td> 
    <td width="380" class="Titres">WorkGroup</td> 
    <td width="380" class="Titres">BE</td> 
    </tr> 
     
    <?php 
     
    $cn=mysql_connect("localhost","root","")or die ("probleme de connection");
    mysql_select_db("sdbmou",$cn)or die("probleme de selection de base de donnée");
     
     
     
    $login= !empty($_POST['t_login']) ? $_POST['t_login'] : null; // si $_POST['t_login'] saisi alors on attribue la valeur à la variable sinon on attribue la valeur null
    $WKG= !empty($_POST['t_wkg']) ? $_POST['t_wkg'] : null;
    $BE= !empty($_POST['t_be']) ? $_POST['t_be'] : null; 
    $nom = !empty($_POST['t_nom']) ? $_POST['t_nom'] : null;
     
    $requete= "SELECT LAST_NAME, LOGIN, WKG_NAME, BE_NAME  FROM user where 1=1"; // Requête de base
     
     
    if ($nom !== null){ // si $nom n'est pas null, on ajoute la condition à la requête SQL
      $requete .= $requete." and LAST_NAME = '$nom'"; 
    } 
     
    if ($login !== null ){ 
      $requete .= $requete." and LOGIN = '$login'"; 
    } 
     
    if ($WKG !== null ){ 
      $requete .= $requete." and WKG_NAME= '$WKG'"; 
    }  
     
    if ($BE !== null ){ 
      $requete .= $requete." and BE_NAME = '$BE'"; 
    } 
     
    echo $requete; // Affichage de la requête pour contrôle
     
    $var = mysql_query($requete,$cn) or die ("Execution de la requete impossible".mysql_error());
     
     
     
    $i = 0; 
     
    while ($data=mysql_fetch_assoc($var)) 
    { 
    if ($i % 2) 
    { 
    echo '<tr><td width="50" height="40" class="Ligne1">' . $data['LAST_NAME'] . '</td>'; 
    echo '<td width="50" class="Ligne1">' . $data['LOGIN'] . '</td>'; 
    echo '<td width="380" class="Ligne1">' . $data['WKG_NAME'] . '</td>'; 
    echo '<td width="50" class="Ligne1">' . $data['BE_NAME'] . '</td></tr>'; 
     
    } 
    else 
    { 
    echo '<tr><td width="50" height="40" class="Ligne2">' . $data['LAST_NAME'] . '</td>'; 
    echo '<td width="50" class="Ligne2">' . $data['LOGIN'] . '</td>'; 
    echo '<td width="380" class="Ligne2">' . $data['WKG_NAME'] . '</td>'; 
    echo '<td width="50" class="Ligne2">' . $data['BE_NAME'] . '</td></tr>'; 
    } 
     
    $i++; 
     
    } 
    mysql_close(); 
     
    ?> 
     
    </table>

  6. #6
    Membre chevronné
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Par défaut
    Petite coquille de ma part :

    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
     
    $login= !empty($_POST['t_login']) ? $_POST['t_login'] : null; // si $_POST['t_login'] saisi alors on attribue la valeur à la variable sinon on attribue la valeur null
    $WKG= !empty($_POST['t_wkg']) ? $_POST['t_wkg'] : null;
    $BE= !empty($_POST['t_be']) ? $_POST['t_be'] : null; 
    $nom = !empty($_POST['t_nom']) ? $_POST['t_nom'] : null;
     
    $requete= "SELECT LAST_NAME, LOGIN, WKG_NAME, BE_NAME  FROM user where 1=1"; // Requête de base
     
     
    if ($nom !== null) ){ // si $nom n'est pas null, on ajoute la condition à la requête SQL
      $requete .= " and LAST_NAME = '$nom'"; 
    } 
     
    if ($login !== null ){ 
      $requete .= " and LOGIN = '$login'"; 
    } 
     
    if ($WKG !== null ){ 
      $requete .= " and WKG_NAME= '$WKG'"; 
    }  
     
    if ($BE !== null ){ 
      $requete .= " and BE_NAME = '$BE'"; 
    } 
     
    echo $requete; // Affichage de la requête pour contrôle
     
    $var = mysql_query($requete,$cn) or die ("Execution de la requete impossible".mysql_error());

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

Discussions similaires

  1. [MySQL] Optimisation de scripts PHP/MySQL
    Par DgG dans le forum PHP & Base de données
    Réponses: 368
    Dernier message: 20/11/2013, 18h59
  2. [php][mysql]Enlever message d'erreur
    Par Destampy dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 31/05/2005, 10h19
  3. [MySQL] [Script]Optimisation de scripts Php/MySQL (2)
    Par copy dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/08/2004, 08h33
  4. [php / mysql] pb if ( mysql_query() )
    Par dkmatt dans le forum Requêtes
    Réponses: 5
    Dernier message: 12/01/2004, 20h07

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