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 :

Recherche dans une base de donnée [ Gros soucis ] [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Recherche dans une base de donnée [ Gros soucis ]
    Bonsoir tous le monde,
    Comment allez vous

    C'est la premiere fois que je postule sur ce forum que j'ai beaucoup entendu parlé ! surtout en bien ! et depuis déjà environs 2 jours et demi.
    J'ai essayé pleins d'option et je suis encore et toujours au point de depart. je fais que d'essayer les methodes qu'on peut utiliser généralement mais la ca dépasse carrement mon niveau... donc j'abandonne. je peux plus chercher, ca me deprime.

    Pour revenir à mon probleme. je vais essayer d'etre le plus clair possible.
    Des phrases programmé renvoi a une reponse .. voila le but du script. (formulaire php + mysql )
    Je cherche un petit code, une sorte de source qui determine par rapport a une base de donnée le fait que
    depuis un champ de formulaire on puisse taper une phrase.

    chaque mot present dans cette phrase est appelé mot clef.

    Deux choses à conditionner.

    Déjà il faut savoir que il doit afficher un seul et unique resultat
    celui le plus proche.
    ensuite verifié l'ordre des mots qui ont été tapé.
    tjs vers celui le plus proche.

    Dans mon formulaire, la phrase que je tape est :

    Mon chocolat n'a pas de gout.

    // J'execute la requete mysql. 2 mots chocolats est presents dans la base.
    soit : le chocolat de jean est très bon mais pas assez sucré
    et : dans le chocolat il y a du sucre, ca lui donne plus de gout.

    Ma phrase : Mon chocolat n'a pas de gout

    Chocolat (2 eme position) dans la premiere phrase
    chocolat (3 eme position dans la deuxieme phrase

    pas = present dans la premiere phrase est ce situe 9 eme position
    Pas = non present dans la deuxieme phrase

    Gout = present dans la deuxieme phrase mais pas dans la premiere.


    donc 2 mots present dans la Deuxime phrase
    et 2 mots present dans la troisieme phrase.

    Gout est le plus long mot que pas ! donc on ignore la premiere phrase
    et on donne le resultat a la deuxieme soit

    '''''dans le chocolat il y a du sucre, ca lui donne plus de gout.'''''

    On peut éventuellement rajouté une n'autre condition pour encore plus sofistiqué le truc
    mais je ne vois pas quest ce que l'on pourrait faire d'autre...

    ---------------------
    Champ de la table mysql : question
    champ de la table mysql : resultat --> fetch_array($result); $contenu["resultat"];
    ------------------------


    PS: jai tous fais avec les LIKE mais c'est pas une des solutions qui pourrait etre adapté a ma situation , le fulltext depasse ma connaissance ! et Levenshtein, jai regardé la doc a mort toute la journée. je suis perdu je sais meme pas comment faire...

    FRANCHEMENT JE REMERCIE DAVANCE TOUTES LES PERSONNES QUI POURRAIT MAIDER A TROUVER DES SOLUTIONS LOGIQUE CONCRETE ET SERIEUSE PAR RAPPORT A MON PROBLEME

    merci encore a tous davance

    je vous souhaite une tres bonne journée
    cordialement Milka (TENDREMENT CHOCOLAT)

    --------------------
    Eventuellement javais commencé aussi un code comme celui la

    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
     
    <? include("config.php");
    if(empty($_POST["submit"])){
    }
    else{
    $array_ask = explode(' ',$_POST['question']);
    $first = true;
    $req = '';
    foreach ($array_ask as $key => $value)
    {
           if ($first)
           {
                $first = false;
           $req .= "`question` LIKE '%".$value."%'";
           }
    else
    {
           $req .= " OR `question` LIKE '%".$value."%'";
    }
     
    }
    $req_results = mysql_query("SELECT * FROM `faq` WHERE ".$req."");
     
     
    if ( @mysql_num_rows($req_results) == 0)
    {
       echo 'aucun r&eacute;sultat';
    }
    elseif(@mysql_num_rows($req_results)>1){
    echo 'Désolé mais je ne comprend pas votre question, pouvez vous etre plus precis';
    }
    elseif(@mysql_num_rows($req_results)==1){
    $rest = mysql_fetch_array($req_results);
     
    echo $rest['resultat'];
    }
    else{
    echo "erreur";
    }
     
     
     
     
     
    }
    ?>
    Le gros probleme c'est que il fait aucune différence entre une phrase et une autre. il en ressort tous les mots clefs presents que jai tapé dans mon formulaire.

    Le probleme avec mon script en haut c'est que il ignore pas le fait que dans un enregistrement par exemple :

    Je vais a la piscine
    1 1 1 1 1
    Je vais a la mer
    1 1 1 1 0

    le "je" le "vais" le "a" le "la"

    il l'ai garde pour lui, je veux dire il l'ai ignore pas.
    pourtant jai bien dis dans mon formulaire. je vais a la piscine
    donc il doit prendre le maximum de mot clefs pour retourner a un resultat unique.
    piscine est present dans mon formulaire !!!!! il doit ignorer l'enregistrement ou il y a la phrase je vais a la mer..

    donc le script en haut n'est pas complet et donc les like me sert pas a grand chose ! faut trouver une autre solution mais meme si je veux utiliser d'autres moyens ! perso ca depasse mes competence ! et jai reellement besoin d'un coup de pouce

    merci encore a tous !

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 41
    Points : 38
    Points
    38
    Par défaut
    salut

    Si j'ai bien capté ton blèm

    Ton programme doit ignoré "la" et "a" par exemple alors que lui il le fait pas !

    c'est normal vu qu'avec LIKE il va chercher tout les mot ou "la" exist comme "chocolat" et c'est pire avec "a".

    Si ta des mot préci sur la base, pkoi alors les like?
    met directement tes $value dans la requette.

    Dit moi si j'ai mal compris.

  3. #3
    Membre averti Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Points : 392
    Points
    392
    Par défaut
    tu peux toujours faire une recherche sur " la " afin qu'il ne trouve pas chocolat.
    Le but de tout developpeur OO est de devenir une référence.
    Mon avatar est un ambigramme, les curieux peuvent le retourner ;-)
    Aider <> Faire a la place de!!!

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    non non, entre le "la" et le "a" ya pas de soucis il fait la différence avec les mots collés. pas de soucis la dessus

    mais si ya deux fois le meme mots, le script ne cherchera pas de différence entre ce que j'ai enoncé plus haut dans mon message.

    donc ce que je recherche plus precisement c'est le fait dimposer le nombre de clef tapé par ordre afin de trouver dans la base quelque chose qui ce rapproche le plus. (c'est a dire : verifié l'ordre des mots qui ont été tapé. )

    peu importe si il existe plusieurs resultats comportant le meme mots mais verifié que dans le formulaire trouver le plus de mots clefs tapé et voir en quel positions ils sont pour ensuite quune requete puisse etre trouvé par rapport a un resultats le plus proche...


    DE TOUTE FACON JE DOIS CARREMENT OUBLIER LES LIKE CA C SUR...

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

Discussions similaires

  1. [Conception] formulaire et case à cocher et recherche dans une base de donnée
    Par olivier_1970 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 25/06/2006, 01h03
  2. problème de recherche dans une base de donnée mysql
    Par Xini28 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/10/2005, 18h00
  3. Recherche dans une base de donnée
    Par genova dans le forum SQLite
    Réponses: 8
    Dernier message: 28/09/2005, 23h16
  4. problème de recherche dans une base de données
    Par bouzid_mehdi dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2005, 06h47
  5. recherche dans une base de donnée+boucle
    Par eric205 dans le forum Bases de données
    Réponses: 8
    Dernier message: 15/03/2005, 21h14

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