Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3048 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [résolu] Moteur de recherche interne avec fichier pdf

 



 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[résolu] Moteur de recherche interne avec fichier pdf

n°1622015
PsYKrO_Fre​d
Posté le 11-10-2007 à 09:56:58  profilanswer
 

Bonjour,
 
 
J'ai un serveur Ubuntu.
Je souhaiterai avoir une page php où il y a un petit moteur de recherche pour faire des recherche sur des fichiers en .pdf.
 
J'ai un repertoire où va être stocker énormement de fichier pdf.  
 
 
Comment indexer tous mes fichiers et comment programmer ou trouver un script déjà fait qui fasse la fonction "recherche" et qu'il parcours toute l'arborescence de mon site?
 
 
Merci


Message édité par PsYKrO_Fred le 16-10-2007 à 11:27:24
mood
Publicité
Posté le 11-10-2007 à 09:56:58  profilanswer
 

n°1622070
rufo
Pas me confondre avec Lycos!
Posté le 11-10-2007 à 10:56:44  profilanswer
 

Ici, on ne fait pas le boulot.
Qq indices pour débuter :
- il te faut une bd qui va stocker l'indexation de tes docs (1 ou plusieurs tables)
- un script php qui va parcourir les répertoires contenant tes docs à indexer (à toi de définir la manière dont tu veux indexer, par exemple, ne garder que les mots > x caractères)
- un script de recherche dans la bd qui, si possible, triera les résultats par pertinence.

n°1622183
micfont999
Simplement Moi
Posté le 11-10-2007 à 11:56:15  profilanswer
 

Bonjour
 
est ce que tu veux aussi faire des recherches DANS les fichiers pdf? ou juste sur les noms?


Message édité par micfont999 le 11-10-2007 à 11:56:26
n°1622198
PsYKrO_Fre​d
Posté le 11-10-2007 à 12:11:46  profilanswer
 

JE veux jsute les noms...
Alors je viens de créer ma base de donnée avec 4 Champs.
 
id_fichier  
repertoire
lien_internet
nom_fichier
 
Je veux juste uniquement faire des recherches sur les noms des fichiers pdf.
 
Existe il des script déjà fait sur l'indexation des documents?
 
EDIT :
 
Je fais aussi la commande :  
 
find . -name '*.pdf' > listfile.txt  
 
 
et apres il me manque un script php qui me consulte le fichier texte et qui me remplisse les champs de la BDD...
 
Mais est ce une bonne méthode?
 


Message édité par PsYKrO_Fred le 11-10-2007 à 12:17:35
n°1622205
micfont999
Simplement Moi
Posté le 11-10-2007 à 12:17:47  profilanswer
 

Il te suffit juste maintenant de faire une requete contenant en clause WHERE l'attribut LIKE :)
 
- Tu insere tes fichiers pdf sur le ftp..  
- Tu les enregistres dans la base en complétant les champs que tu viens de nous indiquer
- Lorsque tu valide ton formulaire de recherche , tu lance donc ta requete de selection dans la base avec ce que je viens de te dire (LIKE), ce qui te permettra de trouver tous les fichiers donc le nom contient ce qui ce trouvais dans le formulaire..  
- Tu met tout ce tointoin dans un tableau, ou bien tu les affichent en live à chaque fois qu'il en trouve un, avec par exemple un petit système d'affichage répertoire - fichier
(a regarder ici http://forum.hardware.fr/hfr/Progr [...] 8626_1.htm )
 
et voila :) ta recherche est terminée ;)
 

n°1622284
PsYKrO_Fre​d
Posté le 11-10-2007 à 13:59:44  profilanswer
 

Merci pour la méthode...  
 
"Tu les enregistres dans la base en complétant les champs que tu viens de nous indiquer"
 
dois je faire avec ma méthode ? find dans un fichier txt et lire ce fichier ?
dans ce cas, aurait tu une piste à suivre pour coder tout ca? je pense aller faire un tour sur code source php....
 
Ou alors tu pensais à une autre méthode?

n°1622290
micfont999
Simplement Moi
Posté le 11-10-2007 à 14:04:31  profilanswer
 

bah :
- soit tu te créer une petite page dans ton espace d'admin qui te permet d'uploader des fichiers, et au moment de l'upload tu fait une requete INSERT INTO, ::: Avantage : si qu'un seul, ou peu de fichier à mettre, mise dans la bdd instantanée et pas besoin d'ouvrir le logiciel de transfert ftp ... :) (pas forcement installé sur toutes les machines)
 
