[PHP] affichier tout les fichiers commençant par "www"

Résolu
Synerz Messages postés 1341 Statut Membre -  
Synerz Messages postés 1341 Statut Membre -
Bonjour,

Voici mon code PHP :

<?php
//recuperation de la variable
$ID = isset($_GET['ID']) && !empty($_GET['ID'])?$_GET['ID']:NULL;

if($ID){
//Test de l'ID
switch($ID){
 case "3fuHXxYxaTJ84NQygauXCchT" :
   $nom_repertoire = '/opt/Fichier HAR/';
   $ficher = "www.*";
   break;
  
  case "8FFSkmwmRAbrHMpfnAfqdDLC" :
   $nom_repertoire = '/opt/Fichier HAR/';
   $ficher = "test2*";
   break;
  
  case "Emarf6d6rfqh7T8bDukG9YVb" :
   $nom_repertoire = '/Fichier HAR/';
   $ficher = "test3*";
   break;

  default:
  echo "<br>ERREUR : ID Inconnu ! "; 
}

  //--- LECTURE ---
  //on ouvre le repertoire
  $pointeur = opendir($nom_repertoire);
  while ($file = readdir($pointeur)){
    if ($file == $ficher){
    echo $file."<br/>";
  }
 }  
 closedir($pointeur);
   
}else{
 echo "<br> ERREUR ! NO ID !!";
}

?>



En gros j'aimerai que si c'est la première ID qui est récupérer j'affiche tout les fichiers qui commence par "www." sinon par "test* etc etc. Je sais que "*" ne marche pas vu que j'ai mis "=" donc j'aimerai un peu d'aide merci :)
Un peu d'aide contre un topic résolu !

1 réponse

Résumé de la discussion

La discussion porte sur récupérer un identifiant GET et lister les fichiers d’un répertoire en PHP, en utilisant glob pour filtrer les fichiers débutant par un préfixe. Plusieurs solutions proposées remplacent une boucle while par foreach avec glob('/opt/Fichier HAR/'.$fichier.'.txt') ou utilisent des motifs glob simples pour afficher les fichiers correspondant au préfixe. La discussion met aussi en évidence des erreurs courantes comme l’usage incorrect de foreach après une syntaxe invalide, et propose des exemples de code corrigeant le chemin et les motifs. En fin de fil, une solution est testée avec une définition de $fichier adaptée et l’affichage des résultats par glob, mais le script ne conclut pas à une résolution complète.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
     
    Salut,

    Tu peux utiliser un substr pour connaitre le début de ton fichier.
    Vérifie ce que tu as dans $file, il faudra peut être passer par un explode pour être sûr de n'avoir que le nom du fichier.

    Sinon, encore plus simple, tu as ça :

    <?php
    foreach(glob('chemin/vers/ton/dossier/rapport*.txt') as $file){
     echo $file.'<br />';
    }
    // Affichera seulement les fichiers .txt qui commencent par "rapport"
    0
    1. Synerz Messages postés 1341 Statut Membre 116
       
      Merci de ta réponse :)
      Si j'utilise la deuxième solution je suis obliger de mettre cette partie de code dans une boucle pour différencier les trois ID ?
      0
    2. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
       
      non, tu peux constituer ta chaine à partir de ton $fichier :

      <?php
      foreach(glob('chemin/vers/ton/dossier/'.$fichier.'.txt') as $file){
       echo $file.'<br />';
      }
      // Affichera seulement les fichiers .txt qui commencent par le contenu de $fichier
      0
    3. Synerz Messages postés 1341 Statut Membre 116 > ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Donc comme ça ?
        $pointeur = opendir($nom_repertoire);
        while ($file = readdir($pointeur)){
          if foreach(glob('/opt/Fichier HAR/'.$fichier.'.txt') as $file){
       echo $file.'<br />';
      
      
      0
    4. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
       
      je pense, je n'ai pas testé, mais dans la logique ça doit être un truc comme ça, teste donc :)
      0
    5. Synerz Messages postés 1341 Statut Membre 116 > ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention  
       
      ça ne fonctionne pas :/
      J'ai cette erreur dans ma page de log :PHP Parse error: syntax error, unexpected T_FOREACH, expecting '(' in /var/www/html/index.php on line 31
      0