[PHP] recherche nom d'un fichier dans une arborescence

recherche nom d'un fichier dans une arborescence [PHP] - PHP - Programmation

Marsh Posté le 28-07-2004 à 10:47:13    

bonjour,
 
je voudrais faire un moteur de recherche simple enfin je crois qui cherche
un nom de fichier dans une arborescence mais je sais pas quoi faire  
 

Code :
  1. <html>
  2. <body>
  3. <H1>
  4. <center>Recheche du nom du fichier</center>
  5. </H1>
  6. <hr>
  7. <script language="javascript">
  8. function champsok()
  9. {
  10.  if (document.test.nom.value.length == 0)
  11. {
  12. alert("Entrer un nom valide, Merci" );
  13. return false;
  14. }
  15. return true;
  16. }
  17. </script>
  18. <form action="RechNomFichier.php" method=post name="RechNomFichier" OnSubmit="return champsok()">
  19. <table border=3 table bordercolor=green width=200>
  20. <tr>
  21. <th> Nom du fichier </th>
  22. </tr>
  23. <td>
  24. <center>
  25. <input size=20 type=text name=nom  onChange="javascript:this.value=this.value.toLowerCase();"> </td>
  26. </center>
  27. </table>
  28. <br>
  29. <input type=submit value="Ok">
  30. <input type=reset value="Effacer">
  31. </body>
  32. </html>


Reply

Marsh Posté le 28-07-2004 à 10:47:13   

Reply

Marsh Posté le 28-07-2004 à 11:27:25    

c'est bien. et ton fichier rechNomFichier.php ?


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 28-07-2004 à 11:38:39    

Code :
  1. <?php 
  2. // en variables globales
  3.     $nom = $_POST["nom"];
  4.     $nom = ucfirst($nom);
  5. print "$nom";
  6. ?>


 
j'en suis là

Reply

Marsh Posté le 28-07-2004 à 11:45:58    

[:mlc2]


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 28-07-2004 à 11:47:42    

regarde par là
 
http://fr.php.net/manual/fr/function.readdir.php


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 28-07-2004 à 12:00:38    

j'ai déja cette fonction mais je vois pas comment recuperer que le fichie qui m'interesse

Reply

Marsh Posté le 28-07-2004 à 12:02:10    

ben tu liste le/les répertoire et tu teste le nom de fichier...


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 28-07-2004 à 12:21:09    

