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 :

aide pour resultat moteur de recherches


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Points : 39
    Points
    39
    Par défaut aide pour resultat moteur de recherches
    bonjour,

    je suis en train de faire un petit moteurd e recherche pour un de mes sites internet et je me retrouve face à 3 problemes :

    1 - si je fais une recherche depuis phpmyadmin pour par exemple sur le mot "paysages" : j'ai 15 resultats qui ressortent.
    maintenant si je passe par mon moteur de recherche avec la meme recherche je n'ai que 14 résultats. J'ai donc un resulat qui se perd quelque par.... (j'ai testé avec d'autres mot c'est pareil, un resultat en moins sur toutes les recherches)

    2 - lorsque je fait ma recherche par exemple sur le mot "lac" je n'ai pas de resultats alors que dans mes champs j'ai bien des données qui contiennent le mot lac en texte ex : "Photo aérienne de la tour de la merelle et le lac de gérardmer ".

    3 - Dans ma recherche si je rentre "gerardmer" j'ai pas de résultat à cause de l'accent. y'a t'il un moyen pour ne pas tenire compte des accents lors de la recherche et ainsi si un internaute rentre "gerardmer" il obtiendra les resultats avec "gérardmer" et "gerardmer".?

    voici ma table :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE TABLE `IWgalerie` (
    `id` bigint(20) unsigned NOT NULL auto_increment,
    `type` varchar(40) collate latin1_german2_ci default NULL,
    `ref` varchar(20) collate latin1_german2_ci default NULL,
    `exemple` varchar(20) collate latin1_german2_ci default NULL,
    `alt` text collate latin1_german2_ci,
    `photoref` varchar(255) collate latin1_german2_ci default NULL,
    `photoex` varchar(255) collate latin1_german2_ci default NULL,
    PRIMARY KEY (`id`),
    FULLTEXT KEY `recherche` (`type`,`ref`,`exemple`,`alt`)
    ) ENGINE=MyISAM AUTO_INCREMENT=86 DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=86 ;


    et mon code pour le moteur 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
    19
    20
    21
    22
    <?php
    include("../connexion-sql.php");
     
    function search()
              {
    $champ=$_POST['rechercherpar'];
    $mot=$_POST['mot_cle'];
     
    $resultat=mysql_query("SELECT * FROM IWgalerie WHERE match(`type`,`ref`,`exemple`,`alt`) against ('$mot')");
    $ligne=mysql_fetch_array($resultat);
     
       while($ligne = mysql_fetch_array($resultat))
              {
       $ref=$ligne['ref'];
       $alt=$ligne['alt'];
       $type=$ligne['type'];
     echo $ligne['id'].' '.$type.' '.$ref.' '.$alt.'
    <img src="../pages/mini-galerie.php?f='.$ligne['photoref'].'" alt="'.$ligne['alt'].'" border="0" width="168px" height="113px" class="reflect rheight31 ropacity33"/><br/>';
              }
              }
    search();
    ?>
    pourriez vous m'aider a resoudre ces 3 problemes ? je planche dessus depuis 2 jours sans avancer.

  2. #2
    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
    1 - par défaut les mots de 3 lettres ne sont pas indexés, tu peux le changer dans la configuration mysql
    2 - Tu as une ligne mysql_fetch_array qui se ballade toute seul, elle prend un resultat.
    3 - pourquoi tes tables ont un interclassement allemand ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Points : 39
    Points
    39
    Par défaut
    1 - ok merci je ne savais pas mais du coup si je change ca dans la config sql je vais récupérer toutes les "les des mes...." donc tant pi. (Pour ne pas mourir bête je peu changer ca ou et comment ?
    2 - effectivement c'est bon sa fonctionne mieux en supprimant la ligne en trop.
    3 - et bien je n'en sais strictement rien. Lorsque je crée mes tables via phpmysql elles chopent toujours un interclassement allemand. Sa ne me gène pas pour travaillé mais même si je crée un table sans interclassement une fois créé la table a un interclassement en allemand.

    j'ai un autre probléme. si dans ma recherche je rentre par exemple gerardmer je voudrai que les resultat qui resortent, resortent également gérardmer avec l'accent et ce dans les deux sens.
    Comment gere ton les accents ?

    j'ai essayé avec like mais sa marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat=mysql_query("SELECT * FROM IWgalerie WHERE match(type,ref,exemple,alt) against ('LIKE $mot' IN BOOLEAN MODE)");
    Sinon merci c'est gentil de m'avoir aidé.

  4. #4
    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
    Je ne garantis pas que ca vienne de la mais essaie avec le bon interclassement.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Points : 39
    Points
    39
    Par défaut
    ok et le bon interclassement serait ?

  6. #6
    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
    latin1_general_cs ou latin1_general_ci devrait marcher.

    j'ai fais le test de mon côté (moi je fais tout en UTF8) et il trouve bien "é" pour "e" et "e" pour "é"

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Points : 39
    Points
    39
    Par défaut
    bon je suis passe en latin1_general_ci et sa ne fonctionne toujours pas.
    si je rentre geradmer dans ma recherche il ne me ressort pas les resultat avec gérardmer.

Discussions similaires

  1. Aide pour création moteur de recherche
    Par newsuser dans le forum Réseau/Web
    Réponses: 0
    Dernier message: 27/11/2011, 00h07
  2. [Smarty] Besoin d'aide pour le moteur de template smarty
    Par all2me dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 28/04/2007, 10h19
  3. Réponses: 7
    Dernier message: 03/04/2007, 20h57
  4. [SQL] Aide pour un moteur de recherche
    Par Death83 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 26/10/2005, 14h12
  5. comment faire ma base de donnée pour un moteur de recherche
    Par HoB dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 04/05/2004, 15h07

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