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 :

Mini moteur de recherche


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 107
    Points : 65
    Points
    65
    Par défaut Mini moteur de recherche
    Bonjour,

    Je voudrais réaliser un petit moteur de recherche selon des critères précis. Je voudrais trouver le logement correspondant à la ville par exemple...

    Dans ma base de données la table logement est reliée à la table ville par la clé primaire de ville "CodeVille" à la clé étrangère dans logement "villeLog".

    Je n'arrive pas à afficher les résultats voulus...

    Voici le code php de ma page de recherche :
    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
     
    //requete sql
    mysql_select_db($database_conn_locasaison, $conn_locasaison);
      $query_rsVille = sprintf('SELECT DISTINCT codeVille, nomVille FROM ville GROUP BY nomVille ORDER BY nomVille', $colname_rsVille);
      $rsVille = mysql_query($query_rsVille,$conn_locasaison) or die(mysql_error());
      $row_rsVille = mysql_fetch_assoc($rsVille);
     
    //formulaire d'envoi
    <form action="search.php" method="POST">
          <H3>Par ville </H3>
          <select name="nomVille" id="select"> 
          <?php do {?>
              <option value="<?php $row_rsVille['nomVille'] ?>">
                <?php echo $row_rsVille['nomVille'];?></option>
             <?php } while ($row_rsVille = mysql_fetch_assoc($rsVille)) ?>
          </select>
          <input type="submit" value="Rechercher" id="submit">
    </form>
    Et celui de ma page qui traite la donnée envoyée lors du clic sur le bouton d'envoi :
    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
     
    //requete qui affiche les logements correspondants à la ville
    mysql_select_db($database_conn_locasaison, $conn_locasaison);
          $query_rsLogTrouve = sprintf("SELECT * FROM logement, ville 
                                        WHERE logement.villeLog =ville.codeVille AND nomVille=".$_POST['nomVille'].";");
          $rsLogTrouve = mysql_query($query_rsLogTrouve,$conn_locasaison) or die(mysql_error());
          $row_rsLogTrouve = mysql_fetch_assoc($rsLogTrouve);
    if (isset($_POST['nomVille']) and $_POST['nomVille']!=""){
      //on récupère la donnée envoyée
      $ville = htmlentities($_POST['typeLog']);
      if (isset($type)) {
          //affichage des logements correspondants
          //if (isset($_POST['typeLog']) and $_POST['typeLog']!="")){
          //$sql = 'SELECT * FROM ville WHERE nomVille ='.$ville.';';
          echo 'blablabla';
          }else{
            echo 'Erreur !';
          }
    }
    Plus de précisions : Sur la page de recherche, je choisis la ville "Barbatre" dans ma liste déroulante, je clique sur "Rechercher", ça doit me renvoyer le ou les logements correspondants à la ville choisie...

    Quelqu'un aurait-il une idée ?

    Cordialement,
    Ginger

  2. #2
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    salut,
    un post qui peut peut être t'aider http://www.developpez.net/forums/d72...eur-recherche/
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 107
    Points : 65
    Points
    65
    Par défaut mini moteur de recherche
    Merci thes32,

    j'ai utilisé la méthode du lien que tu as mis. Du coup j'utilise une simple barre de recherche et non plus des recherches par critères classés par ville, par date etc...

    Cela affiche bien un résultat, mais seulement le 1er résultat trouvé dans la table. Comment faire pour afficher tous es résultats correspondant au mot recherché ?

    Voici mon code de la page de recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form method="post" action="search.php"> 
      <input type="text" name="recherche">
      <input type="submit" value="Trouver" id="submit"> 
    </form>
    Et celui de la page qui traite ces 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
     
    <?php
          // Récupèration de la variable
          mysql_select_db($database_conn_locasaison, $conn_locasaison);
          $recherche = isset($_POST['recherche']) ? $_POST['recherche'] : '';
          if ($recherche) {
            // la requete mysql
            $sql = mysql_query("SELECT * FROM logement 
                                        WHERE typeLog LIKE '%".$recherche ."%'
                                        GROUP BY typeLog AND libreLog=1") 
                                        or die (mysql_error());
            // affichage du résultat
            echo '<div id="titre">Résultats de la recherche<br /><br /></div>';
            while($row=mysql_fetch_array($sql)){
     
              echo "<div id='soustitre'>
                    Type de logement : ".$row['typeLog']." n° ".$row['codeLog']."
                    <br />
                    Surface : ".$row['surfaceLog']." m²<br />
                    Nombre de pièces : ".$row['nbPiecesLog']."<br />
                    Nombre de lits : ".$row['nbLitsLog']."<br />
                    Statut handicapé : ".$row['handiLog']."<br />
                    Photo : <a href='photoLogement.php'>Voir</a><br /></div>";
     
            }
          }        
        ?>
    Pour l'instant je ne fais une recherche que par rapport à la table logement, mais je voudrais aussi pouvoir rechercher un logement en tapant un nom de ville (qui correspond à la table ville et non à la table logement, ce s2 tables étant reliées).

    Cordialement,
    Ginger

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 107
    Points : 65
    Points
    65
    Par défaut Barre de recherche
    Je réussis à afficher le premier logement de la table seulement a partir d'une recherche dans la barre en tapant le type de ce logement, mais je voudrais aussi pouvoir afficher un logement grâce au nom d'une ville (donc en utilisant une autre table que logement, soit ville), par exemple. J'ai fait une ebauche de code mais ça ne me renvoie rien.

    Voici ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $sql = mysql_query("SELECT logement.*, ville.*, proprietaire.*, periode.* 
                                FROM logement 
                                INNER JOIN ville ON ville.codeVille = logement.villeLog
                                INNER JOIN proprietaire ON proprietaire.codePropr = logement.codePropr
                                INNER JOIN periode ON periode.codePeriode = logement.codePer
                                WHERE typeLog LIKE '%".$recherche ."%'
                                OR nomVille LIKE '%".$recherche."%'
                                OR nomPropr LIKE '%".$recherche."%'
                                OR dateDebPeriode LIKE '%".$recherche."%'
                                GROUP BY '%".$recherche."%'") or die (mysql_error());
    Ca ne retourne aucun resultat sous phpMyAdmin...

    Une idée ?

    Cordialement,
    GInger

Discussions similaires

  1. Créer un mini moteur de recherche dans une application Windows 8
    Par danieldou dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/11/2013, 21h32
  2. [AC-2003] mini moteur de recherche
    Par Fg9242 dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/04/2013, 13h49
  3. Mini Moteur de recherche
    Par java2dev dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 16/01/2011, 00h09
  4. [MySQL] mini moteur de recherche
    Par supupoff dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 31/05/2010, 15h30

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