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 :

Rechercher dans les fichiers d'un répertoire


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut Rechercher dans les fichiers d'un répertoire
    Bonjour ,
    je develope un site en php/mysql.
    J'ai un repertoire dans lequel sont logés mes fichiers qui sont telechargeables.
    Maintenant je veux faire un moteur de recherche qui permet de rechercher un texte dans mes fichiers. Le resultat doit afficher la partie de mon fichier qui correspond au resultat et non tout le fichier.

    Merci de m'aider!

  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
    Bonjour,

    De quel type de document s'agit-il ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    il s'agit de document html

  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
    Personnellement je ferrais comme ca :

    en amont :
    - lecture des fichiers
    - nettotage des tags
    - enregistrement dans mysql

    au moment de la recherche :
    - recherche fulltext dans mysql
    - pour chaque fichier trouvé, recherche de la position de la chaine.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    mais comment cela doit se passer concretement car j'ai les titres de mes fichiers qui sont dans ma BD mysql et les fichiers sont dans le repertoire.

    je ne sais pas comment selon les mots de la recherche parcourrir le contenu des fichiers pour afficher le resultat qui convient.

    Merci de me guider!

  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
    Je viens te le dire non ?
    Personnellement je ne parcourerais pas les fichiers au moment de la recherche, mais je stockerais en amont le contenu (hors html) du fichier dans la base pour faire une recherche fulltext.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Pouvez vous me guider sur comment stocher le contenu de mes fichiers dans la BD afin d'appliquer le fulltext dont vous parlez!

  8. #8
    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
    Tu les lis avec file_get_contents(), tu appliques strip_tags() pour le nettoyage et tu inseres dans la base.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Oui votre solution m'interesse bien et je pense que c'est la plus adaptée.
    Mais j'avoue que je n'arrive pas à comprendre comment appliquer les fonctions en question pour realiser ce moteur de recherche. Je les ai jamais utiliser.

    J'ai lu un peu de la documentation concernant les fonctions file_get_contents et strip_tag. Je comprends que pour les afficher il me faut creer un champs pour enregistrer tout le contenu du fichier.


    Vraiment si vous pouvez me donner ne ce reste qu'une ebauche de solution pour pouvoir applique ça car je n'arrive pas à voir clair comment mettre ça en pratique.

    Merci de m'aider!

  10. #10
    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
    il me faut creer un champs pour enregistrer tout le contenu du fichier
    C'est tout a fait ca : Tu lis le fichier avec file_get_contents(), tu appliques strip_tags() à ce que tu as recuperé et tu inseres le résultat dans la base.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    j'ai commencé à faire comme vous l'avez dit:

    Voici mon code:
    il genere une erreur qui dit ceci quand je lance avec un nom de fichier : Erreur de syntaxe près de 'WHERE intitule ='aret.htm'' à la ligne 1

    Il genere l'erreur au niveau de la requete or je ne vois pas d'erreur!

    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
    <?php
     
    $cnx = mysql_connect( "localhost", "root", "" );
    //sélection de la base de données:
    $db= mysql_select_db( "mabase" );
     
     
     
    $recherche = $_POST["recherche"];
    if ($recherche!="")
     {
    $files = glob("*.htm"); 
     
    foreach ($files as $filename)
    { //boucle qui ouvre les fichiers 1 par 1
    $contenu = file_get_contents($filename);
    strip_tags($contenu);
     
     
    //création de la requête SQL:
    $sql = "INSERT INTO document (contenu) VALUES ('$contenu') WHERE intitule ='$filename'";
     
    //exécution de la requête SQL:
      $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
    }//fin de la boucle
     
    }else 
    echo "entrez le texte de votre recherche";
    ?>

  12. #12
    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
    Ca serait plutot quelque chose comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "INSERT INTO document (intitule, contenu) VALUES ('$filename','$contenu');
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Le nom du fichier existe deja dans la table.
    En fait la requete doit mettre le contenu de mes fichiers dans la table afin de pouvoir faire des recherches, c'est pourquoi aussi je donne la condition where qui va preciser sur quelle ligne inserrer le contenu du fichier concerné.

  14. #14
    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
    C'est un update qu'il faut faire alors.
    Je te conseille d'apprendre les bases de SQL avant toute chose.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    j'ai la meme erreur avec le update. Il m'affiche l'erreur suivante:

    Erreur de syntaxe près de 'selector':'#contenu .texte', 'imgPath':'plugins/boutonstexte/' à la ligne 1


    Voici ma requete du update:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = " UPDATE document SET contenu = '$contenu'
             WHERE intitule = '$filename' ";

    Merci toujours de m'aider!

  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
    Il faut protéger les caractères spéciaux comme les guillemets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = " UPDATE document SET contenu = '" . mysql_real_escape_strings($contenu) . "' WHERE intitule = '$filename' ";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    J'ai trouvé la source du problème.
    En fait j'ai pris le type LONGTEXT pour enregistrer le contenu de mes fichiers.
    Si j'utilise le update avec un petit texte de 20 caractères par exemple ça marche sans problème mais si j'utilise avec mes fichiers (plus d'une page) ça ne passe pas.
    Quelle solution faut-il adopter car il n'arrive pas à enregistrer le contenu de mes fichiers et genere une erreur.

    merci de m'aider!

  18. #18
    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
    as-tu essayé ce que je t'ai dit ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  19. #19
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    J'ai utilisé le UPDATE comme vous l'avez dit.

    Le champ qui prend le contenu de mon fichier est de type LONGTEXT dans MYSQL.
    Mais quand je mets une chaine de 20 caractères(dans ma requete) par exemple cela marche sans problème mais si c'est le contenu de mon fichier ça pose problème.
    Mes fichiers depassent une page.
    je n'arrive pas à les inserrer car ça me genere des erreurs.

    Ya t'il une autre solution ou un autre type du champ à choisir.

    merci de m'aider

  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
    Tu peux nous montrer a quoi ressemble la requete complète quand tu as une erreur ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. SuperFind: Script de recherche dans les fichiers.
    Par minnesota dans le forum Scripts/Batch
    Réponses: 14
    Dernier message: 04/07/2010, 17h09
  2. SuperFind: Script de recherche dans les fichiers.
    Par minnesota dans le forum VBScript
    Réponses: 0
    Dernier message: 25/06/2010, 12h14
  3. SuperFind: Script de recherche dans les fichiers.
    Par minnesota dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 25/06/2010, 12h12
  4. Modifier un texte dans les fichiers d'un répertoire
    Par Azenet dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 09/01/2008, 12h43
  5. Rechercher dans les fichiers d'un projet
    Par FlyByck dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 31/08/2006, 09h35

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