begin process at 2012 05 31 16:50:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

Recherche dans une table avec un ou plusieurs critères


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Recherche dans une table avec un ou plusieurs critères

vendredi 10 février 2006 à 09:56:36 | Recherche dans une table avec un ou plusieurs critères

murrigane

Bonjour,

J'essais de créer d'après un formulaire, une recherche sur un ou plusieurs critères :

Le champ 1 est une liste déroulante, le champ 2 c'est du texte, le champ 3 liste déroulante et le champ 4 liste déroulante également.
Je sais pas si ca peut vous être important de la savoir, mais bon je me suis dit que de le préciser serait pas mal.
Ensuite cette recherche s'effectue sur une table qui s'appel Client.
le champ 1 correspond à la région du client, le champ 2 au deux premières lettres du département, le champ 3 si il est professionnel ou particulier, le champ 4 le type d'envois (transporteur, la poste, etc...)
Donc voilà, alors théoriquement je vois à peu près comment faire, pour le champ 1 je fais dans la requête :
WHERE region=$_POST['champ1'] pour le champ 2 je fais un LIKE avec le % placé de façon à ne comparer que les deux première lettres du code postal et pour les deux autres champs je fais comme pour le champ1

Si je n'ais qu'un seul poste de passé, bon rien de bien compliqué, mais là où je n'arrive plus à gérer c'est quand 3 ou 4 champs sont passés. Je peux décomposé avec des if toutes les possibilités mais ca risque de faire quelque chose de pas très propre. J'ai regardé dans des codes sources, j'en ai trouvé un qui pourrait fonctionner mais comme je n'arrive pas à en comprendre le fonctionnement je préfère ne pas l'utiliser.
Quelqu'un aurait-il une solution assez simple à me proposer ?
Merci d'avance

vendredi 10 février 2006 à 10:31:23 | Re : Recherche dans une table avec un ou plusieurs critères

obcstaff

Réponse acceptée !
Je te passe un moteur de recherche qui pourrait correspondre a tes attentes. Il doit surement exister un moteur meilleur mais je ne suis que debutant alors il n'est pas trés complexe mais correspondra a ce que tu recherche. Ici mon code traite de 3 critere de recherche:

<? 

