Lister les fichiers d'un sous-répértoire PHP

Résolu
Yazou92 Messages postés 208 Statut Membre -  
 Utilisateur anonyme -
Bonjour,

Je fait actuellement un petit site qui permet de scanner un dossier et de lister tout les fichiers video.

Ce que je n'arrive pas a faire c'est de scanner les sous-dossier de mon dossier racine et d'ajouter ces fichiers à ma base de donnée, car mon code me permet d'ajouter que les films dans le dossier racine.

Voila mon Code: si quelqu'un à une solution merci d'avance les gars ^^

<?php
include_once 'function.inc.php';
$dsn = "mysql:host=localhost;dbname=dvix";
$user = "root";
$password = "";

try {
    $db = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    die("Erreur !:" . $e->getMessage());
}

$prepareStatement = $db->query("SELECT n_file FROM t_film ");
$connect = $prepareStatement->fetchAll();
$rep = "F:\DVD";
$dir = opendir($rep);

while ($file = readdir($dir)) {
    
    if (($file != ".") && ($file != "..")) {
        $info = pathinfo($file);
        $found = false;
        foreach ($connect as $value) {
            
            if ($value['n_file'] == $file) {
                $found = true;
                break;
            }
        }
        if ($found == false) {
            $statement = "INSERT INTO t_film 
            (n_file,n_title,n_synopsis,n_ctg,n_date)
            VALUES ('$file','".$info['filename']."','','".$info['extension']."',' ')";
            $db->exec($statement);
        }
    }
}

header('Location: index.php');
?>


1 réponse

  1. Utilisateur anonyme
     
    Bonjour,

    Il va falloir se la jouer récursif pour bien faire :

    function scan($rep) {
    global $db;
    $dir = opendir($rep);
    while ($file = readdir($dir)) {
        
        if (($file != ".") && ($file != "..")) {
            if (is_dir($rep.$file))  { 
            scan($file);
            } else {
            $info = pathinfo($file);
            $found = false;
            foreach ($connect as $value) {
                
                if ($value['n_file'] == $file) {
                    $found = true;
                    break;
                }
            }
            if ($found == false) {
                $statement = "INSERT INTO t_film 
                (n_file,n_title,n_synopsis,n_ctg,n_date)
                VALUES ('$file','".$info['filename']."','','".$info['extension']."',' ')";
                $db->exec($statement);
            }
        }
        }
    }
    }
    scan("F:\DVD");
    


    Pas testé, mais c'est l'idée.
    0
    1. Yazou92 Messages postés 208 Statut Membre 16
       
      Merci, ça marche bien ^^


      Bonne journée
      0
    2. Utilisateur anonyme
       
      Super, bonne continuation
      0