Code :
  1. explore("$homedir/$file" );
  2.             } else {
  3.                               echo "<a href= .$homedir/$file. <br></a>$file";


 
j'arrive pas à rendre les fichiers en lien hypertext


Message édité par sakuraba le 28-07-2004 à 12:24:36
Reply

Marsh Posté le 28-07-2004 à 12:29:36    

echo "<a href='.$homedir/$file.'>$file</a>";  


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 28-07-2004 à 12:30:23    

Les liens web ont une arborescence différente du systeme de fichier de ton serveur. Il faut une variable contenant le chemin "web" et une variable contenant le chemin "systeme" de ton fichier et les utiliser dans les bon cas.


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 28-07-2004 à 12:30:23   

Reply

Marsh Posté le 28-07-2004 à 12:31:20    

boulax a écrit :

Les liens web ont une arborescence différente du systeme de fichier de ton serveur. Il faut une variable contenant le chemin "web" et une variable contenant le chemin "systeme" de ton fichier et les utiliser dans les bon cas.


 
ou plus simplement utiliser un chemin relatif


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 28-07-2004 à 13:07:40    

mais maintenant j'ai des urls bizarres
 
http://srvnet01/2%20Manuel%20entre [...] ot%20.pdf.
 
a cause des espaces je peux faire comment pour que mon adresse soit valide ?

Reply

Marsh Posté le 28-07-2004 à 13:11:56    

%20 c'est un espace dans l'url, ecris comme ca c'est valide. Tu devrasi éviter les espaces dans les noms de fichiers et de repertoires ceci dit.
 
J'ai pas bien calé ton prob mais regarde du coté de la fonction rawurlencode().


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 29-07-2004 à 14:22:38    

c'est bon j(ai trouvé mais maintenant je voudrais afficher que les fichiers sous forme d'url qui comportent la chaine de caracteres renvoyées par $nom
et qui n'affiche pas les fichiers .php
 
merci d'avance
 
voici mon code actuel
 

Code :
  1. <?php 
  2. // en variables globales
  3.     $nom     = $_POST["nom"];
  4. function affiche_file($fichier) {
  5. $extention=strlen(substr($fichier,strrpos($fichier,"." )));
  6. $extention=substr($fichier,0,strlen($fichier)-$extention);
  7. return($extention);
  8. }
  9. function explore($homedir) {
  10.     $dir = openDir($homedir);
  11.     while ($file = readDir($dir)) {
  12.         if   ( ($file!="." )&&($file!=".." )){
  13.              
  14.             if (is_dir("$homedir/$file" )) {
  15.              
  16.                 explore("$homedir/$file" );
  17.             } else {
  18.                 echo "<a href='http://srvnet01/qadoc .$homedir/$file.' target=\"_blank\">" .affiche_file($file)."</a><br>";
  19. }
  20.         }
  21.     }
  22.  
  23.     closeDir($dir);
  24. }
  25. // Définition du chemin à explorer
  26. $home = ".";
  27. // L'appel à la fonction
  28. explore($home);
  29. ?>


 :bounce:


Message édité par sakuraba le 29-07-2004 à 17:14:11
Reply

Marsh Posté le 29-07-2004 à 17:14:24    

:bounce:

Reply

Marsh Posté le 02-08-2004 à 13:43:08    

:bounce:

Reply

Marsh Posté le 02-08-2004 à 14:11:25    

pour la correspondance avec $nom, utilise les fonctions d'expressions rationnelles comme eregi:

Code :
  1. if ( eregi ($nom, $file) ) {
  2.    // le nom du fichier comporte la chaine $nom
  3. }


 
pour les .php, tu peux les ignorer dans ton parcours avant de tester $nom, en regardant tout simplement l'extension. pour l'extraire tu peux utiliser $morceaux= explode(".", $file);
la derniere case du tableau $morceaux est l'extension, ignore le fichier si $morceaux[count($morceaux)-1]=='php'
 
ça devrait suffir !

Reply

Marsh Posté le 02-08-2004 à 22:19:59    

mille fois merci  
je vais bucher là dessus


---------------
Newsletter RCZ : inscriptions compliquées ou réceptions tardives ? Mon blog la partage sans délai. C est ici que ça se passe : https://gravelparis.com/
Reply

Marsh Posté le 03-08-2004 à 17:55:35    

j'arrive pas à le placer mon eregi  

Code :
  1. if (eregi($nom, $file)) {
  2.  
  3. }


 

Code :
  1. <?php 
  2. // en variables globales
  3.     $nom     = $_POST["nom"];
  4. print "$nom";
  5. function affiche_file($fichier) {
  6. $extention=strlen(substr($fichier,strrpos($fichier,"." )));
  7. $extention=substr($fichier,0,strlen($fichier)-$extention);
  8. return($extention);
  9. }
  10. function explore($homedir) {
  11.     $dir = openDir($homedir);
  12.     while ($file = readDir($dir)) {
  13.         if   ( ($file!="." )&&($file!=".." )){
  14.              
  15.             if (is_dir("$homedir/$file" )) {
  16.              
  17.                 explore("$homedir/$file" );
  18.             } else {
  19.                 echo "<a href='http://srvnet01/qadoc .$homedir/$file.' target=\"_blank\">" .affiche_file($file)."</a><br>";
  20. }
  21.         }
  22.     }
  23.  
  24.     closeDir($dir);
  25. }
  26. // Définition du chemin à explorer
  27. $home = ".";
  28. // L'appel à la fonction
  29. explore($home);
  30. ?>

Reply

Marsh Posté le 04-08-2004 à 13:44:41    

:bounce:

Reply

Marsh Posté le 05-08-2004 à 10:45:16    

:bounce:

Reply

Marsh Posté le 09-08-2004 à 10:38:55    

:bounce:

Reply

Marsh Posté le 09-08-2004 à 10:40:19    

quoi ? [:benou]


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 09-08-2004 à 10:42:42    

sakuraba a écrit :

j'arrive pas à le placer mon eregi  

Code :
  1. if (eregi($nom, $file)) {
  2.  
  3. }


 

Code :
  1. <?php 
  2. // en variables globales
  3.     $nom     = $_POST["nom"];
  4. print "$nom";
  5. function affiche_file($fichier) {
  6. $extention=strlen(substr($fichier,strrpos($fichier,"." )));
  7. $extention=substr($fichier,0,strlen($fichier)-$extention);
  8. return($extention);
  9. }
  10. function explore($homedir) {
  11.     $dir = openDir($homedir);
  12.     while ($file = readDir($dir)) {
  13.         if   ( ($file!="." )&&($file!=".." )){
  14.              
  15.             if (is_dir("$homedir/$file" )) {
  16.              
  17.                 explore("$homedir/$file" );
  18.             } else {
  19.                 echo "<a href='http://srvnet01/qadoc .$homedir/$file.' target=\"_blank\">" .affiche_file($file)."</a><br>";
  20. }
  21.         }
  22.     }
  23.  
  24.     closeDir($dir);
  25. }
  26. // Définition du chemin à explorer
  27. $home = ".";
  28. // L'appel à la fonction
  29. explore($home);
  30. ?>



 
voila mon probleme je comprends pas et je perd la boule là  [:king diamond]

Reply

Marsh Posté le 09-08-2004 à 10:45:58    

Moi non plus, je sais pas où est ton problème


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 09-08-2004 à 11:13:05    

:cry:

Reply

Marsh Posté le 09-08-2004 à 11:17:42    

mais explique toi, ca sert a rien de poster des bout de codes si on sait pas quel est le probleme et si tu fais pas un minimum d'effort de documentation sur la fonction eregi


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 10-08-2004 à 09:13:44    

maintenant je voudrais afficher que les fichiers sous forme d'url qui comportent la chaine de caracteres renvoyées par $nom
et qui n'affiche pas les fichiers .php

Reply

Marsh Posté le 10-08-2004 à 09:39:49    

Code :
  1. <?php 
  2. // en variables globales
  3.     $nom     = $_POST["nom"];
  4. print "$nom";
  5. function affiche_file($fichier) {
  6. $extention=strlen(substr($fichier,strrpos($fichier,"." )));
  7. $extention=substr($fichier,0,strlen($fichier)-$extention);
  8. return($extention);
  9. }
  10. function explore($homedir) {
  11.     $dir = openDir($homedir);
  12.     while ($file = readDir($dir)) {
  13.         if   ( ($file!="." )&&($file!=".." )){
  14.              
  15.             if (is_dir("$homedir/$file" )) {
  16.              
  17.                 explore("$homedir/$file" );
  18.             } else {
  19.   if (eregi($nom, $file)) {
  20.                 echo "<a href='http://srvnet01/qadoc .$homedir/$file.' target=\"_blank\">" .affiche_file($file)."</a><br>";
  21. }
  22. }
  23.         }
  24.     }
  25.  
  26.     closeDir($dir);
  27. }
  28. // Définition du chemin à explorer
  29. $home = ".";
  30. // L'appel à la fonction
  31. explore($home);
  32. ?>


 
 
voici mon message d'erreur
 

Code :
  1. Notice: Undefined variable: nom in c:\program files\easyphp1-7\www\qadoc\resultformrech.php on line 25
  2. Warning: eregi(): REG_EMPTY:Dempty (sub)expression in c:\program files\easyphp1-7\www\qadoc\resultformrech.php on line 25
  3. Notice: Undefined variable: nom in c:\program files\easyphp1-7\www\qadoc\resultformrech.php on line 25

Reply

Marsh Posté le 10-08-2004 à 10:00:33    

sakuraba a écrit :


voici mon message d'erreur
 

Code :
  1. Notice: Undefined variable: nom in c:\program files\easyphp1-7\www\qadoc\resultformrech.php on line 25
  2. Warning: eregi(): REG_EMPTY:Dempty (sub)expression in c:\program files\easyphp1-7\www\qadoc\resultformrech.php on line 25
  3. Notice: Undefined variable: nom in c:\program files\easyphp1-7\www\qadoc\resultformrech.php on line 25



 
ca me parait assez clair :heink:
 
$nom n'est pas défini dans ta fonction, donc vaut la chaine vide "" et eregi balance un warning...


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 10-08-2004 à 11:26:04    

->soit tu mets dans ta fonction $nom=$POST['nom'];  
(mais ça ne me paraît pas être la meilleure solution)
 
->soit tu fais  

Code :
  1. function explore($homedir, $chemin)
  2. {
  3. ...
  4. if (eregi($chemin, $file)
  5. ...
  6. }
  7. //et pour l'utiliser
  8. explore($home, $nom)


 
et ça devrait aller


Message édité par deliriumtremens le 10-08-2004 à 11:26:15
Reply

Marsh Posté le 10-08-2004 à 13:34:36    

Code :
  1. Warning: Missing argument 2 for explore() in c:\program files\easyphp1-7\www\qadoc\resultformrech.php on line 15
  2. Warning: eregi(): REG_EMPTY: in c:\program files\easyphp1-7\www\qadoc\resultformrech.php on line 25
  3. Warning: eregi(): REG_EMPTY: empty (sub)expression in c:\program files\easyphp1-7\www\qadoc\resultformrech.php on line 25
  4. Warning: Missing argument 2 for explore() in c:\program files\easyphp1-7\www\qadoc\resultformrech.php on line 15
  5. Warning: Missing argument 2 for explore() in c:\program files\easyphp1-7\www\qadoc\resultformrech.php on line 15
  6. Warning: eregi(): REG_EMPTY: empty (sub)expression in c:\program files\easyphp1-7\www\qadoc\resultformrech.php on line 25
  7. Warning: Missing argument 2 for explore() in c:\program files\easyphp1-7\www\qadoc\resultformrech.php on line 15
  8. Warning: eregi(): REG_EMPTY: empty (sub)expression in c:\program files\easyphp1-7\www\qadoc\resultformrech.php on line 25
  9. Warning: eregi(): REG_EMPTY:aempty (sub)expression in c:\program files\easyphp1-7\www\qadoc\resultformrech.php on line 25


 
avec ta 2eme solution  
 

Code :
  1. <?php 
  2. // en variables globales
  3.     $nom     = $_POST["nom"];
  4. function affiche_file($fichier) {
  5. $extention=strlen(substr($fichier,strrpos($fichier,"." )));
  6. $extention=substr($fichier,0,strlen($fichier)-$extention);
  7. return($extention);
  8. }
  9. function explore($homedir, $chemin) {
  10.     $dir = openDir($homedir);
  11.     while ($file = readDir($dir)) {
  12.         if   ( ($file!="." )&&($file!=".." )){
  13.              
  14.             if (is_dir("$homedir/$file" )) {
  15.              
  16.                 explore("$homedir/$file" );
  17.             } else {
  18.   if (eregi($chemin, $file)) {
  19.                 echo "<a href='http://srvnet01/qadoc .$homedir/$file.' target=\"_blank\">" .affiche_file($file)."</a><br>";
  20. }
  21. }
  22.         }
  23.     }
  24.  
  25.     closeDir($dir);
  26. }
  27. // Définition du chemin à explorer
  28. $home = ".";
  29. // L'appel à la fonction
  30. explore($home, $nom);
  31. ?>

Reply

Marsh Posté le 10-08-2004 à 13:43:28    

t'oublie simplement le 2e argument (Missing argument 2) dans ton appel récursif

Code :
  1. if (is_dir("$homedir/$file" )) {
  2. explore("$homedir/$file", $chemin);
  3. } else {

Reply

Marsh Posté le 10-08-2004 à 13:46:52    

gubug a écrit :

t'oublie simplement le 2e argument (Missing argument 2) dans ton appel récursif

Code :
  1. if (is_dir("$homedir/$file" )) {
  2. explore("$homedir/$file", $chemin);
  3. } else {



oh la honte je suis vraiment pas bon en php

Reply

Marsh Posté le 10-08-2004 à 16:01:20    

Voici le code fini mais je voudrais que ça compte le nombre de réponse mais des que je mets un $count= $count++;  
j'ai des 0 partout  
 
 
 

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <HTML>
  3. <HEAD>
  4. <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
  5. <TITLE></TITLE>
  6. <META NAME="GENERATOR" CONTENT="OpenOffice.org 1.1.2  (Win32)">
  7. <META NAME="CREATED" CONTENT="20040806;10355958">
  8. <META NAME="CHANGED" CONTENT="20040806;11082712">
  9. </HEAD>
  10. <BODY LANG="fr-FR" DIR="LTR">
  11. <P ALIGN=CENTER STYLE="font-style: normal"><IMG SRC="Icones.php/blurulr6.gif" NAME="Image2" ALIGN=LEFT WIDTH=927 HEIGHT=9 BORDER=0><BR CLEAR=LEFT><FONT FACE="Courier New, monospace"><B>MOTEUR DE RECHERCHE DE L'OUTIL DE GESTION QUALITE</B></FONT></P>
  12. <P ALIGN=CENTER STYLE="font-style: normal"><FONT FACE="Courier New, monospace"><B>DE
  13. LA QUALITE</B></FONT></P>
  14. <P ALIGN=LEFT STYLE="margin-bottom: 0cm"><IMG SRC="Icones.php/blurulr6.gif" NAME="Image1" ALIGN=RIGHT WIDTH=927 HEIGHT=9 BORDER=0><BR CLEAR=RIGHT><BR>
  15. </P>
  16. <P ALIGN=CENTER STYLE="font-style: normal"><FONT FACE="Courier New, monospace"><a href='http://srvnet01/qadoc/MenuQadoc.php'>Menu Principal</a><br>
  17. <P ALIGN=LEFT><IMG SRC="http://srvnet01/qadoc/Icones.php/blusqare.gif" NAME="Image21" ALIGN=LEFT WIDTH=10 HEIGHT=10 BORDER=0><BR CLEAR=LEFT><FONT FACE="Courier New, monospace"><B>Résultat de votre demande</B></FONT></P>
  18. <?php 
  19. // en variables globales
  20.     $nom     = $_POST["nom"];
  21. function affiche_file($fichier) {
  22. $extention=strlen(substr($fichier,strrpos($fichier,"." )));
  23. $extention=substr($fichier,0,strlen($fichier)-$extention);
  24. return($extention);
  25. }
  26. function explore($homedir, $chemin) {
  27.    
  28.     $dir = openDir($homedir);
  29.     while ($file = readDir($dir)) {
  30.         if   ( ($file!="." )&&($file!=".." )){
  31.              
  32.             if (is_dir("$homedir/$file" )) {
  33.              
  34.                 explore("$homedir/$file", $chemin);
  35.             } else {
  36.   if (eregi($chemin, $file)) {
  37.                   echo "<FONT FACE=Courier New, monospace><br><a href='http://srvnet01/qadoc .$homedir/$file.' target=\"_blank\">".$homedir."/" .affiche_file($file)."</a><br>";
  38. }
  39. }
  40.         }
  41.     }
  42.  
  43.     closeDir($dir);
  44.  
  45. }
  46. // Définition du chemin à explorer
  47. $home = ".";
  48. // L'appel à la fonction
  49. explore($home, $nom);
  50. ?>

Reply

Marsh Posté le 10-08-2004 à 16:07:05    

On est pas là pour t'apprendre à incrémenter une variable [:mlc]

Reply

Marsh Posté le 10-08-2004 à 16:15:55    

boulax a écrit :

On est pas là pour t'apprendre à incrémenter une variable [:mlc]


je veux compter le nombre de reponse qui resorte en lien  
une petite piste ?

Reply

Marsh Posté le 10-08-2004 à 16:20:25    

Code :
  1. function explore($homedir, $chemin)
  2. {
  3.     $count=0;
  4.     $dir = openDir($homedir);
  5.     while ($file = readDir($dir)) {
  6.         if   ( ($file!="." )&&($file!=".." )){
  7.              
  8.             if (is_dir("$homedir/$file" )) {
  9.              
  10.                 explore("$homedir/$file", $chemin);
  11.             } else {
  12.   if (eregi($chemin, $file)) {
  13.                   echo "<FONT FACE=Courier New, monospace><br><a href='http://srvnet01/qadoc .$homedir/$file.' target=\"_blank\">".$homedir."/" .affiche_file($file)."</a><br>";
  14.    $count++;
  15. }
  16. }
  17.         }
  18.     }
  19.  
  20.     closeDir($dir);
  21.     return $count;
  22. }
  23. // L'appel à la fonction
  24.   $nombre=explore($home, $nom);


 
[:spamafote]


Message édité par boulax le 10-08-2004 à 16:20:44
Reply

Marsh Posté le 10-08-2004 à 16:32:05    

j'ai essayé et ça retourne rien, le $nombre=explore($home,$nom); ça me parait bizarre

Reply

Marsh Posté le 10-08-2004 à 16:40:26    

c'est encore ton appel a eregi qui doit merder ... comprends tu seulement ce que tu fais :??:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed