Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/06/2007, 13h20   #1
Membre à l'essai
 
Avatar de yohan0262
 
Inscription : juin 2007
Messages : 159
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 159
Points : 21
Points : 21
Envoyer un message via MSN à yohan0262
Par défaut lister un répertoire

Bonjour à tous,

J'ai mis au point un script, listant un répertoire afin d'y récupérer les fichiers que je souhaite rentrer dans ma base de donnée. Voila le script :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
<?php
 
function liste($chemin)
{
 
$tab = array();
	// Accès au repertoire
$repertoire=opendir($chemin);
 
	// Initialise la boucle
	$sortie_de_la_boucle=false; 
 
// Boucle réccupérant toutes les entrées contenues dans le répertoire
while ($entree=readdir($repertoire))
	{
		if (($entree!=".")&&($entree!="..")&&($entree!="Filiales")&&($entree!="Sources"))
		{
			if (is_dir($chemin.$entree))
			{
				echo "<a href ='$chemin$entree' target='_self'>".$entree."</a><br>";
				liste($chemin.$entree);
			}
			else
			{
				$tab[]=($chemin.'/'.$entree);
			}
		}
	$tab[]=($chemin.'/'.$entree);
	}
 
liste("L:/");
 
foreach($tab as $value) 
	{
	List ($secteur, $ue, $batiment, $fichier, $ext) = explode("/", ".$value.");
 
		$var = "SELECT id_secteur FROM secteur WHERE nom_secteur = '".$secteur."'";
 
			$result1 = mysql_query($var);
			$val2 = mysql_fetch_array($result1);
 
		$req = "SELECT id_instal FROM automate WHERE type_instal = '".$fichier."'";
 
			$result2 = mysql_query($req);
			$val1 = mysql_fetch_array($result2);
 
		$get = "SELECT id_ue FROM automate WHERE ue.nom_ue = '".$ue."'";
 
			$result3 = mysql_query($get);
			$val3 = mysql_fetch_array($result3);
 
		$requete = "SELECT id_bat FROM automate WHERE batiment.nom_bat = '".$batiment."'";	
 
			$result4 = mysql_query($requete);
			$val4 = mysql_fetch_array($result4);
 
 
		$queri = "INSERT INTO automate (id_instal, id_secteur, id_bat, id_ue, source, pdf) VALUES ('".$val1['id_instal'] ."','".$val2['id_secteur'] ."','".$val3['id_ue'] ."','".$val4['id_bat'] ."','./dossier1','".$value."')";
 
		mysql_query($queri) or die ("Erreur dans \"$queri\""); 
	}
 
	//fermeture du pointeur
    closedir($chemin);
}
?>
Le problème est qu'aucun fichier n'est renvoyé et je ne comprend pas pourquoi . J'espère que quelqu'un sera trouver une solution
bonne journée
yohan0262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 13h59   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Je ne comprends pas bien ton code. Tu définies la fonction liste() et dans cette fonction, tu l'appelles elle même sur L:\ Du coup ta fonction elle meme n'est jamais appelée. c'est juste la définition qui apparait dans ton code :

Code :
1
2
3
4
5
6
7
8
9
10
11
<?php
// definition de la fonction
function maFonction($monparam)
{
echo "Ma fonction est appelée avec le paramètre : $monParam";
}
 
// maintenant on appelle cette fonction :
maFonction("chaine paramètre");
 
?>
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 14h39   #3
Membre à l'essai
 
Avatar de yohan0262
 
Inscription : juin 2007
Messages : 159
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 159
Points : 21
Points : 21
Envoyer un message via MSN à yohan0262
Oui certaines choses n'étaient pas claires ! Sinon j'appel ma fonction dans un autre script en fesant :