//On regarde s'il y a quelques choses de poster:
if(extract($_POST))
{
    //On assigne des variables aux post envoyé:
    $num_fichier = $_POST['num'];
    $nom_fichier = $_POST['nom'];
    $jours = $_POST['jours'];
    $mois = $_POST['mois'];
    $annee = $_POST['annee'];
    $date = $jours."-".$mois."-".$annee;
   
    if(empty($num_fichier) AND empty($nom_fichier) AND ($jours == 0 OR $mois == 0 OR $annee == 0))
        {
            echo("Vous n'avez pas entré de critére de recherche, vous allez être redirigé automatiquement.");
            ?><script language="JavaScript">setTimeout("window.location='recherche.php'",5000);</script><?
        }
    elseif(($jours == 0 OR $mois == 0 OR $annee == 0) AND !empty($num_fichier) AND !empty($nom_fichier))
        {
            $sql = "SELECT * FROM fichier, diffusion WHERE num_fichier = '$num_fichier' AND nom_fichier LIKE '%$nom_fichier%' AND fichier.num_diffusion = diffusion.num_diffusion";
            $result = mysql_query($sql);
           
            //affiche ton resultat
        }
    elseif(($jours == 0 OR $mois == 0 OR $annee == 0) AND empty($num_fichier) AND !empty($nom_fichier))
        {
            $sql = "SELECT * FROM fichier, diffusion WHERE nom_fichier LIKE '%$nom_fichier%' AND fichier.num_diffusion = diffusion.num_diffusion";
            $result = mysql_query($sql);
            //affiche ton resultat
        }
    elseif(($jours == 0 OR $mois == 0 OR $annee == 0) AND empty($nom_fichier) AND !empty($num_fichier))
        {
            $sql = "SELECT * FROM fichier, diffusion WHERE nom_fichier = '$num_fichier' AND fichier.num_diffusion = diffusion.num_diffusion";
            $result = mysql_query($sql);
           
            //affiche ton resultat
        }
    elseif($jours != 0 AND $mois != 0 AND $annee != 0 AND empty($nom_fichier) AND empty($num_fichier))
        {
            $sql = "SELECT * FROM fichier, diffusion WHERE date_fichier = '$date' AND fichier.num_diffusion = diffusion.num_diffusion";
            $result = mysql_query($sql);
           
         //affiche ton resultat
        }
    elseif($jours != 0 AND $mois != 0 AND $annee != 0 AND empty($nom_fichier) AND !empty($num_fichier))
        {
            $sql = "SELECT * FROM fichier, diffusion WHERE date_fichier = '$date' AND num_fichier = '$num_fichier' AND fichier.num_diffusion = diffusion.num_diffusion";
            $result = mysql_query($sql);
           
         //affiche ton resultat
        }
    elseif($jours != 0 AND $mois != 0 AND $annee != 0 AND empty($num_fichier) AND !empty($nom_fichier))
        {
            $sql = "SELECT * FROM fichier, diffusion WHERE date_fichier = '$date' AND nom_fichier LIKE '%$nom_fichier%' AND fichier.num_diffusion = diffusion.num_diffusion";
            $result = mysql_query($sql);
           
             //affiche ton resultat
        }
    elseif($jours != 0 AND $mois != 0 AND $annee != 0 AND !empty($nom_fichier) AND !empty($num_fichier))
        {
            $sql = "SELECT * FROM fichier, diffusion WHERE date_fichier = '$date' AND num_fichier = '$num_fichier' AND nom_fichier LIKE '%$nom_fichier%' AND fichier.num_diffusion = diffusion.num_diffusion";
            $result = mysql_query($sql);
           
             //affiche ton resultat
        }
       
}
//S'il y a rien d'envoyé on affiche le formulaire:
else
{?>
    Vous pouvez effectuer une recherche de fichier, d'archive, de note par les critéres suivant:<br>
    - Numéro de fichier<br>
    - Nom de fichier<br>
    - Date du fichier<br>
  
    <form method='post' action='recherche.php'>
        <table align='center'>
            <tr>
                <td>Entrer un numéro de fichier:</td>
                <td>
                    <input type='text' name='num' size='20'>
                </td>
            </tr>
            <tr>
                <td>Entrer un nom de fichier:</td>
                <td>
                    <input type='text' name='nom' size='20'>
                </td>
            </tr>
            <tr>
                <td align='center'>Selectionner le jour</td>
                <td>
                    <select name='jours' size='1'>
                        <option value='0'></option>
                        <?php
                               
                                $sql = "SELECT * FROM jours";
                                $result = mysql_query ($sql);
                                   
                                while ($result2 = mysql_fetch_object ($result))
                                    {
                                        echo("<option value='$result2->num_jour'>$result2->num_jour</option>");
                                    }
                        ?>
                    </select>
                </td>
            </tr>
            <tr>
                <td align='center'>Selectionner le mois</td>
                <td>
                    <select name='mois' size='1'>
                        <option value='0'></option>
                        <?php
                                $sql = "SELECT * FROM mois";
                                $result = mysql_query ($sql);
                               
                                while ($result2 = mysql_fetch_object ($result))
                                    {
                                        echo("<option value='$result2->num_mois'>$result2->nom_mois</option>");
                                    }
                        ?>
                    </select>
                </td>
            </tr>
            <tr>
                <td align='center'>Selectionner l'année</td>
                <td>
                    <select name='annee' size='1'>
                        <option value='0'></option>
                        <?php
                                $sql = "SELECT * FROM annee";
                                $result = mysql_query ($sql);
                               
                                while ($result2 = mysql_fetch_object ($result))
                                    {
                                        echo("<option value='$result2->num_annee'>$result2->num_annee</option>");
                                    }
                        ?>
                    </select>
                </td>
            </tr>
            <tr align='center'>
                <td align='center'>
                    <input type='submit' value='Envoyer'>
                </td>
            </tr>
        </table>
       
    



vendredi 10 février 2006 à 10:32:58 | Re : Recherche dans une table avec un ou plusieurs critères

obcstaff

Voila essaye avec ca et di moi quoi si tu as un probleme ou situ ne comprend pas une partie du code....voilivoilou... ++                             *-*
vendredi 10 février 2006 à 11:15:16 | Re : Recherche dans une table avec un ou plusieurs critères

murrigane

Bonjour obcstaff !

Merci beaucoup de m'avoir répondu aussi vite c'est très sympa de ta part de me passer ton script qui m'a l'air compréhensible pour mon niveau !  
Je vais le tester et essayer de l'adapter à mes besoins. Par conte si je peux me permettre je vais te faire une suggestion au niveau de ton extract, il faudrait que tu l'utilise comme ceci : extract($_POST,EXTR_SKIP)
J'avais posté une fois un bout de script sur le forum avec un extract($_POST) et quelqu'un m'avait dit qu'il ne fallait pas le faire, sinon cela créer un trou de sécurité a moin de l'écrire : extract($_POST,EXTR_SKIP)

Je vais tester ton code et reviens de suite pour raconter ce qu'il m'arrive

vendredi 10 février 2006 à 11:44:47 | Re : Recherche dans une table avec un ou plusieurs critères

murrigane

Désolée pour le texte écrit tout gros ...... C'était pas pour mettre mes trucs en évidence mais j'ai fait une mauvaise manip' avec la taille des caractères ...

Vraiment désolée !
vendredi 10 février 2006 à 11:48:09 | Re : Recherche dans une table avec un ou plusieurs critères

obcstaff

Je te retourne le remerciement car je suis moi meme débutant, alors toute suggestion est la bienvenue, ok pour le EXTRACT($_POST,EXTR_SKIP) mais juste une question, qu'est ce que cela signifie le extr_skip? Peut tu me renseigner stp?

Merci et n'hésite pas a poser des questions sur mon code...et si tu vois une autre suggestion, fais toi plaisir....lol    ++
vendredi 10 février 2006 à 11:49:37 | Re : Recherche dans une table avec un ou plusieurs critères

obcstaff

Dsl également pour l'ecriture en gros mais je ne pense pas que ce soit de notre faute car je n'ai fais aucune fausse manipulation.....ca ne vient pas de nous en tout cas!!! looool

++

vendredi 10 février 2006 à 11:50:41 | Re : Recherche dans une table avec un ou plusieurs critères

obcstaff

c'est parcequ'il reste sur l'ecriture en gros aprés le: EXTR_SKIP mdr
vendredi 10 février 2006 à 12:11:46 | Re : Recherche dans une table avec un ou plusieurs critères

Anthomicro

Réponse acceptée !
<? 

//On regarde s'il y a quelques choses de poster:
if(extract($_POST))
{
    //On assigne des variables aux post envoyé:
    $num_fichier = $_POST['num'];
    $nom_fichier = $_POST['nom'];
    $jours = $_POST['jours'];
    $mois = $_POST['mois'];
    $annee = $_POST['annee'];
    $date = $jours."-".$mois."-".$annee;

belles failles de sécurité :-) EXTR_SKIP dans les paramètres du extract, et puis aussi les isset sur les variables, le <?php au lieu de <?...


    vendredi 10 février 2006 à 13:27:39 | Re : Recherche dans une table avec un ou plusieurs critères

    murrigane

    EEeuu extract(extr_skip) ben ca veut dire, eeeeeeuuuu ...... Skip l'extraction et ne prends que le nom des variables

    Honnetement je ne sais pas exactement ce que cela veut dire, par déduction j'ai supposé la définition plus haut, mais bon ce n'est pas parole d'évangile ! J'ai regardé dans ma bible ... J'avais rien à ce sujet !

    Sinon pour les <? au lieu de <?php, oui c'est une erreur, d'ailleurs avec php5 si je ne me trompe pas si tu mets pas <?php aucune partie de ton code ne s'affiche ... .Mais là encore je peux me tromper. Pitetre qu'un spécialiste passera dans le coin et l'expliquera.
    Bon je retourne me prendre la tête sur les elseif..... J'ai presque toutes mes différentes valeurs de recherche qui fonctionnent excéptés une seule ... C'est rageant !!

    Je reviens plus tard !

    1 2

    Cette discussion est classée dans : table, recherche, liste, champ, critères


    Répondre à ce message

    Sujets en rapport avec ce message

    recherche dans une table [ par 01cod10 ] J'aimerai afficher la liste de tous les membres ayant comme sexe femme dont l'age est compris entre 30 et 35 et  une photo je sais que je dois utilise recherche dans une base de donne d'un champ avec des selection [ par temanizied ] est ce que je peut trouver un code php/mysql qui permet la recherche dans la base : - d'un champ de saisie de type text - et 3 liste de selection : Afficher le dernier enregistrement d'une table SQL [ par forumcafe ] Bonjour je désire affiché via un script php le dernier champ d'une table via un champ précis.Bizarrement parfois celui ci marche et parfois non, si je probleme pour lier une checkbox à un champ texte [ par extremenet ] Bonjour,je viens ici car cela fait tres long moment que je n'arrive pas à trouver la solution à mon probéme :J'ai créé  un tableau suivant les donné d liste deroulante [ par georgesm ] Bonjour,Je cherche de l'aide après avoir bien explorer le forum. Voici mon "petit"problème.J'ai une bd avec trois tables: table UN , table DEUX et tab modifier dans ma table créer dans une base de donnee [ par hindweb ] bonjour a tousj'ai créer une base de donnéé(gestion) et une table(employe) avec 12 champ(nom,prenom,cin,poste,date,extrait,cv,diplome,categorie,experi pb dans le remplissage d'une table de la base de données [ par angeimaginaire ] bjr pour ts,qlqun m aider svp, j'ai un pb au lieu de modification  des données d'une table 'membre' à travers d'un formulaire dans lequel j'ai récupér Inserér une longue liste dans une table [ par med93100 ] J'aimerais insérer une longue listeXX1XX2XX3XX4.....XXX100J'aimerais rentrer toute ces valeurs d'un seul coup dans une table SQL Comment faire? Merci base de donnée access affichage de champ [ par copou ] Bonjour, je réalise une base de donnée sous ACCESS pour gérer des stocks pour un entreprise ou je suis en apprentissage et je rencontre deux trois pro Update php d'une liste [ par sirgeese ] Bonjour à tous, J'ai une table que je souhaite mettre à jour régulièrement pour assurer un suivi quotidien de mes médias. Pour se faire, je doit créer


    Nos sponsors


    Sondage...

    Comparez les prix

    CalendriCode

    Mai 2012
    LMMJVSD
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   

    Consulter la suite du CalendriCode

    Photothèque

    A découvrir



     
    Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
    CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
    CodeS-SourceS.com© est une marque déposée tous droits réservés

    Google Coop CodeS-SourceS Google Coop CodeS-SourceS
    Temps d'éxécution de la page : 1,170 sec (4)

    Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales