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 :

Moteur de recherche simple en php [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Août 2016
    Messages : 12
    Par défaut Moteur de recherche simple en php
    Bonjour,

    j'essaie de créer un moteur de recherche pour ma base. Ci-joint mon code :
    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
    <!DOCTYPE html>
     
    <html lang="fr">
     
    <head>
     
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
     
    <title>RECHERCHE</title>
     
    </head>
     
    <body>
     
    <form action="" method="POST" enctype="application/x-www-form-urlencoded">
     
    <fieldset>
    <legend><b>Rechercher un dossier</b></legend>
     
    <table>
    <tbody>
    <tr>
    <td> Affaire : </td>
    <td><input type="text" name="AFFAIRE" size="40" maxlength="40"/></td>
    </tr>
     
    <tr><td>
    <select name="CA">
    <option value="tous">tous</option>
    <option value="ABDA">ABDA</option>
    </select>
    </td></tr>
     
    <tr><td><input type="submit" value="RECHERCHER" /></td></tr>
     
    </tbody>
    </table>
    </fieldset>
    </form>
     
    <?php
     
    if(!empty($_POST['AFFAIRE']))
    {
    include('connect.php');
    $idcom=connexobjet('magasin','myparam');
     
    $AFFAIRE=strtolower(($_POST['AFFAIRE']));
    $CA=$_POST['CA'];
     
    $reqCA=($_POST['CA']=="tous")?"":"AND CA='$CA'";
    $requete="SELECT AFFAIRE,CA,AMEO FROM client WHERE lower(AFFAIRE) LIKE lower('%AFFAIRE%')".$reqCA." ORDER BY AFFAIRE";
    $result=$idcom->query($requete);
     
    if(!$result)
    {
    echo "Lecture impossible";
    }
    else
    {
    $nbcol=$result->field_count;
    $nbart=$result->num_rows;
    $titres=$result->fetch_fields();
    echo "il y a $nbart dossiers correspondants au critère choisi : $AFFAIRE";
     
    echo "<table><tr>";
     
    foreach($titres as $nomcol=>$val)
    {
    echo "<th>", $titres[$nomcol]->name,"</th>";
    }
     
    echo "<tr>";
     
    for($i=0;$i<$nbart;$i++)
    {
    $ligne=$result->fetch_row();
     
    echo "<tr>";
     
    for($j=0;$j>$nbcol;$j++)
    {
    echo "<td>",$ligne[$j],"</td>";
    }
    echo "</tr>";
    }
     
    echo "</table>";
     
    $result->free();
    $idcom->close();
    }
    }
     
    ?>
     
    </body>
    </html>
    En résultat j'obtiens :

    Nom : Capture.PNG
Affichages : 2540
Taille : 7,3 Ko

    Il ne trouve pas le dossier alors que celui-ci existe bien dans la base.

    Merci de votre aide.

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    salut

    je te propose de récupérer le code SQL généré par ton code via un var_dump($requete); et de la recoller telle quelle dans une console sql de ta base de donnée.
    Comme ça tu regardes si le pb vient de ta requête ou d'ailleurs.

    et je me retiens de dire mon avis sur ta façon de génerer du sql.

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Par défaut
    Bonjour j'ai traité ce genre de souci il y a pas longtemps voila un code que tu peux t'en inspiré.

    c'est pour moi un moteur de recherche multicritere mais tu peux l'adapter pour une seule critére

    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
    <?php
    session_start();
     
    include("mysqlcon.php");
     
        extract($_POST);
     
        $i = 0;
     
     
        // si la variable est présente, on lui affecte une place dans le tableau 'choix[]', qui nous servira ensuite à construire le WHERE de la requête.
        if(!empty($toncritere)) { $choix[$i++] = "toncritere= '$toncritere'"; }
     
        // etc... tu fais pareil pour chaque critère
     
        // on insère les éléments remplis dans une variable $critere, en commençant par la première occurrence, puis on boucle
        $critere = $choix[0]." ";
     
        for($j=1;$j<$i;$j++) 
        {
          $critere .= " AND ".$choix[$j]." ";
        }
     
     
    //get total number of records from database
    $results = $conn->query("SELECT COUNT(*) FROM membre where $critere");
    $get_total_rows = $results->fetch_row(); //hold total records in variable
    //break records into pages
     
     
        // enfin on fait la requête si $i >0, ça veut dire qu'il y a des critères
        if($i > 0) 
        {
          // requete de selection
          $sql = "SELECT * FROM membre WHERE $critere ORDER BY connexion DESC ";
     
          $requete = $conn->query($sql);
    	   $sqlpag = "SELECT * FROM membre WHERE $critere";
          $requetepag = $conn->query($sqlpag);
     
    	    }
     
        // si $i = 0, alors l'utilisateur n'a pas saisi de critère, là soit on fait la même requete mais sans "WHERE $critere", soit on lui demande de saisir au moins un critère.
        else 
        {
          $sql = "SELECT * FROM membre ORDER BY connexion ";
     
    	  $requete = $conn->query($sql);
     
     
     
        }
     
     
    ?>

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Bonsoir,

    Ton code n'est pas protégé contre les injections (et l'extension MySQL n'existe plus dans les versions récentes de PHP). C'est très louable de vouloir aider les débutants , mais prends garde à ne pas leur donner du code dangereux qui peut leur donner des mauvaises habitudes (ou mettre leurs sites en danger).

    Une révision du code en mysqli ou PDO serait plus approprié.

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Par défaut
    j'ai bien précicé qu'il pouvait s'en servir et le modifié comme bon lui semble, ce code est déjà en mysqli

    Pour ma part il est trés bien protégé sur mon site car j'y ai fait une adaptation jquery avec pagination des résultats en jquery , mais vue que c'est pas le but de sa demande et le sujet approprié j'ai fait simple

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Citation Envoyé par toulousain3117 Voir le message
    j'ai bien précicé qu'il pouvait s'en servir et le modifié comme bon lui semble, ce code est déjà en mysqli

    Pour ma part il est trés bien protégé sur mon site car j'y ai fait une adaptation jquery avec pagination des résultats en jquery , mais vue que c'est pas le but de sa demande et le sujet approprié j'ai fait simple

    Argh c'est vrai c'est déjà en MySQLi, je suis désolé! J'ai eu un timeout dans ma tête, mon interpréteur ne traitait plus mes entrées/sorties.

    Je te prie de m'excuser!

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

Discussions similaires

  1. Moteur de recherche multicritère - Sans PHP
    Par pito2901 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 02/06/2014, 20h33
  2. [MySQL] moteur de recherche simple
    Par yotman dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 06/06/2013, 16h42
  3. moteur de recherche SIMPLE
    Par lynnaryas dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 15/04/2012, 13h58
  4. Moteur de recherche intradocument en PHP
    Par sculpteur dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 04/10/2007, 00h02
  5. [MySQL] Créer un moteur de recherche simple ?
    Par eXe|xTn dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/04/2006, 00h09

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