include(./liste.php);
liste(L://);

Enfin j'ai avancé un peu sur le problème, j'arrive maintenant a lister l'arborescence complète mais le script me renvois une erreur pour chaque " valeur = mysql_fetch_array($result)" ???

Voici mon script modifié :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
<?php
 
function liste($chemin)
{
 
$tab = array();
	// Accès au repertoire
$repertoire=opendir($chemin);
 
	// Initialise la boucle
$sortie_de_la_boucle=false; 
 
// Boucle réccupérant toutes les entrées contenues dans le répertoire
while ($entree=readdir($repertoire))
	{
		if (($entree!=".")&&($entree!="..")&&($entree!="Filiales")&&($entree!="Sources")&&($entree!="Fournisseurs")&&($entree!="Methodes"))
		{
			if (is_dir($chemin.$entree))
			{
				//$chemin .= "/".$entree;
				$chemin2 = $chemin . $entree. "/";
				liste($chemin2);
			}
			else
			{
				//echo '<a href =\''.$chemin.$entree.'\' target=\'_self\'>'.$chemin.$entree.'</a><br />';
				$tab[]=$chemin.$entree;
			}
		}
	}
 
foreach($tab as $value) 
	{
 
	List ($secteur, $ue, $batiment, $fichier) = explode("/", $value);
 
		$var = "SELECT id_secteur FROM automate, secteur S WHERE S.nom_secteur = '".$secteur."'";
 
			$result = mysql_query($var);
			$valeur2 = mysql_fetch_array($result);
 
		$req = "SELECT id_instal FROM automate, nomination N WHERE N.type_instal = '".$fichier."'";
 
			$result = mysql_query($req);
			$valeur1 = mysql_fetch_array($result);
 
		$get = "SELECT id_ue FROM automate, ue WHERE ue.nom_ue = '".$ue."'";
 
			$result = mysql_query($get);
			$valeur3 = mysql_fetch_array($result);
 
		$requete = "SELECT id_bat FROM automate, batiment WHERE batiment.nom_bat = '".$batiment."'";	
 
			$result = mysql_query($requete);
			$valeur4 = mysql_fetch_array($result);
 
		$queri = "INSERT INTO automate (id_instal, id_secteur, id_bat, id_ue, pdf) VALUES ('".$valeur1['id_instal'] ."','".$valeur2['id_secteur'] ."','".$valeur3['id_ue'] ."','".$valeur4['id_bat'] ."','".$value."')";
 
		mysql_query($queri) or die ("Erreur dans \"$queri\""); 
	}
 
	//fermeture du repertoire
    closedir($repertoire);
}
?>
yohan0262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 14h44   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Il te renvoie une erreur, d'accord, mais laquelle ?
Penses a remplacer tes mysql_query() par quelquechose comme ca:
Code :
$result = mysql_query($var) or die("Erreur mysql : " . mysql_error());
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 14h46   #5
Membre à l'essai
 
Avatar de yohan0262
 
Inscription : juin 2007
Messages : 159
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 159
Points : 21
Points : 21
Envoyer un message via MSN à yohan0262
Citation:
Envoyé par koopajah
Il te renvoie une erreur, d'accord, mais laquelle ?
Penses a remplacer tes mysql_query() par quelquechose comme ca:
Code :
$result = mysql_query($var) or die("Erreur mysql : " . mysql_error());
ok ca marche je vais essayer et je te dis quoi dans 5min ! a toute de suite
yohan0262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 14h57   #6
Membre à l'essai
 
Avatar de yohan0262
 
Inscription : juin 2007
Messages : 159
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 159
Points : 21
Points : 21
Envoyer un message via MSN à yohan0262
Citation:
Envoyé par yohan0262
ok ca marche je vais essayer et je te dis quoi dans 5min ! a toute de suite
C'est bon je suis revenu !
Le script m'a renvoyé "erreur mysql" donc je suppose que le problème vient de la ligne $result = mysql_query($var); ???
yohan0262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 14h59   #7
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
As tu bien ajouté le or die(...) juste apres le mysql_query() ? (et pas une ligne après, ou après le ;, ca ne marchera pas sinon.

Par ailleurs, je pense que le probleme vient de ton "explode", es-tu sur que $secteur (ou les autres variables qu'on remplit avec explode() ont une valeur et donc qu'elles ne sont pas vides?
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 15h03   #8
Membre à l'essai
 
Avatar de yohan0262
 
Inscription : juin 2007
Messages : 159
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 159
Points : 21
Points : 21
Envoyer un message via MSN à yohan0262
Citation:
Envoyé par koopajah
As tu bien ajouté le or die(...) juste apres le mysql_query() ? (et pas une ligne après, ou après le ;, ca ne marchera pas sinon.

Par ailleurs, je pense que le probleme vient de ton "explode", es-tu sur que $secteur (ou les autres variables qu'on remplit avec explode() ont une valeur et donc qu'elles ne sont pas vides?
Pour le "or die" oui ne t'inquiète pas je l'ai mis au bon endroit.

Justement je viens d'aller sur ma base donnée regarder ce que me rentre mon insert into. Il me met des 0 partout sauf à l'emplacement ou j'ai rentré $value dans ma requête mais est ce du faite que mes valeurs précédentes ne marche pas ? je ne sais pas trop

Code :
1
2
 
$queri = "INSERT INTO automate (id_instal, id_secteur, id_bat, id_ue, pdf) VALUES ('".$valeur1['id_instal'] ."','".$valeur2['id_secteur'] ."','".$valeur3['id_ue'] ."','".$valeur4['id_bat'] ."','".$value."')";
PS : je reviens dans 15 petites minutes
merci de ton attention au sujet car là je ne vois vraiment pas
yohan0262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 16h07   #9
Membre à l'essai
 
Avatar de yohan0262
 
Inscription : juin 2007
Messages : 159
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 159
Points : 21
Points : 21
Envoyer un message via MSN à yohan0262
J'ai testé mon explode en fesant un echo de $secteur etc et il fonctionne.
Le problème viendrait alors de la requête $var = ...... pourtant j'ai vérifié et elle est bonne. Tout correspond avec ce que je souhaite réaliser, d'ou peut donc venir le problème ?
yohan0262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 16h17   #10
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
As-tu testé les requetes directement dans phpmyadmin? pour vérifier que ca te renvoie les bons résultats? Comme tu ne fais pas de jointures sur les tables, tu as peut être des champs vides. J'avoue ne pas pouvoir t'en dire plus, désolé!
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 16h25   #11
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
salut
Si tu utilises deux tables dans la même requête, le plus souvent il faut une jointure, sauf si les tables n'ont rien en commun.
Pourrais-tu donner la structure de tes tables ? genre : table(champ1, champ2...)

Et si tu as utilisé le or die(mysql_error()) et qu'il ya un problème tu devrais avoir obtenu un message d'erreur, pas simplement "erreur mysql".
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 19h31   #12
Membre à l'essai
 
Avatar de yohan0262
 
Inscription : juin 2007
Messages : 159
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 159
Points : 21
Points : 21
Envoyer un message via MSN à yohan0262
C'est pas grave koopajah, tu as déja pris la peine d'essayer de m'aider, je te renvois un grand merci quand même !

Sinon voila la structure de mes tables Celira :

¤ table automate(celle ou je veux stocker les fichiers que je récupère)
champ :
id
id_instal
id_ue
id_bat
id_secteur
pdf(correspondant au nom du fichier)

¤ table batiment
id_bat
nom_bat

¤ table ue
id_ue
nom_ue

¤ table secteur
id_secteur
nom_secteur

¤ table nomination
id_instal
type_instal (type d'installation)

Sinon pour le "or die" je l'ai rentrer comme me l'avais suggérer koopajah et le script m'a juste renvoyé erreur mysql
Code :
1
2
 
$result = mysql_query($var) or die("Erreur mysql : " . mysql_error());$result = mysql_query($var) or die("Erreur mysql : " . mysql_error());
yohan0262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 09h21   #13
Membre à l'essai
 
Avatar de yohan0262
 
Inscription : juin 2007
Messages : 159
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 159
Points : 21
Points : 21
Envoyer un message via MSN à yohan0262
Tout d'abord merci de votre aide ! J'ai enfin réussi à résoudre les quelques problèmes que je connaissais, je vous fais part de mon code peut être il permettra à certaines personnes qui étaient dans mon cas de trouver leurs bonheurs

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 
<?php
 
function liste($chemin)
{
 
$tab = array();
	// Accès au repertoire
$repertoire=opendir($chemin);
 
	// Initialise la boucle
$sortie_de_la_boucle=false; 
 
// Boucle réccupérant toutes les entrées contenues dans le répertoire
while ($entree=readdir($repertoire))
	{
		if (($entree!=".")&&($entree!="..")&&($entree!="Filiales")&&($entree!="Sources")&&($entree!="Fournisseurs")&&($entree!="Methodes")&&($entree!="Autres")&&($entree!="Architecture_Reseau")&&($entree!="SERAP"))
		{
			if (is_dir($chemin.$entree))
			{
				//$chemin .= "/".$entree;
				$chemin2 = $chemin.$entree. "/";
				liste($chemin2);
			}
			else
			{
				//echo '<a href =\''.$chemin.$entree.'\' target=\'_self\'>'.$chemin.$entree.'</a><br />';
				$tab[]=$chemin.$entree;
			}
		}
	}
$tableau=array();	
foreach($tab as $value) 
	{
 
	$tableau = explode("/", $value);
 
	if(count($tableau)>5)
	{
		for($i=6;$i<=count($tableau);$i++)
		{	
		$tableau[4]=$tableau[4].'/'.$tableau[$i-1];
		}
	}
 
	List ($serveur, $secteur, $ue, $batiment, $fichier) = $tableau;
	echo $serveur.'/'.$secteur.'/'.$ue.'/'.$batiment.'/'.$fichier.'<br />';
 
	$var = "SELECT id_secteur FROM secteur WHERE nom_secteur = '".$secteur."'";
 
			$result = mysql_query($var) or die ("<br>Erreur");
			$valeur1 = mysql_fetch_array($result);
 
		$get = "SELECT id_ue FROM ue WHERE nom_ue = '".$ue."'";
 
			$result = mysql_query($get);
			$valeur2 = mysql_fetch_array($result);
 
		$requete = "SELECT id_bat FROM batiment WHERE nom_bat = '".$batiment."'";	
 
			$result = mysql_query($requete);
			$valeur3 = mysql_fetch_array($result);
 
		$req = "SELECT id_instal FROM nomination WHERE type_instal = '".$fichier."'";
 
			$result = mysql_query($req);
			$valeur4 = mysql_fetch_array($result);
 
		$queri = "INSERT INTO automate ( id_instal, id_ue, id_bat, id_secteur, pdf) VALUES ('".$valeur4['id_instal'] ."','".$valeur2['id_ue'] ."','".$valeur3['id_bat'] ."','".$valeur1['id_secteur'] ."','".$fichier."')";
 
		mysql_query($queri) or die ("Erreur dans \"$queri\""); 
	}
 
	//fermeture du repertoire
    closedir($repertoire);
}
?>
yohan0262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 09h26   #14
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Bon, j'allais te suggérer les modifications que tu as faites toi-même.
Donc inutile de de continuer

Bonne continuation !
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h30.


 
 
 
 
Partenaires

Hébergement Web