- soit si tu préfère utiliser un logiciel ftp pour les mettre dessus, tu te créer un tit script, qui analyse tous les fichiers nouveaux par rapport à ceux enregistrés à la bdd, et dés qu'il en détecte un, il insere sa présence dans la bdd :) :::: Avantage : si pleins de fichier à mettre d'un seul coup, et donc pas trop le temps d'utiliser la page, tu lance le script et hop .. par contre obligé d'avoir un soft de ftp ..  
 
- soit les deux si t'a le temps ^^
 

n°1622292
micfont999
Simplement Moi
Posté le 11-10-2007 à 14:05:20  profilanswer
 

ps : je te conseil plus php.net que code source t'en apprendra 3 fois plus .. ;)

n°1622330
PsYKrO_Fre​d
Posté le 11-10-2007 à 14:52:59  profilanswer
 

php.net le site en anglais?
 
Pour résumer ce qui est fait :
 
 
J'ai un logiciel ftp à l'entreprise qui à 4H du matin balance les fichiers sur le serveur WEB.
Il travaille en mode différentielle, et la synchronisation ce fait que dans un sens !  
La source met à jour la destination, c'est tout.
 
 
J'ai fais des htaccess, et une page de connexion.
micfont>> il me semble que ce que tu dit ne correspond pas à mon cas... ou alors j'ai pas tout compris....  
 
Actuellement, je cherche la solution qui lit mon fichier txt et qui à chaque ligne me fasse un INSERT INTO dans la bdd.
 
2eme petit problème: Si le fichier a été supprimé ou que son nom a été modifié... il faut que je fasse un delete de l'ancien enregistrement non?
 
 
EDIT: Vous connaissez la commande pour lire le dernier "/" d'une ligne? car en fait j'arrive à avoir ma liste de fichier mais de la forme ./test.php ./test2.php. Si je veux récupérer le nom du fichier il faut que j'enleve tout ce qui est avant...


Message édité par PsYKrO_Fred le 11-10-2007 à 15:08:48
n°1622385
rufo
Pas me confondre avec Lycos!
Posté le 11-10-2007 à 15:44:35  profilanswer
 
mood
Publicité
Posté le 11-10-2007 à 15:44:35  profilanswer
 

n°1622405
PsYKrO_Fre​d
Posté le 11-10-2007 à 15:55:55  profilanswer
 

Rufo > nickel  
 
Le problème vue que j'ai mis tout les fichiers dans un fichier txt... le basename($val,".php" ) ne fonctionne pas... mais c'est pas très grave... avoir le fichier qui reste dans la base de donnée sous forme de xxxx.pdf ne me gène pas...  
 
par contre je suppose qu'il existe l'inverse genre un basedir() qui me donne l'inverse le chemin sans le fichier ?

n°1622430
rufo
Pas me confondre avec Lycos!
Posté le 11-10-2007 à 16:20:51  profilanswer
 

dirname() ?
http://fr.php.net/manual/fr/function.dirname.php
 
Pour basename(), gros malin, faut remplacer '.php' par l'extension qui va bien. mais je pense que c'est mieux de garder l'extension, donc, tu mets pas de 2ième paramètre (cf l'exemple 753 sur php.net)

n°1622433
PsYKrO_Fre​d
Posté le 11-10-2007 à 16:23:59  profilanswer
 

Code :
  1. <?
  2. include('connexion.php');
  3. $fichier = "listfile.txt";
  4. if (file_exists($fichier)) { // on vérifie que le fichier existe
  5.         if ($tableau = file($fichier)) { // ouverture du fichier, dans un tableau
  6.                 while(list(,$val)=each($tableau)){
  7.                         $val = basename ($val,".php" );
  8.                         echo $val;
  9.                         $SQL = "INSERT INTO indexation (nom_fichier) VALUES ($val)";
  10.                 }
  11.         } else {
  12.         echo "Erreur, le fichier n'a pas pu être ouvert.";
  13.         }
  14. } else {
  15. echo "Fichier introuvable !";
  16. }
  17. ?>


 
Bon voici ma premiere ébauche.... le problème c'est que cela n'écrit rien dans ma base de donnée....


Message édité par PsYKrO_Fred le 11-10-2007 à 16:32:50
n°1622457
omega2
Posté le 11-10-2007 à 16:44:40  profilanswer
 

Normal tu mets du texte dans $sql (la requette que t'auras à exécuter) mùais ensuite tu te contente d'oublier son existance.

n°1622463
rufo
Pas me confondre avec Lycos!
Posté le 11-10-2007 à 16:50:16  profilanswer
 

faut te connecter à la base mysql et lancer la requête d'insertion (mysql_query http://fr.php.net/manual/fr/function.mysql-query.php )

n°1622480
PsYKrO_Fre​d
Posté le 11-10-2007 à 17:18:52  profilanswer
 

omega2 a écrit :

Normal tu mets du texte dans $sql (la requette que t'auras à exécuter) mùais ensuite tu te contente d'oublier son existance.


 
 
en fait c'est bon:)
 

Code :
  1. <?
  2. include('connexion.php');
  3. $fichier = "listfile.txt";
  4. if (file_exists($fichier)) { // on vérifie que le fichier existe
  5.         if ($tableau = file($fichier)) { // ouverture du fichier, dans un tableau
  6.                 while(list(,$val)=each($tableau)){
  7.                         $val = basename ($val,".php" );
  8.                         echo $val;
  9.                         mysql_query("INSERT INTO indexation VALUES ('','','','$val')" );
  10.         }
  11.         } else {
  12.         echo "Erreur, le fichier n'a pas pu être ouvert.";
  13.         }
  14. } else {
  15. echo "Fichier introuvable !";
  16. }
  17. ?>


 
 
Petit probleme de comprehension des requetes SQL :)
 
Maintenant il me reste à cherche comment récuperer le chemin pour l'inserer dans une table :) (bon je post tout comme ça ca peut servir à d'autre ....
 
 
 
 
EDIT  :
 
En fait mon php je l'aime pas... j'aime pas écrire dans un fichier texte la liste des fichiers .. mais est ce que j'ai que cette solution ou avéz vous une fonction qui traine derriere vos matieres grises :p ??


Message édité par PsYKrO_Fred le 11-10-2007 à 17:28:33
n°1622716
rufo
Pas me confondre avec Lycos!
Posté le 12-10-2007 à 09:03:25  profilanswer
 

ben non. Tu listes les fichiers des répertoires avec glob() ou opendir()/readdir()/closedir()  
cf ex http://fr.php.net/manual/fr/function.opendir.php

n°1622717
micfont999
Simplement Moi
Posté le 12-10-2007 à 09:04:00  profilanswer
 

bah tu reprend le code que je t'ai donné au début et au lieu de mettre dans le fichier texte, tu insère directement dans la base ... non?

n°1622720
micfont999
Simplement Moi
Posté le 12-10-2007 à 09:05:39  profilanswer
 

rufo a écrit :

ben non. Tu listes les fichiers des répertoires avec glob() ou opendir()/readdir()/closedir()  
cf ex http://fr.php.net/manual/fr/function.opendir.php


 
rahhh  
[:benou_grilled]

n°1623593
PsYKrO_Fre​d
Posté le 15-10-2007 à 08:43:48  profilanswer
 

j'ai bien vue l'option opendir....
Mais il y a quelque chose de pas très clair :  
 
Si je met un code php qui liste tout les repertoires récursivement...
Cela veut dire que c'est un utilsiateur WEB qui va me déclencher ce listage... et donc c'est l'admin...  
 
Ce n'est pas très terrible non?
 
EDIT: Remarque mon system avec le fichier texte c'est pareil....  

Message cité 1 fois
Message édité par PsYKrO_Fred le 15-10-2007 à 08:47:33
n°1623597
micfont999
Simplement Moi
Posté le 15-10-2007 à 09:10:09  profilanswer
 

PsYKrO_Fred a écrit :


Cela veut dire que c'est un utilsiateur WEB qui va me déclencher ce listage... et donc c'est l'admin...  


 
Ah pas compris ce que tu voulais dire la ...  :heink:  
ce qui ce passe coté utilisateur reste coté utilisateur, tu permet juste au visiteur de lister ce qui est présent sur le ftp.. après il n'a aucun accès de modification, de suppression, ou autre :) je sais pas si c'est le but de ta phrase, ou si j'ai mal compris :)  

n°1623651
PsYKrO_Fre​d
Posté le 15-10-2007 à 10:26:39  profilanswer
 

J'essaye de rexpliquer...  
 
Le but final ce n'est pas que l'utilisateur puisse lister le contenu d'un repetoire... mais c'est de pouvoir faire une recherche.
 
J'ai des plans que je transfert par ftp sur le serveur web.
C'est des plan avec le nom de la forme (M126.pdf, M127.pdf...)
Tu as vite compris que c'est galère pour trouver le fichier dans tous les repertoires...
 
Alors je voulais lister tous les fichiers et les mettre dans une table...
Pour le moment, je lance un find que je met dans un fichier .txt.
Ensuite j'ai une page php qui va lire ce fichier et insérer dans la base de donnée le nom du fichier, son chemin et son extension...  
 
Mon soucis c'est ici ... le find et le INSERT ne dois pas ce faire par l'utilisateur mais par l'admin ( dans le pire des cas)  ou automatiquement.
 


Message édité par PsYKrO_Fred le 15-10-2007 à 10:32:29
n°1623673
micfont999
Simplement Moi
Posté le 15-10-2007 à 10:47:09  profilanswer
 

ah bah dans tous les cas il va te falloir un espace d'administration, avec gestion des Sessions et tout.. on est d'accord jusqu'ici ..
 
Maintenant on reprend la méthode ...
- coté administrateur :  
---- Uploader les fichiers soit par client FTP (filezilla), soit par l'espace d'administration (upload de fichier basic, PUIS INSERT INTO)
---- Dans le cas d'un upload par client FTP, alors créer une petite page qui quand elle est lancée, va permettre de lister tous les fichiers présents sur le ftp, et de vérifier s'ils sont présents dans la base de donnée, si non , alors INSERT INTO  
---- Si tu veux créer une page pour supprimer des fichiers, en les supprimant de la base et dans le ftp, les renommer ou autre, ça tu gère tout seul :)  
 
- coté client :  
---- Proposer un formulaire de recherche
---- Une fois la recherche effectuée, alors faire un SELECT * FROM tatable WHERE nomfichier LIKE "%contenuformulaire%" histoire de voir quels sont les fichiers qui correspondent en regardant leur répertoires ou ils ce situent
---- Pour le listage des fichiers, soit tu lance le script de contenu récursif des répertoires, mais à chaque listage, tu verifie si le fichier correspond au résultat de la recherche, alors tu l'affiche, sinon tu passe. Comme ça tu n'a l'affichage que des fichiers correspondants à la recherche  
 
Et voila un outil efficace, par contre peut etre perfectionné au niveau de la rapidité, parce que si l'on à une grande quantité de fichiers, alors ça mettra pi etre un peu de temps à faire le listage ... mais c'est une solution qui est assez simple, et rapide à mettre en place :)
 
voila dis nous la dedant ce que tu à déjà fait ou ne pas fait :)

n°1623680
PsYKrO_Fre​d
Posté le 15-10-2007 à 10:58:52  profilanswer
 

Bon alors ce que j'ai fait....  
 
pour le ftp, je prefere que ça soit l'entreprise qui se connecte sur le serveur WEB et qui upload que l'inverse. Bon ça de toute facon ça fonctionne.
 
Une page admin (pas fait)
Une page qui liste directement dans une BDD et si le fichier n'existe plus elle supprime de la BDD (pas fait)
 
Une page de connexion (fait)
htaccess (fait)
Une page d'insertion des fichiers dans une BDD après avoir lu un fichier txt (fait)
 
Formulaire de recherche (fait)
Resulat de la recherche (fait à moitie)
Il me manque à proposer le lien vers le pdf et j'ai une erreur de syntaxe  
 
echo "<a href=\".$row[1],"/",.$row[3]">.$row[3]<\a>";
 
où .$rom[1] correspond au repertoire et $rom[3] au nom du fichier...
moi je veux mettre un "/" entre, comme ça j'ai mon lien internet.
 

n°1623717
micfont999
Simplement Moi
Posté le 15-10-2007 à 11:25:08  profilanswer
 

oula un peu tout pourri ton écho la lol
 
tiens . :  
 

Code :
  1. echo '<a href=" '.$row[1].' / ' .$row[3]. ' " target="_parent"> '.$row[3].' </a>';


 
petit indice = lorsque tu veux concatener, pense toujours que tu à forcement un . à gauche et à droite de ta concatenation
ensuite toujours fermer tes simples quotes ou double quotes lorsque tu met tes .
 
regarde mon echo j'ouvre avec un simple quote, mon a href comporte un double quote comme pour l'affichage html, je veux mettre ton $row[1] donc je ferme mon simple quote, je concatene, j'insere $row[1], je reconcatene, et je réouvre mon simple quote...  
 
sinon plus simple, tu dis :
 

Code :
  1. $page = $row[1];
  2. $fichier = $row[2];
  3. echo '<a href="$page / $fichier " target="_parent"> '.$row[3].' </a>';


 
pas sur que ça fonctionne mais normalement si à moins que je dise un connerie :) ça m'arrive souvent lol  
 
voila c'est tout :)  
 [:magnasuprema]  
 

n°1623776
rufo
Pas me confondre avec Lycos!
Posté le 15-10-2007 à 12:26:00  profilanswer
 

le coup du script php qui fait l'indexation en listant les fichiers des répertoires, c'était pour remplacer find . -name '*.pdf' > listfile.txt qui faisait que t'avais un fichier temporaire qui servait à rien pour ensuite remplir ta bd.
Pour info, on peut aussi utiliser php en ligne de commande. T'es donc pas obligé de donner accès à ce script par le web. Tu peux très bien juste l'utiliser périodiquement via la commande cron.

Message cité 1 fois
Message édité par rufo le 15-10-2007 à 12:26:30
n°1623782
micfont999
Simplement Moi
Posté le 15-10-2007 à 12:31:05  profilanswer
 

rufo a écrit :

T'es donc pas obligé de donner accès à ce script par le web. Tu peux très bien juste l'utiliser périodiquement via la commande cron.


 
+1 mais bon autant avoir les deux :)  :lol: s'il veux mettre à jour pour un fichier important qu'il viens de mettre sur le ftp ..
 
donc oui , le cron et le script direct :) ça peut etre sympa :)  
 

n°1623796
rufo
Pas me confondre avec Lycos!
Posté le 15-10-2007 à 12:37:35  profilanswer
 

ben pour moi, quand il fait une upload, il indexe forcément le fichier dans sa bd.
Le script d'indexation, pour moi, c'était surtout en début de projet pour initialiser la bd et appelé de temps en temps si entre temps des fichiers ont  été modifiés (renommés, supprimés...)

n°1623822
micfont999
Simplement Moi
Posté le 15-10-2007 à 13:25:31  profilanswer
 

ouai je suis un peu con sur ce coup la mais bon j'avais en tete que c'était pas forcement lui qui uploadais et qu'un peu n'importe qui de sa société pouvais uploader des fichiers d'un peu n'importe ou, pas forcement de l'espace d'admin ... mais c'est vrai que lors de l'upload il l'indexe logiquement dans la bdd :)

n°1623862
PsYKrO_Fre​d
Posté le 15-10-2007 à 14:02:01  profilanswer
 

micfont999 a écrit :

ouai je suis un peu con sur ce coup la mais bon j'avais en tete que c'était pas forcement lui qui uploadais et qu'un peu n'importe qui de sa société pouvais uploader des fichiers d'un peu n'importe ou, pas forcement de l'espace d'admin ... mais c'est vrai que lors de l'upload il l'indexe logiquement dans la bdd :)


 
Oui effectivement c'est le serveur tout seul qui upload...:)
 
Effectivement, la concatenation fonctionne.... tout content de mon début, je montre ça à mon supérieur qui est content aussi mais il me dit que souvent les gens voudrons rechercher les infos  par repertoire... :'(... bon j'ai pas fait tout ça pour rien ...  
 
Par contre j'ai repris tout ce qu'on à fait...  
J'arrive à lister mes repertoires directement dans la BDD.
 

Code :
  1. <?
  2. include('connexion.php');
  3. $dir = find_dirs('temp');
  4. function find_dirs($dir) {
  5.    $dir_list = array();
  6.    if($objs = glob($dir."/*" )){
  7.        foreach($objs as $obj) {
  8.            if(is_dir($obj)) {
  9.                $dir_list[] = $obj;
  10.                $dir_list = array_merge($dir_list, find_dirs($obj));
  11.                mysql_query("INSERT INTO idx_repertoire VALUES ('','$obj')" );
  12.            }
  13.        }
  14.    }
  15.    return $dir_list;
  16. }
  17. ?>


 
