Moteur de recherche de fichier

Bonjour,

jai trouve ce code qui correspond a ce que je souhaite mais voila j'ai une erreur que je ne comprend pas tellement

voici le code si quelq'un peut m'aider il est le bienvenue

$d = dir("uploads/");

if(isset($_POST['submit']) AND !empty($_POST['mot'])){
$mot = trim($_POST['mot']);

while($entry = $d->read()) { 
    preg_match("#($mot+?)#s", $entry, $new);
    $data = trim($new[1]);
    if (!empty($data)) echo '<a href="'.$entry.'">'.$data.'</a><br />';
} 
$d->close();
}


<form action="recherche.php" method="post">
<input type="text" name="mot">
<input type="submit" name="submit" value="Envoyer">
</form>


ah et le code d'erreur est le suivant :

Notice: Undefined offset: 1 in C:\wamp\www\final\recherche.php on line 8

Dans un monde ou plus personne ne fais attention aux autres il est bon de voir que l'entraide existe encore.
(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.

2 réponses

  1. Bon je me suis repondu tout seul maintenant je n'ai plus de message d'erreur
    while($entry = $d->read()) { 
        if(preg_match("#($mot+?)#s", $entry, $new)){ 
        $data = trim($new[1]); 
        echo '<a href="'.$entry.'">'.$data.'</a><br />';
        } 
    }  
     
    1
    1. Modérateur
      Bonjour,

      Tu peux déjà ajouter quelques vérifications avant de lancer le traitement ainsi qu'un peu de debug...

      du genre:
      $erreur = array();
      $d = dir("uploads/");
      
      if(isset($_POST['submit']) AND !empty($_POST['mot'])){
      $mot = trim($_POST['mot']);
      
      while($entry = $d->read()) { 
          preg_match("#($mot+?)#s", $entry, $new);
          if(is_array($news) && count($news)>0){
            $data = trim($new[1]);
            if (!empty($data)) echo '<a href="'.$entry.'">'.$data.'</a><br />';
          }else{
             $erreur[]['txt'] = $entry;
             $erreur[]['is_array'] = 'Not array ';
             $erreur[]['new']=$new;
          }
      } 
      $d->close();
      
      //affichage des erreurs....
      if(count($erreur)>0){
        print_r($erreur);
      }
      }
      
      


      Et/ou tu peux utiliser un IF sur preg_match...

       if(preg_match("#($mot+?)#s", $entry, $new)){
          $data = trim($new[1]);
          if (!empty($data)) echo '<a href="'.$entry.'">'.$data.'</a><br />';
      // ça retourne un résultat...
      }else{
       //aucun resultat trouvé
       $erreur[]['txt'] = $entry;
       $erreur[]['erreur']='aucun resultat';
      }
      


      Cordialement,
      Jordane
      1
      1. oui tu a raison je devrais faire un peu de debug :) je vais essayer cela de suite
        0