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 :

Moteur de recherche en PHP


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut Moteur de recherche en PHP
    Bonjour à tous,

    Alors voila en fait j'ai un problème lorsque je me rend sur la page de recherche du moteur de recherche la liste complète de ma table s'affiche déjà sans avoir lancer une requête par contre lorsque je recherche une information particulière avec la il m'affiche que le résultat précis donc comment faire pour l'empêcher d'afficher la liste complète de ma table sans avoir lancer de requête. Merci d'avance

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Salut,

    Ta question serait sans doute mieux placée dans le forum php.

    Pour le reste il faudrait préciser le contexte, donner un bout de code notamment la requête que tu fais pour tes recherches. Je doute que le moteur de recherche affiche quelque chose si aucune requête n'est faite, cela doit donc être le résultat d'un comportement par défaut qu'il faut changer.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Points : 1 385
    Points
    1 385
    Par défaut
    Bonjour,

    le forum PHP serait effectivement mieux adapté. Pour votre problème, sans plus d'élément, peut-être que ce qui suit résoudra votre problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (trim($mots_recherches) != '')
    {
       // code de la recherche
    }

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut
    J'arrive pas pouvez vous me donner un code php pour créer moteur de recherche qui recherche dans une table des membres. Merci

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Non, on ne peut pas te donner un code tout fait. On peut éventuellement t'aider à comprendre pourquoi ton code actuel ne fonctionne pas comme prévu et peut-être à le corriger, mais pour cela il faut que tu nous montres ton code.

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut
    Je ne l'ais plus car je compte le refaire entièrement

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Bonjour,

    Dans ce cas-là, revient sur ce topic quand tu aura quelque chose de concret à présenter. De la manière dont tu nous présentes les choses, personne ici ne pourra réellement t'aider.

    Bon courage !

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu peux lire les Tutos Comprendre PDO pour les interrogations de base de données, Affichage de données dans un tableau HTML (attention ce tuto utilise l'API Mysql qui est obsolète et à remplacer par PDO) et un peu de Les formulaires et PHP5 (pour créer ton formulaire de recherche)

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut
    Je souhaiterais pouvoir avoir le lien vers la page du membre selon l'id du membre rechercher 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
    <div id="search">
    <?php
     
    $bdd = new PDO('mysql:host=localhost;dbname=bdd', 'user', 'mdp');
     
    $membres = $bdd->query('SELECT pseudo AND id FROM membres ORDER BY id DESC');
    if(isset($_GET['q']) AND !empty($_GET['q'])) {
       $q = htmlspecialchars($_GET['q']);
       $membres = $bdd->query('SELECT pseudo AND id FROM membres WHERE pseudo LIKE "%'.$q.'%" ORDER BY id DESC');
       if($membres->rowCount() == 0) {
          $membres = $bdd->query('SELECT pseudo AND id FROM membres WHERE CONCAT(pseudo) LIKE "%'.$q.'%" ORDER BY id DESC');
       }
    }
    ?>
    <form method="GET">
       <input type="search" name="q" placeholder="Recherche..." />
       <input type="submit" value="Valider" />
    </form>
    <div class="result">
    <?php if($membres->rowCount() > 0) { ?>
       <ul>
       <?php while($a = $membres->fetch()) { ?>
          <li><a href="http://www.monsite.com/profil.php?id=<?php echo $a['id']; ?>"><?php echo $a['pseudo']; ?></a> ?></li>
       <?php } ?>
       </ul>
    <?php } else { ?>
    Aucun résultat pour: <?= $q ?>...
    <?php } ?>
    </div>
    </div>
    et voici l'erreur qui s'affiche parmis les résultats :
    Notice: Undefined index: pseudo in /var/www/monsite/actu.php on line 79
    merci d'avance pour votre aide

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'SELECT pseudo AND id FROM ...
     
    WHERE CONCAT(pseudo) LIKE "%'.$q.'%" ...'
    il va falloir réviser (ou apprendre) la syntaxe SQL !

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'SELECT pseudo, id FROM ...
     
    WHERE pseudo LIKE "%'.$q.'%" ...'

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut
    Ok merci mille fois je te dois énormément tout marche avec toi c'est magique vraiment et encore merci.
    Et un sujet de plus de résolu

  12. #12
    Invité
    Invité(e)
    Par défaut
    D'autre part, je t'invite GRANDEMENT à utiliser une requête préparée :
    remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       $membres = $bdd->query('SELECT pseudo AND id FROM membres WHERE pseudo LIKE "%'.$q.'%" ORDER BY id DESC');
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       $membres = $bdd->prepare('SELECT pseudo, id FROM membres WHERE pseudo LIKE :pseudo ORDER BY id DESC');
       $membres->execute( array( ':pseudo' => '%'.$q.'%') );
    Dernière modification par Invité ; 12/05/2016 à 23h26.

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut Parler trop vite
    En fait non le sujet n'est pas résolu car lorsque je n'ais pas entrer de requete de recherche il m'affiche déjà toute ma table complete dans les résultat alors comment masquer c'est résultat non valable ?

  14. #14
    Invité
    Invité(e)
    Par défaut
    Normal, sans critère de recherche, ça affiche tout (pas de filtre).


    Montre ta requête.
    Et la gestion d'erreur (si PAS de critère -> ...)

  15. #15
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut
    Ma requete est dans ce 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
    <?php
     
    $bdd = new PDO('mysql:host=localhost;dbname=bdd', 'user', 'mdp');
     
    $membres = $bdd->query('SELECT pseudo AND id FROM membres ORDER BY id DESC');
    if(isset($_GET['q']) AND !empty($_GET['q'])) {
       $q = htmlspecialchars($_GET['q']);
       $membres = $bdd->query('SELECT pseudo AND id FROM membres WHERE pseudo LIKE "%'.$q.'%" ORDER BY id DESC');
       if($membres->rowCount() == 0) {
          $membres = $bdd->query('SELECT pseudo AND id FROM membres WHERE CONCAT(pseudo) LIKE "%'.$q.'%" ORDER BY id DESC');
       }
    }
    ?>
    <form method="GET">
       <input type="search" name="q" placeholder="Recherche..." />
       <input type="submit" value="Valider" />
    </form>
    <div class="result">
    <?php if($membres->rowCount() > 0) { ?>
       <ul>
       <?php while($a = $membres->fetch()) { ?>
          <li><a href="http://www.monsite.com/profil.php?id=<?php echo $a['id']; ?>"><?php echo $a['pseudo']; ?></a> ?></li>
       <?php } ?>
       </ul>
    <?php } else { ?>
    Aucun résultat pour: <?= $q ?>...
    <?php } ?>

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    htmlspecialchars() n'a rien à faire là et ton CONCAT ne sert à rien puisqu'il n'y a qu'une seule valeur dedans.

    Avec une requête préparée ç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
    $bdd = new PDO('mysql:host=localhost;dbname=bdd', 'user', 'mdp');
     
    $param = array();
     
    $sql = 'SELECT pseudo, id FROM membres';
    if (!empty($_GET['q'])) {
        $sql .= ' WHERE pseudo LIKE ?');
        $param = '%' . $_GET['q'] . '%';
    }
    $sql .= ' ORDER BY id DESC';
     
    $sth = $bdd->prepare($sql);
    $sth->execute($param);

  17. #17
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT pseudo AND id FROM....

  18. #18
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut
    Voyez ce que ça me fait :
    Nom : capture.jpg
Affichages : 191
Taille : 20,0 Ko
    et vous remarquez que je n'ais rien entré dans mon champs de recherche.
    Par contre niveau css c'est en construction donc ne vous perturbez pas avec cela.

  19. #19
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT pseudo AND id FROM....
    Et bien en fait cela est du au copier coller du code au dessus mais dans mon code maj il y a la ,

  20. #20
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu ne veux rien quand la recherche est vide, il faut tout mettre dans la condition, ce n'est quand même pas difficile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $bdd = new PDO('mysql:host=localhost;dbname=bdd', 'user', 'mdp');
     
    if (!empty($_GET['q'])) {
        $sql = 'SELECT pseudo, id FROM membres WHERE pseudo LIKE ?  ORDER BY id DESC');
        $sth = $bdd->prepare($sql);
        $sth->execute(array('%' . $_GET['q'] . '%'));
        while($data = $sth->fetch()) { ?>
          <li><a href="http://www.monsite.com/profil.php?id=<?php echo $data['id']; ?>"><?php echo $data['pseudo']; ?></a> ?></li>
       <?php }
    }

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/07/2006, 09h42
  2. [Tableaux] Moteur de recherche en PHP
    Par Msieurduss dans le forum Langage
    Réponses: 3
    Dernier message: 16/06/2006, 14h25
  3. Problème sur moteur de recherche
    Par itachi64 dans le forum ASP
    Réponses: 9
    Dernier message: 24/03/2006, 14h41
  4. [Tableaux] comment faire un moteur de recherche en php
    Par lindouchine dans le forum Langage
    Réponses: 4
    Dernier message: 23/03/2006, 23h14
  5. problème avec moteur de recherche
    Par allyson dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 16/02/2005, 16h23

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