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 :

code php pour moteur de recherche


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    etudiant en informatique
    Inscrit en
    Décembre 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : etudiant en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 7
    Points : 6
    Points
    6
    Par défaut code php pour moteur de recherche
    bonjour a tous

    je veux creer un moteur de recherche a l'aide de 3 champs: lieu,prix,superficie pour permettre a l'internaute de chercher son choix dans ma base de donnée.

    je voudrais le code php qui permettrait dans un premier afficher un résultat si les 3 critères rentrés par l’internaute sont respectés et ensuite et juste en dessous du premier résultat afficher un deuxième résultats qui affiche les données qui qui respectent au moins un des critères rentré par l'internaute.

    NB: le résultat obtenu au premier ne doit apparaitre dans le deuxième

    Aidez moi s'il vous plait. merci

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour.

    Il y a bcp de travail ! Vous devez :

    1- Créer une page HTML ou PHP, qui n'est qu'un formulaire (<FORM>)

    2- Créer une page PHP qui va attaquer votre base de donnnées et afficher les résultats selon les critères saisis

    C'est la page 2 qui est la plus difficile. Elle doit construire la requête SQL, mais surtout gérer le résultat :

    - Gérer ce que l'internaute a saisi (il n'a peut-être pas renseigné correctement les critères) Cela peut aussi être fait en JS au niveau de page 1.
    - S'il n'y a pas de réponse, il faut demander à l'internaute de modifier ses critères.
    - S'il y a trop de réponses, lui demander d'affiner les critères
    - Si le nbre de réponses est "raisonnable" les afficher

  3. #3
    Futur Membre du Club
    Homme Profil pro
    etudiant en informatique
    Inscrit en
    Décembre 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : etudiant en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 7
    Points : 6
    Points
    6
    Par défaut rectification scripte
    je voudrais le code php qui permettrait dans un premier afficher un résultat si les 3 critères rentrés par l’internaute sont respectés et ensuite et juste en dessous du premier résultat afficher un deuxième résultats qui affiche les données qui qui respectent au moins un des critères rentré par l'internaute.
    voici 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
    $req_AND = mysql_query("select * from batiment where lieu='$lieu' and superficie='$superf' and prix='$prix'");
    $nombre_de_resultat = mysql_num_rows($req_AND);
    if($nombre_de_resultat == 0){
    echo "<p align=center><font color=red size=+2>AUCUN RESULTAT NE CORRESPOND A VOTRE RECHERCHE!</font></p>";
    }
    else{
    while($dnn_AND = mysql_fetch_array($req_AND)){
    ?>
    <tr>
    <td bgcolor="#CCCCCC"><?php echo($dnn_AND['id']); ?></td>
    <td><?php echo htmlentities($dnn_AND['lieu'], ENT_QUOTES, 'UTF-8'); ?></td>
    <td width="152"><?php echo htmlentities($dnn_AND['superficie'], ENT_QUOTES, 'UTF-8'); ?></td>
    <td width="132"><?php echo htmlentities($dnn_AND['prix'], ENT_QUOTES, 'UTF-8'); ?></td>
    <td bgcolor="#CCCCCC" width="152"><?php echo($dnn_AND['description']); ?></td>
     
     
    </tr>
    <?php
    }
    }
    ?>
    <tr>
    </table>
    <BR/><BR/>
    <HR/>
    <p><font color="#006600" size="+2">Résultats qui pourraient vous interrésser...</font></p>
    </table>
    <table width="596" border="1" align="center">
    <tr>
    <td width="70" align="center" bgcolor="#FFFFFF">ID</td>
    <td width="169" align="center" bgcolor="#FFFFFF">LIEU</td>
    <td align="center" bgcolor="#FFFFFF">SUPERFICIE</td>
    <td align="center" bgcolor="#FFFFFF">PRIX</td>
    <td align="center" bgcolor="#FFFFFF">DESCRIPTION</td>
     
    </tr>
    <?php
    $req = mysql_query("select * from batiment where lieu='$lieu' or superficie='$superf' or prix='$prix'");
    while($dnn = mysql_fetch_array($req)){
    ?>
    <tr>
    <td bgcolor="#FFFFFF"><?php echo($dnn['id']); ?></td>
    <td><?php echo htmlentities($dnn['lieu'], ENT_QUOTES, 'UTF-8'); ?></td>
    <td width="152"><?php echo htmlentities($dnn['superficie'], ENT_QUOTES, 'UTF-8'); ?></td>
    <td width="132"><?php echo htmlentities($dnn['prix'], ENT_QUOTES, 'UTF-8'); ?></td>
    <td bgcolor="#CCCCCC" width="152"><?php echo($dnn['description']); ?></td>
    </tr>
    <?php
    }
    mon souci est lorsqu'un resultat est trouvé dans la première requete AND, celle si apparait encore dans les proposition de ma deuxieme requete OR

    NB: le résultat obtenu au premier ne doit apparaitre dans le deuxième

    aidez moi sil vous plait

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur PHP
    Inscrit en
    Mai 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur PHP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 37
    Points : 76
    Points
    76
    Par défaut
    j'ai une solution en une requête.
    La requête calcul le nombre de valeurs matchant si le nombre de match est égal au nombre de valeurs recherchées c'est que la concordance est parfaite -> les données sont mise dans le premier tableau. Pour les autres valeurs elles sont mise dans le deuxième.
    J'ai mis une construction dynamique de requête à partir d'un tableau ça permet de changer le nombre de critères de recherche sans modifier l'ensemble du code.
    En gros ça donne ç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
    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
    <?php
     
    //Tableau des restrictions
    $restrictions = array('lieu'       => '\'' . $lieu   . '\'',
                          'superficie' => '\'' . $superf . '\'',
                          'prix'       => '\'' . $prix   . '\'',);
     
    //Construction de la requete
    $requete = 'SELECT id,' . implode(',',  array_keys($restrictions)) . ',description,'
            . implode('+', array_map(function($field,$value){ 
                                        return 'IF(`'. $field . '` =' . $value . ',1,0)'; 
                                     },  array_keys($restrictions), $restrictions) ) . ' AS `match` '
            . ' FROM batiment '
            . ' WHERE ' . implode(' OR ', array_map( function($field,$value){         
                                                        return '`'. $field . '` =' . $value ; 
                                                    },  array_keys($restrictions), $restrictions) ) . ''
            . ' ORDER BY `match` DESC';
    /**
     * Donnera une requête de ce format
     * SELECT id,lieu,superficie,
     *        prix,description,
     *        IF(`lieu` ='Toto',1,0)+IF(`superficie` ='Titi',1,0)+IF(`prix` ='Tata',1,0) AS `match` 
     * FROM batiment 
     * WHERE `lieu` ='Toto' OR `superficie` ='Titi' OR `prix` ='Tata' 
     * ORDER BY `match` DESC
     */
    $result = mysql_query($requete);
     
    //Si la requête a ramené quelquechose
    if( $datas = mysql_fetch_assoc($result)) {
        //Si le nombre de match est inférieur au nombre de restriction
        if( count($restrictions) > $datas['match'] ) {
            echo "<p align=center><font color=red size=+2>AUCUN RESULTAT NE CORRESPOND A VOTRE RECHERCHE!</font></p>";        
        } else {
            ?>
    <table width="596" border="1" align="center">
        <tr>
            <td width="70" align="center" bgcolor="#FFFFFF">ID</td>
            <td width="169" align="center" bgcolor="#FFFFFF">LIEU</td>
            <td align="center" bgcolor="#FFFFFF">SUPERFICIE</td>
            <td align="center" bgcolor="#FFFFFF">PRIX</td>
            <td align="center" bgcolor="#FFFFFF">DESCRIPTION</td>
     
        </tr>
    <?php
            do {
    ?>
        <tr>
            <td bgcolor="#CCCCCC"><?php echo($datas['id']); ?></td>
            <td><?php echo htmlentities($datas['lieu'], ENT_QUOTES, 'UTF-8'); ?></td>
            <td width="152"><?php echo htmlentities($datas['superficie'], ENT_QUOTES, 'UTF-8'); ?></td>
            <td width="132"><?php echo htmlentities($datas['prix'], ENT_QUOTES, 'UTF-8'); ?></td>
            <td bgcolor="#CCCCCC" width="152"><?php echo($datas['description']); ?></td>
        </tr>
    <?php
            //On boucle tant qu'il y a des lignes et que la concordance est parfaite
            }while ( $datas = mysql_fetch_assoc($result) && count($restrictions) == $datas['match']);
    ?>
    </table>            
    <?php
        }
        //On ne rentre que si le précédent fetch a ramené des données
        if( $datas ) {
     ?>
    <BR/><BR/>
    <HR/>
    <p><font color="#006600" size="+2">Résultats qui pourraient vous interréssez...</font></p>
    </table>
    <table width="596" border="1" align="center">
        <tr>
            <td width="70" align="center" bgcolor="#FFFFFF">ID</td>
            <td width="169" align="center" bgcolor="#FFFFFF">LIEU</td>
            <td align="center" bgcolor="#FFFFFF">SUPERFICIE</td>
            <td align="center" bgcolor="#FFFFFF">PRIX</td>
            <td align="center" bgcolor="#FFFFFF">DESCRIPTION</td>
     
        </tr>
    <?php
            do {
    ?>
        <tr>
            <td bgcolor="#FFFFFF"><?php echo($datas['id']); ?></td>
            <td><?php echo htmlentities($datas['lieu'], ENT_QUOTES, 'UTF-8'); ?></td>
            <td width="152"><?php echo htmlentities($datas['superficie'], ENT_QUOTES, 'UTF-8'); ?></td>
            <td width="132"><?php echo htmlentities($datas['prix'], ENT_QUOTES, 'UTF-8'); ?></td>
            <td bgcolor="#CCCCCC" width="152"><?php echo($datas['description']); ?></td>
        </tr>
    <?php
            //on boucle tant qu'il y a des lignes
            } while ( $datas = mysql_fetch_assoc($result) );
    ?>
    </table>  
    <?php
        } //if( $datas )
    }//if( $datas = mysql_fetch_assoc($result))
    si tu as des questions n'hésite pas.

    JFFM

Discussions similaires

  1. code pour moteur de recherche interne
    Par Invité dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 24/01/2011, 11h58
  2. Probleme vba pour moteur de recherche ACCESS
    Par sylvaindenisbe dans le forum Modélisation
    Réponses: 1
    Dernier message: 10/05/2007, 14h30
  3. Algorithme d'indexation pour moteur de recherche
    Par caspertn dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 24/04/2006, 16h57
  4. Problème requete pour moteur de recherche
    Par vincedjs dans le forum Requêtes
    Réponses: 48
    Dernier message: 15/03/2006, 14h47

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