Il faut que j'étudie pourquoi dans ce code (que j'ai trouvé sur le net) sans le tableau j'ai que le premier sous repertoire et avec le tableau j'ai tout les sous repertoire... bref c'est pas sujet.
 
Par contre lorsque je fais ma recherche, je peux pas chercher mon repertoire que je veux car dans la BDD, le champ est inscrit de cette façon :
 
temp/L0001/
temp/L0002/
 
Si je fais une recherche de "L00", il me trouve rien... Si je fais une recherche de "t" il me trouve tout....
En fait, il faudrait que j'arrive à récupérer que le nom du repertoire dans la fonction plus haut...
 
Vous voyez ce que je veux dire?
 
 
EDIT : avec la fonction dirname() je devrai m'en sortir?


Message édité par PsYKrO_Fred le 15-10-2007 à 14:08:59
n°1623867
micfont999
Simplement Moi
Posté le 15-10-2007 à 14:11:25  profilanswer
 

tien la dedant t'aura tout ^^
 
http://php.developpez.com/faq/?page=fichiers
 
ici :)
 
http://php.developpez.com/faq/?pag [...] ier_chemin  
edit :  
--> petite précision, tu regarde la position du dernier / et tu prend ce qu'il y à derrière ... comme ça hop tu à le nom du répertoire :) ;)
 
mais sinon tu ne pourrais pas essayer de mettre le nom du repertoire dans la bdd ?? comme ça lors de la recherche tu fait une recherche avec dans le WHERE repertoire = machinchose :)  
non?
 
edit bis : oui avec dirname et ce que j'ai mis en premier edit :)


Message édité par micfont999 le 15-10-2007 à 14:13:44
n°1623883
rufo
Pas me confondre avec Lycos!
Posté le 15-10-2007 à 14:30:54  profilanswer
 

pour une recherche partielle sur une chaîne de caractères faut faire
WHERE repertoire LIKE "%machinechose%" ou utiliser match against si t'es sous mysql et que tu utilises le fulltext

n°1623887
micfont999
Simplement Moi
Posté le 15-10-2007 à 14:32:42  profilanswer
 

hey tu repete ce que je dis non mais :)

n°1623897
PsYKrO_Fre​d
Posté le 15-10-2007 à 14:38:03  profilanswer
 

lol je me demande si vous travaillez pas à coté et c'est à celui qui me donne des réponses en premier...
Super rapide les gars...
 
 
Rufo > je débute aussi en mysql, je comrpend pas grand chose avec match etc... mais pas besoin que tu expliques tout... je sais faire des recherche sur google (remarque je sais faire que ça lol)
 
micfont>> pour le dirname ()
 
           if(is_dir($obj)) {
               $dir_list[] = $obj;
               $dir_list = array_merge($dir_list, find_dirs($obj));
                $chemin = pathinfo($obj);
                $rep = $chemin['dirname'];
         mysql_query("INSERT INTO idx_repertoire VALUES ('','$rep')" );
 
 
 
mais il me renvoie rien du tout dans la BDD
 
 
Et pour répondre à ta question : c'est ce que je fais, je vuex renseigne le champ repertoire par le reptoire... mais pas tout le chemin....
Allez je vais regarder les liens....
 
 
 

n°1623917
PsYKrO_Fre​d
Posté le 15-10-2007 à 14:45:02  profilanswer
 

Bingo merci pour le deuxieme lien j'avais vu la fonction explode() mais je n'arrivai pas à l'utiliser  
 
$rep = array_pop(explode('/', $obj));
 
 
Par contre, sans faire gaffe j'ai relancé 2 fois ma page PHP d'insertion... et il m'a mit des enregistrement en double...
Est ce que je peux y remedier ?


Message édité par PsYKrO_Fred le 15-10-2007 à 14:47:02
n°1623932
micfont999
Simplement Moi
Posté le 15-10-2007 à 14:51:43  profilanswer
 

quand tu fait un echo de $rep ça t'affiche quoi?
 
tiens sinon une truc toute simple :)  
 

Code :
  1. // Lit le dernier dossier dans le chemin $url
  2. $dir = substr(strrchr(dirname($url), "/" ), 1);


 
