Lire contenu rep mais pas sous-rep php

Résolu/Fermé
dzavatar - 1 mars 2012 à 13:32
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 - 2 mars 2012 à 15:09
Bonjour,
je coince sur un petit problème de lecture de répertoire pour injection dans une base de donné.


suite a l'envoi par formulaire d'un fichier ZIP pour Upload d'une galerie photo. voici les ordre qui son effectuer via mon script:

1. copie dans un dossier tmp
2. décompression
3. les vérification de rigueur
4.si ok suppression du ZIP
5 Lecture des fichier pour l'insertion dans la DB
6. exécution de la requête d'insertion
7.copie des fichiers dans le bon répertoire
8. destruction du fichier temporaire.

ceci résume en gros le script. Seulement j'ai un petit problème au moment de l'insertion....

vu que mon zip contient un sous dossier (miniatures) j'ai jusque maintenant su éviter qu'il m'injecte dans la DB le nom de se dossier mais pas son contenu.

je ne peu malheureusement pas définir a l'avance le nombre de fichier de celui ci ....

si quelqu'un a une idée? ....


if (is_dir($dir)) {
   			 if ($dh = opendir($dir)) {
        		while (($file = readdir($dh)) !== false) {
        	if($file != '.' && $file != '..' && $file!='Thumbs.db' && $file!='miniatures'){
    	
    $sql="INSERT INTO listephoto VALUE ('','".$file."','".$_POST['album']."','','','".$_POST['membres']."')";
			if(!mysql_query($sql)){ die(mysql_error()); }
		}
		}    
        closedir($dh);
   		}
		};


* miniatures correspond au nom du dossier qu'il ne doit pas lister.... manque ce qu'il y a dedans.

Et au cas ou on me demanderai pour quoi il y a des champs vide insérer... c juste que par la suite je récupère par un test les images qui sont vide a se niveau pour injecter un titre et une description de l'image.

merci d'avance pour votre aide.
A voir également:

4 réponses

Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
1 mars 2012 à 13:45
je n'ai jamais fait ce genre de manip en PHP, mais j'imagine que tu as le chemin du fichier ?

si oui, tu peux comparer les chemins, et ne prendre que ceux du dossier racine :)

un truc du genre :


$chemin = [chemin]
$nbSlash = [compter]("/"; $chemin)
if ($nbSlash = $nbMin)
{
[ecrire dans la BDD]
}
0
oui effectivement il y a bien un chemin défini en tout début de script pour l'upload du fichier que je récupère par la suite pour définir ou il dois aller lire le contenu et travailler avant le déplacement final.

$dir='../../tmp/';

si je comprend donc ta proposition , se serais alors :

$nbSlash = [1]("/"; $dir)
if ($nbSlash = $nbMin)
{
ICI JE PLACE MA BOUCLE D'INSERTION
}
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
1 mars 2012 à 16:06
non, ça fait longtemps que je n'ai plus codé en PHP, je vais donc faire ça en très simplifié :

while [il y a des fichiers dans ton archive]
{
$chemin = [chemin] //ici, on va lire le chemin du fichier à traiter
$nbSlash = [compter]("/"; $chemin) // on compte le nombre de "/" dans le chemin du fichier en cours
if ($nbSlash = $nbMin) // si on a le nombre minimum possible de "/" dans le chemin (on est à la racine donc)
{
[ecrire dans la BDD]
}
[on passe au fichier suivant]
}

normalement, tu utilise la boucle foreach dans le XML, je sais pas si c'est pareil pour les archives
0
a se niveau du script , ce n'est plus une archive , mais des JPG.

ce qu'il lit la est :

temp/img1.jpg
temp/img2.jpg
temp/img3.jpg

---doit stopper sans lire----
temp/miniatures/img1.jpg
temp/miniatures/img2.jpg
temp/miniatures/img3.jpg


je vais essayer ton script pour qu'il s'arrête au premier slash après le dossier racines comme tu le décris
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
1 mars 2012 à 17:29
Tien moi au courant ;)
0
Apres pas mal de test , j'en suis revenu a mon script de départ. et j'ai trouvé enfin le pourquoi.

je suppose surtout. j'avais simplement une erreur un rien plus haut concernant la copie des fichier dans le bon répertoire créer précédemment avec mon script d'album. du coup vu que le script ne trouvais pas le dossier de destination pour le premier ni pour le second de miniatures. je pense qu'il bouclais du coup la commande d'injection..... tout bêtement... J'ai donc rajouté quelque test au cas ou il ne trouve pas le dossier qu'il me refuse tout le reste du script.
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
2 mars 2012 à 15:09
Ok :)
0