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

Requêtes MySQL Discussion :

Moteur de recherche internet et requêtes SQL


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 53
    Points : 22
    Points
    22
    Par défaut Moteur de recherche internet et requêtes SQL
    Bonjour tout le monde,

    Voilà je viens vers vous aujourd'hui car je n'arrive pas a trouvé de solution à mon problème malgré de nombreuses recherches et de test.

    Tout d'abord, j'ai 3 tables (ville_francaise, region, pays) c'est 3tables ont plusieurs champs.
    Voici les table dans ma base des données :

    Table ville_francaise (c'était ma tout première table)
    Nom : table ville.PNG
Affichages : 1121
Taille : 88,8 Ko

    Table region (la deuxieme que j'ai rajouté apres)
    Nom : table region.PNG
Affichages : 1008
Taille : 29,7 Ko

    Table pays (la dernière ajoutée après avoir fait des expériences pour apprendre sur deux tables)
    Nom : table pays.PNG
Affichages : 1021
Taille : 21,4 Ko


    Oui je sais que, j'ai des pays étranger qui se retrouve en lien dans ma table ville_francaise et region mais c'est juste des tables factifs pour m'entrainer avant de réalisé dans la vrais BDD. De plus, c'est parce que au début je travaillais que sur deux tables et la table pays je l'ai rajouté bien après pour voir si j'arrivais avec plus que une ou deux tables. Donc je sais que par exemple la France-comté ne ce trouve pas au Portugal mais les noms on s'en fiche un peu c'est juste pour apprendre a utiliser plusieurs tables.
    Jusque là tout va bien ! J'ai réussi a faire mes tables avec des clef primaires et secondaire.
    J'ai également réussi a faire ma requête SQL qui est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "SELECT * FROM ville_francaise v 
    	LEFT OUTER JOIN  region r ON r.id_code_insee=v.id_code_insee
    	LEFT OUTER JOIN  pays p ON v.code_pays=p.code_pays
    	WHERE p.nom  LIKE '%%' "
    La où sa coince c'est à partir du moment ou j'essaie de connecter ma recherche par mot clef avec ma requête. En effet, j'ai une recherche de mot clef (pas définit/donc ca peut être n'importe quelle mot dans la limite du raisonnable) que l'utilisateur va taper et en fonction de cette recherche sa doit lui ressortir toute les lignes liées à la recherche. Il y a la possibilité de recherche de 1mot à 6mots donc si il tape 0 mot sa doit rien lui sortir, par contre si il tape 1mot sa doit ressortir les lignes des tables par rapport a ce mot, si l'utilisateur tape 2 mots (truc et machin, ex), la requete doit permettre de ressortir toutes les lignes liées au mot truc d'un coté et au mot machin de l'autre coté mais également au mot truc machin ensemble.

    Ma recherche de mot clef ce fait par un formulaire POST avec une classe 'search'.
    Voici donc comment j'ai fait avec ma requête.

    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
    // Pour lier la recherche de mot clef à ma requête. 
    
                if (!isset($_POST['search'])){
    			 $_SESSION['motClef']= NULL;
    	    }
    
    // 1- On prepare la requete 
    
    		$requete=$bdd->prepare("SELECT * FROM ville_francaise v 
    					LEFT OUTER JOIN  region r ON r.id_code_insee=v.id_code_insee
    					LEFT OUTER JOIN  pays p ON v.code_pays=p.code_pays
    					WHERE p.nom  LIKE '%".$_SESSION['motClef']."%'"); 
    		
    //Correspond a mes champs de recherche
    
    		$requete->bindValue(':nom',$_SESSION['nom']);
             	$requete->bindValue(':code_pays',$_SESSION['code_pays']);
             	$requete->bindValue(':id_code_insee',$_SESSION['id_code_insee']);
             	$requete->bindValue(':nom_region',$_SESSION['nom_region']);
             	$requete->bindValue(':libelle_voie',$_SESSION['libelle_voie']);
             	$requete->bindValue(':code_nature_voie',$_SESSION['code_nature_voie']);
    
    
    
    // 2- on exécute, avec les paramètres de la recherche
    
    		$requete->execute();

    Donc avec ce code j'ai tout qui s'affiche mais ma recherche par mot clef ne fonctionne pas. Je peut taper n'importe quoi j'aurai toujours le résultat ou j'ai toutes mes lignes qui ressortent.

    J'ai alors fait un var_dump($requete); pour voir si il me lisait bien ma requete, et donc j'obtient :

    object(PDOStatement)[4]
    public 'queryString' => string 'SELECT * FROM ville_francaise v
    LEFT OUTER JOIN region r ON r.id_code_insee=v.id_code_insee
    LEFT OUTER JOIN pays p ON v.code_pays=p.code_pays
    WHERE p.nom LIKE '%%'' (length=185)


    Et j'ai essayer plein de truc qui ne fonctionne pas non plus comme :
    if (!isset($_POST['search'])){ $_SESSION['motClef']= ""; } ou if (!isset($_POST['search'])){$_SESSION['motClef']= " ";} ou la même chaose sans le ' ! ' devant isset ou avec un empty ou encore en ajoutant $motClef = $_POST['search'];

    j'ai même essayer d'autres bon de code comme :

    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
     
     
    if (isset($_POST['Rechercher'])){
    			$motClef = '';
    			if($motClef != "" && strlen($motClef)>1){
     
    // 1- On prepare la requete
    		$requete=$bdd->prepare("SELECT * FROM ville_francaise v 
    					LEFT OUTER JOIN  region r ON r.id_code_insee=v.id_code_insee
    					LEFT OUTER JOIN  pays p ON v.code_pays=p.code_pays
    					WHERE p.nom  LIKE '%".$motClef."%'"); 
     
    			$requete->bindValue(':nom',$_SESSION['nom']);
             	$requete->bindValue(':code_pays',$_SESSION['code_pays']);
             	$requete->bindValue(':id_code_insee',$_SESSION['id_code_insee']);
             	$requete->bindValue(':nom_region',$_SESSION['nom_region']);
             	$requete->bindValue(':libelle_voie',$_SESSION['libelle_voie']);
             	$requete->bindValue(':code_nature_voie',$_SESSION['code_nature_voie']);
             	$Counter_products +=1;
     
        if($Counter_products==0){
          echo "Il n'y a aucun résultat pour votre recherche ". $motClef;
        }
     
      } elseif(strlen ( $motClef ) == 0){
        echo "Il n'y a aucun résultat pour votre recherche ".$motClef;
      } elseif(strlen ( $motClef ) == 1){
        echo "Il n'y a aucun résultat pour votre recherche ".$motClef;
      } else{ echo "";
        // traitement de l'erreur
      }
     
     
    // 2- on exécute, avec les paramètres de la recherche
    		$requete->execute();

    Bref je vais pas mettre tout ce que j'ai essayer car j'ai essayer de 12 façons différentes
    Et rien de tout ca ne fonctionne... Je suis un peu pommé et je ne vois pu d'autre solution même en cherchant sur internet.

    Alors j'espère que quelqu'un pourra m'aider avec des exemples afin que je puisse comprendre comment on fait..

    Merci a tous et bonne journée.

  2. #2
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    Un conseil :
    L'organisation de la recherche par 'mot' est à simplifier

    Une chaine( ou phrase ) donne un ensemble de mot dans un array
    PHP peut mettre en array une phrase et ensuite MYSQL et son moteur fera la recherche des mots dans les tables

    http://php.net/manual/fr/function.split.php

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 53
    Points : 22
    Points
    22
    Par défaut
    Merci du conseil

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/04/2016, 11h02
  2. Moteur de recherche PHP - Ajax - Jquery - SQL
    Par visual3d dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/05/2009, 15h45
  3. [moteur de recherche] dictionnaire synonymes, structure sql
    Par vasilov dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 09/09/2008, 12h59
  4. Recherche de moteur de recherche internet complet
    Par ReiVon dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 03/08/2006, 15h10
  5. [SQL] Recherche d'une requête SQL
    Par kilkikou dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/06/2006, 16h00

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