:)
en gros ça fait quoi, ça prend le dirname donc tout le chemin  
dirname --> machin/truc/bidule (donc nous on veux que bidule)
strrchr --> prend tout ce qui ce trouve après le premier / en partant de la fin (http://fr.php.net/manual/fr/function.strrchr.php)
substr --> retourne seulement la chaine sortie de strrchr (http://fr.php.net/manual/fr/function.substr.php)
 
et voila on à juste le répertoire dans toute la vérole avant et après :)  
 
et sinon si si je bosse hein, je viens de me pondre un editeur wysiwyg et tout un site en dynamique, de a à z, rien du tout en statique alors je me prend une tite pause forum lol .. :)  
 
et ça nous apprend toujous des trucs de trainer sur ce site :)


Message édité par micfont999 le 15-10-2007 à 14:52:05
n°1623951
PsYKrO_Fre​d
Posté le 15-10-2007 à 15:03:45  profilanswer
 

Merci micfont 999
 
J'ai maintenant 2 tables...  
une table qui index les fichiers avec 3 champs TYPE, REPERTOIRE, FICHIER
une table qui index les repertoires avec 2 champs NOMREPERTOIRE et CHEMIN
 
Ma recherche fonctionne....  
 
J'ai juste le problème que si le repertoire existe plusieeurs fois ou alors si je lance la page php 2 fois, j'ai tout mes enregistrements en double...

n°1623966
micfont999
Simplement Moi
Posté le 15-10-2007 à 15:10:30  profilanswer
 

j'allais te dire de regarder du coté de UNIQ mais non en fait, sinon tu pourra pas avoir de répertoires avec le même nom ...  
euh, bah je vois une solution, c'est de faire une requete de selection pour voir si l'enregistrement est déjà présent ... tu selection, si le mysql_num_rows est = à 0 alors tu insert, sinon tu passe :)  
voila mais ça fait pas mal de requetes ...

n°1624002
rufo
Pas me confondre avec Lycos!
Posté le 15-10-2007 à 15:38:12  profilanswer
 

micfont999 a écrit :

hey tu repete ce que je dis non mais :)


 
pas tout à fait. Toi, tu lui proposais de faire WHERE champ="valeur" or lui, a besoin de pouvoir rechercher sur une partie du chemin => LIKE est différent de = ;)
 
ps : si si, moi aussi je bosse. Je suis en train de finir la dernière évol d'un intranet. Et comme dit micfont999, trainer ici, c'est jamais perdu. On y apprend des trucs et astuces ou se faire aider (ben oui, nous aussi on sait pas tout).

Message cité 1 fois
Message édité par rufo le 15-10-2007 à 15:40:06
n°1624007
micfont999
Simplement Moi
Posté le 15-10-2007 à 15:42:59  profilanswer
 

rufo a écrit :


 
pas tout à fait. Toi, tu lui proposais de faire WHERE champ="valeur" or lui, a besoin de pouvoir rechercher sur une partie du chemin => LIKE est différent de = ;)
 
ps : si si, moi aussi je bosse. Je suis en train de finir la dernière évol d'un intranet. Et comme dit micfont999, trainer ici, c'est jamais perdu. On y apprend des trucs et astuces ou se faire aider (ben oui, nous aussi on sait pas tout).


 
et ça c'est quoi non mais
 

micfont999 a écrit :


---- Une fois la recherche effectuée, alors faire un SELECT * FROM tatable WHERE nomfichier LIKE "%contenuformulaire%" histoire de voir quels sont les fichiers qui correspondent en regardant leur répertoires ou ils ce situent


 
je t'apprendrais moi à répondre à des messages sans lire tout le topic non mais  :kaola:  
 
lol ah mince je fais pareil .. zut alors  [:magnasuprema]

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [résolu] Moteur de recherche interne avec fichier pdf

 

Sujets relatifs
Extraire de données de fichier texte vers excel[VB6] Decompresser un fichier ZIP
[RESOLU] Comparer 2 fichiers de données[Delphi] fonction sur String [Résolu]
[Résolu]Probleme d'enregistrement - envoi de formulaire[Résolu] Probleme d'enregistrement lors d'un envoi de formulaire
[RESOLU] Enlever retour à la ligne entre balises HTML[Résolu] [Ajax-Rico] Réponse envoyée mais pas de mise à jour
[Résolu] WMI requete WQLproblème avec un moteur de recherche
Plus de sujets relatifs à : [résolu] Moteur de recherche interne avec fichier pdf


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR