[PHP] Lister dossier + SQL

Fermé
chokkkkkk Messages postés 1 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 14 décembre 2006 - 14 déc. 2006 à 04:36
 jeanch - 14 déc. 2006 à 10:24
Bonjour à tous,

Voici mon premier message que je vous poste en espérant que vous pourrez éclairer mes lumières....

Je voudrais pouvoir inserer dans ma base de données tout les fichiers présent sur mon serveur.

Il faut savoir que celui ci est diviser en 1155 dossiers différents nommé par une suite de numéro allant de 1 à 1155.

J'aimerai pouvoir ajouter le contenu de chaque dossier dans la base de données comment dois je faire ?

Il faut savoir qu'il est possible que des dossiers n'existent plus et que certain soient vide, dans les deux cas, le code ne doit pas être éxécuté...


Vous n'auriez pas un bou de code sous la main ou du moin une piste ?
A voir également:

2 réponses

Bonjour,
Une piste d'action pour des fichiers de même type (le type de fichier déterminera la nature du champ de stockage de ta table, ex : le stockage d'une image se fait en binary, et selon la longueur un texte celui-ci peut-etre en tinytext ou longtext, voir le manuel pour le type de données)
Veux-tu conserver la référence portée par le nom du fichier?
De quel forme est le nom de fichier, cela déterminera l'action à entreprendre, ex si le nom de fichier est : monTexte_0015.txt
la fonction à utiliser pour récupérer son rang sera "explode("_", $nomfichier), par contre si le nom du fichier est : monTexte0015.txt, il faudra faire : explode(".", $nomfichier) puis utiliser la fonction substr().
Une fois définit ce que la nature des fichiers et ce que tu veux enregistrer dans ta table il faut créer celle-ci, ne pas oublier de créer un champ id_unique qui s'autoincrémentera.
exemple de champs à créer
id_fichier, not null auto_increment primary key,
nom_fichier char(25) not null,//25 est le nombre de caratères
numero_fichier int(4) not null,
contenu_fichier ; text, int, binary etc...
jusque là rien de très compliqué.
Maintenant la routine.
tu commences par ouvrir ta table
Puis tu listes le répertoire ou se trouvent tes fichiers.
$chemin_dossier = "ton chemin d'accès depuis le script";
//ouverture du dossier
$dir = opendir($chemin_dossier);
//boucle qui liste les fichiers
while($fichier = readdir($dir))
{
if($fichier != . | $fichier != ..)//ne tient pas compte des points représentant l'arborescence
{
//les actions de nettoyage du titre
//à la sortie tu dois avoir
$titre_fichier;
$numero_fichier;
//récupération du contenu du fichier
//ex fichier txt
$contenu = file_get_contents($chemin_acces_fichier);
//Partie écriture dans la table
/*********************************/
insert into ta_table (titre_fichier, numero_fichier, contenu) values ($titre_fichier, $numero_fichier, $contenu);
//tu peux inserer une commande de suppression du fichier à la fin
//unlink(nom_fichier);
//Mais je te conseille fortement de séparer cette fonction et l'appeler après avoir verifié ta table
}
}
//idem pour la suppression du dossier contenant tes fichiers
//Il est impératif que le dossier soit vide
//rmdir("chemin_dossier");
et voilà
et hop la boum comme disait prosper
0
PS:
je suis tète en l'air
dans ta boucle il faut inserrer les conditions d'existence ou de vide du fichier
Elle(s) s'inserre(nt) après :
$contenu = file_get_contents($chemin_acces_fichier);
if(!empty($contenu))//si il n'est pas vide
{
//tu l'inserres dans ta table
insert into ta_table (titre_fichier, numero_fichier, contenu) values ($titre_fichier, $numero_fichier, $contenu);
}
/*************************************/
cela n'a pas d'importance qu'il existe des trous dans ta numérotation, car tu as créer dans ta table un champ "id_fichier" qui s'auto incrémente et te donnera une nouvelle numérotation
et comme tu as inscrit l'ancien numéro, tu sais tout de suite à quoi il correspond.
et hop la boum
0