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

Langage PHP Discussion :

formulaire de recherche


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Par défaut formulaire de recherche
    j'essaie de faire une fonction qui recherche dans la base de données. Avec ce que j'ai mis quand je sélectionne un canton, il affiche les sociétés qui sont dans le canton corectement.

    Maintenant comment faire en sorte que lorsque "all" est sélectionné, il affiche les résultats de tous les cantons ?

    De plus je voudrais pouvoir sélectionner les checkbox pour affiner les résultats (il faudrait que soit affiché seulement les résultats où les valeurs des checkbox sont égales à "oui" pour le canton sélectionné). Comment puis-je faire ceci ?

    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
    <?php
    include ("loc.php");
    $connexion= mysql_connect ($host, $user, $password)
    or die ("Connexion au serveur impossible");
    $db = mysql_select_db ($database, $connexion)
    or die ("selection de la base impossible");
    $rq = "SELECT * FROM tirs WHERE canton LIKE '%$canton%' ORDER BY dated";
    $result = mysql_query ($rq) or die ("Exécution de la requête impossible");
     
    ?>
    <form action="">
    <input type="checkbox" name="F300" value="F300" /> F300
    <input type="checkbox" name="P50" value="F300" /> P50
    <input type="checkbox" name="P25" value="F300" /> P25
    <input type="checkbox" name="C50" value="F300" /> C50
    <input type="checkbox" name="C10" value="F300" /> C10 
    <select name="canton">
    <option value="all"><?php echo ALL_INDEX; ?></option>
    <option value="AG">AG</option>
    <option value="AI">AI</option>
    <option value="AR">AR</option>
    <option value="BE">BE</option>
    <option value="BL">BL</option>
    <option value="BS">BS</option>
    <option value="FR">FR</option>
    <option value="GE">GE</option>
    <option value="GL">GL</option>
    <option value="GR">GR</option>
    <option value="JU">JU</option>
    <option value="LU">LU</option>
    <option value="NE">NE</option>
    <option value="NW">NW</option>
    <option value="OW">OW</option>
    <option value="SG">SG</option>
    <option value="SH">SH</option>
    <option value="SO">SO</option>
    <option value="SZ">SZ</option>
    <option value="TG">TG</option>
    <option value="TI">TI</option>
    <option value="UR">UR</option>
    <option value="VD">VD</option>
    <option value="VS">VS</option>
    <option value="ZG">ZG</option>
    <option value="ZH">ZH</option>
    </select>
    <input type="submit" value="<?php echo ENVOI_INDEX; ?>"/></center><br /></form>
    en dessous pour afficher c'est un tableau avec ces données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    echo "<tr>\n
    <td><font color='#19431B'>$canton</font></td>\n
    <td><font color='#19431B'>$cp</font></td>\n
    <td><font color='#19431B'>$lieu</font></td>\n
    <td><font color='#19431B'><a href='./viewshooting.php?tirsID=$tirsID'>$nom</a></font></td>\n
    <td><font color='#19431B'><a href='./profil.php?societeID=$societeID'>$societe</a></font></td>\n
    <td><font color='#19431B'>$datefr</font></td>\n
    <td><font color='#19431B'>$datefr2</font></td>\n
    <td><font color='#19431B'>$datefr3</font></td>\n
    </tr>\n";
    merci d'avance !

  2. #2
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Bonjour,

    le plus simple pour toi est de générer au fur et à mesure ta requête.

    tu aurais quelques choses comme ça :

    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
     
      $where_connector = " WHERE ";
      $rq = "SELECT * FROM tirs";
     
     
      if (isset($_GET['canton']) && $_GET['canton'] != 'all')
      {
        $req .= $where_connector .  "canton like '%" . $_GET['canton']  . "%'";
        $where_connector = " and ";
      }
     
      $verify = array('F300', 'P50', ...); // avec la liste de tous tes champs
     
      foreach ($verify as $value)
      {
        if (isset($_GET[$value]) && !empty($_GET[$value]))
        {
          $req.= $where_connector . $value . " = 'O'"; // au la valeur recherché
          $where_connector = " and ";
        }
      }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Par défaut
    merci, j'ai donc modifié la partie comme tel:
    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
    <?php
    include ("loc.php");
    $connexion= mysql_connect ($host, $user, $password)
    or die ("Connexion au serveur impossible");
    $db = mysql_select_db ($database, $connexion)
    or die ("selection de la base impossible");
     
     
    $where_connector = " WHERE ";
    $rq = "SELECT * FROM tirs";
     
     
      if (isset($_GET['canton']) && $_GET['canton'] != 'all')
      {
        $req .= $where_connector .  "canton like '%" . $_GET['canton']  . "%'";
        $where_connector = " and ";
      }
     
      $verify = array('F300', 'P50', 'P25','P10','C50','C10'); // avec la liste de tous tes champs
     
      foreach ($verify as $value)
      {
        if (isset($_GET[$value]) && !empty($_GET[$value]))
        {
          $req.= $where_connector . $value . " = 'Oui'"; // au la valeur recherché
          $where_connector = " and ";
        }
      }
     
     
    ?>
    <form action="">
    mais plus rien ne fonctionne. Je n'ai aucun résultat avec toutes les possibilités

  4. #4
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Il te manque la partie d'exécution de la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $result = mysql_query ($rq) or die ("Exécution de la requête impossible");
    et je viens de remarquer que j'avais utiliser $req au lieu de $rq

    Sinon si la requête ne fonctionne pas, fait un echo de ta requête pour en voir le résultat.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Par défaut
    j'ai corrigé. J'avais aussi fait une erreur avec les value des checkbox.

    Maintenant quand je sélectionne un canton il affiche correctement tous les résultat et de même si je rajoute en plus une checkbox.

    Par contre avec le "all" il n'y a aucun résultat et lorsque je coche deux checkbox il les additionne (c'est à dire qu'il prend uniquement les résultats où il y a oui dans les deux disciplines alors que je voudrais pas que les checkbox se cumulent). Au pire si ce n'est pas possible: solution du déroulant et les utilisateurs feront plusieurs recherches.

    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
    $where_connector = " WHERE ";
    $rq = "SELECT * FROM tirs";
     
     
      if (isset($_GET['canton']) && $_GET['canton'] != 'all')
      {
        $rq .= $where_connector .  "canton like '%" . $_GET['canton']  . "%'";
        $where_connector = " and ";
    	$result = mysql_query ($rq) or die ("Exécution de la requête impossible");
      }
     
      $verify = array('F300', 'P50', 'P25','P10','C50','C10'); // avec la liste de tous tes champs
     
      foreach ($verify as $value)
      {
        if (isset($_GET[$value]) && !empty($_GET[$value]))
        {
          $rq.= $where_connector . $value . " = 'Oui'"; // au la valeur recherché
          $where_connector = " and ";
    	  $result = mysql_query ($rq) or die ("Exécution de la requête impossible");
        }
      }
     
     
    ?>
    <form action="">
    <input type="checkbox" name="F300" value="Oui" />F300
    <input type="checkbox" name="P50" value="Oui" /> P50
    <input type="checkbox" name="P25" value="Oui" /> P25
    <input type="checkbox" name="P10" value="Oui" /> P10
    <input type="checkbox" name="C50" value="Oui" /> C50
    <input type="checkbox" name="C10" value="Oui" /> C10

  6. #6
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Une petite remarque, il faut que tu sorte l'exécution de ta requête de la boucle des checkboxs. Sinon si tu coches aucune checkbox, la requête ne sera pas exécutée.

    Et au final tu veux une requête SQL qui ressemble à ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT * FROM tirs
    WHERE canton Like '%toto%'
    AND 
    (
      F300 = 'OUI'
      OR 
      P50 = 'OUI'
      ...
    )
    Tu vas avoir quelques modifications a faire dans le code.
    Je te conseille de passer par des tableaux et d'utiliser la fonction implode sur ces tableaux pour les réunir avec un or ou un and.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Par défaut
    si je la sors il ne vérifie plus lorsque c'est coché. Je l'ai donc mis 3 fois et cela fonctionne. Il reste juste le problème des checkbox qui font le and mais je peux le régler avec un radio.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <form action="">
    <input type="radio" name="F300" value="Oui">F300
    <input type="radio" name="P50" value="Oui"> P50
    <input type="radio" name="P25" value="Oui"> P25
    <input type="radio" name="P10" value="Oui"> P10
    <input type="radio" name="C50" value="Oui"> C50
    <input type="radio" name="C10" value="Oui"> C10 
    <select name="canton">
    <option value="all"><?php echo ALL_INDEX; ?></option>
    <option value="AG">AG</option>
    <option value="AI">AI</option>
    quoique.. encore une spécialité: mes radio sont cochables comme des checkbox

  8. #8
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Sauf quand la mettant 3 fois, tu exécutes plusieurs la requête et donc une perte de performance.

    Voici un petit bout de code pour illustrer ce que je te disais tout à l'heure avec les tableaux.

    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
     
    $rq = "SELECT * FROM tirs";
    $tab_condition = array();
     
    // si canton definit et différent de all, on ajoute une recherche sur le canton
    if (isset($_GET['canton']) && $_GET['canton'] != 'all')
    {
      $tab_condition[] = $where_connector .  "canton like '%" . $_GET['canton']  . "%'";
    }
     
    $verify = array('F300', 'P50', 'P25','P10','C50','C10'); // avec la liste de tous tes champs
     
    // pour chaque checkbox on vérifie la présence
    // si oui on ajoute une condition pour le or
    $req_checkbox= array();
    foreach ($verify as $value)
    {
      if (isset($_GET[$value]) && !empty($_GET[$value]))
      {
        $req_checkbox[] = $where_connector . $value . " = 'Oui'"; // au la valeur recherché
      }
    }
     
    // si au moins une des conditions or est présente
    // on les assemble avec un or
    if (!empty($req_checkbox)
    {
      $req_sub = '(' . implode( ' or ', $req_checknox) . ')';
      $tab_condition[] =  $req_sub;
    }
     
    // on rassemble toutes les conditions avec un and
    if (!empty($tab_condition)
    {
      $rq .= ' where ' . implode( ' and ', $tab_condition);
    }
     
    // mettre l'execution de la query à la toute fin
    $result = mysql_query ($rq) or die ("Exécution de la requête impossible");

    pour les boutons radios, il faut créer que tes radios aient le même attribut "name".

    Si jamais ce code ne fonctionne pas fait un echo de $rq pour voir le résultat généré dans plusieurs cas.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Par défaut
    pas de problème avec les cantons mais lorsque une checkbox est cochée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Warning: implode() [function.implode]: Invalid arguments passed in ... 
    Exécution de la requête impossible
    sur cette ligne: $req_sub = '(' . implode( ' or ', $req_checknox) . ')';
    Ok donc les radio ne peuvent pas aller car il leur faut obligatoirement le nom qu'elles ont dans la table.

  10. #10
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    il y a une erreur de frappe, pour le 2nd paramètre il faut mettre $req_checkbox et non $req_checknox

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Par défaut
    juste mais son problème n'était pas cela, c'était juste un espace entre le . et implode.

    Merci pour tout maintenant cela fonctionne comme je voulais

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Par défaut
    j'avais pas fait attention mais lorsque aucune recherche n'a pas encore été effectuée, dans les résultats il y a tout ce qu'il y a dans la base de donnée. Comment dois-je faire pour qu'il n'y ait rien d'affiché lorsqu'aucune recherche n'a été effectuée ?

  13. #13
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Tu peux tester la présence de $_GET['canton'] avec un isset

    vu que la valeur est envoyé à chaque submit.
    Si isset renvoie true tu peux exécuter la requête, sinon non.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Par défaut
    merci !! c'est parfait maintenant !!

    Depuis, j'ai fais une autre fonction de recherche par mots sur une autre page. Elle fonctionne mais c'est juste que quand je valide et que le champs est vide, il me sort tous les résultats. Je voulais mettre un if ($q = "") { echo "erreur";} mais peu importe où je le mets, il affiche toujours tout quand aucun mot n'est tapé..

    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
    <?php 
    if (isset($_GET['q'])){
    require "loc.php";
    $connexion= mysql_connect ($host, $user, $password)
    or die ("Connexion au serveur impossible");
     
    $db = mysql_select_db ($database, $connexion)
    or die ("selection de la base impossible");
    $q=$_GET['q'];
    $s=explode (" ", $q);
     
    $sql="SELECT * FROM tirs";
    $i=0;
    foreach ($s as $mot) {
    if(strlen($mot)>1){
    if($i==0){
    $sql.=" WHERE ";
    } else {
    $sql.=" OR ";
    }
    $sql.="nom LIKE '%$mot%'";
    $i++;
    }
    }
    $req=mysql_query($sql) or die (mysql_error());
    echo mysql_num_rows($req).RESULTAT_SOCIETES;
    while($d=mysql_fetch_assoc($req)){
    echo "<br><br><a href='./viewshooting.php$lang&tirsID={$d["tirsID"]}'>{$d["nom"]}</a>";
    $c=$d["nomsociete"];
    $i=0;
    echo "&nbsp;({$d["lieu"]})";
    }
    }
    else{
    echo NO_SOCIETES;
    }
    ?>

  15. #15
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Pour ca dans ton premier test, tu dois rajouter un test pour savoir si la variable
    $_GET['q'] n'est pas vide en utilsant empty

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Par défaut
    ah bah oui ! merci beaucoup !

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Par défaut
    Encore une petite question, tous les résultats sont affichés quand je fais la requête de recherches des tirs mais logiquement il faudrait que ce soit que les prochains (ceux qui sont égaux à $datefin ou postérieurs). En clair, comment puis-je faire pour ne pas afficher les évènements antérieurs ?

  18. #18
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Dans ta requête SQL, tu peux ajouter un test sur la date
    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $rq = "SELECT * FROM tirs WHERE my_date >= '" . $mydatefin . "'";
    Après il faut voir en fonction du format que tu as en BD et du format que tu as pour ta variable $mydatefin

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Par défaut
    le type dans la table c'est un type date.

    Il faut que datefin (colonne de la table tirs) soit > ou = à la date d'aujourd'hui.

    J'ai donc essayer de rajouter un AND dans le code de ma requête mais cela ne 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
    $rq = "SELECT * FROM tirs";
    $tab_condition = array();
     
    // si canton definit et différent de all, on ajoute une recherche sur le canton
    if (isset($_GET['canton']) && $_GET['canton'] != 'all')
    {
      $tab_condition[] = $where_connector .  "canton like '%" . $_GET['canton']  . "%'";
    }
     
    $verify = array('F300', 'P50', 'P25','P10','C50','C10'); // avec la liste de tous tes champs
     
    // pour chaque checkbox on vérifie la présence
    // si oui on ajoute une condition pour le or
    $req_checkbox= array();
    foreach ($verify as $value)
    {
      if (isset($_GET[$value]) && !empty($_GET[$value]))
      {
        $req_checkbox[] = $where_connector . $value . " = 'Oui'"; // au la valeur recherché
      }
    }
     
    // si au moins une des conditions or est présente
    // on les assemble avec un or
    if (!empty($req_checkbox))
    {
      $req_sub = '(' .implode( ' or ', $req_checkbox) . ')';
      $tab_condition[] =  $req_sub;
    }
     
    // on rassemble toutes les conditions avec un and
    if (!empty($tab_condition))
    { $dateajd = date("Y/m/d" );
      $rq .= ' where ' .implode( ' and ', $tab_condition) .'AND datefin >= '.$dateajd;
    }
     
    // mettre l'execution de la query à la toute fin
    $result = mysql_query ($rq) or die ("Exécution de la requête impossible");

  20. #20
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Le tableau $tab_condition contient les différents éléments de ta requête.

    Tu peux rajouter la condition dans celui ci, pour garder quelque chose d'uniforme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $tab_condition[] = 'datefin >= '.$dateajd
    et par rapport à ton code, il manque un espace devant le and.

    quand tu as des erreurs de requêtes, le plus simple pour débugger est de l'afficher et de l'exécuter dans PhpMyAdmin (si tu l'utilise bien sur ou autre sinon).

    A partir de la, tu regarde d'où vient l'erreur, tu la corrige, et tu corrige ensuite dans ton code.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Formulaire de recherche multitables
    Par SpyesX dans le forum Access
    Réponses: 7
    Dernier message: 24/11/2005, 11h50
  2. [MySQL] Formulaire de recherche PHP + un script d recherche en HTML
    Par Dsphinx dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/11/2005, 19h44
  3. alléger un formulaire de recherche
    Par jarod71 dans le forum Langage
    Réponses: 4
    Dernier message: 28/10/2005, 11h11
  4. Réponses: 3
    Dernier message: 20/10/2005, 12h42
  5. Réponses: 5
    Dernier message: 18/10/2005, 14h09

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