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 20/10/2007, 03h57   #1
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 183
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 183
Points : 33
Points : 33
Par défaut Un petit script facile mais qui bloque

Bonjour à tous,

Je suis encore une fois coincé... J'ai des anciennes bases MySql dont je voudrai me servir. Elles ont été sauvegardées, bases et tables, dans des fichiers *.txt réunis dans le même répertoire.

Pour éviter de tout transférer à la main, j'ai voulu réaliser un petit script rapide qui le fait automatiquement : on définit le répertoire. Il lit ce répertoire et ouvre chaque fichier. Par fichier, il lit chaque ligne (qui est une instruction MySql) et, avec un query, il charge la table. Simple comme tout.

Parfois il fonctionne, mais pas longtemps, et parfois il refuse en me mettant :

" Warning: file(.): failed to open stream: Permission denied in d:\easyphp1-8\www\whombat\charge_tables.php on line 16 "

C'est la ligne : $fich = file($files); Bien sur il précise que du coup la variable each() n'est pas valable et que Query est vide.
Les fichiers n'ont pas de blocage particuliers, la preuve parfois il les ouvre. Alors... No sé...

Je vous mets mon script, au cas ou...
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
 
<?php
 
function cherge_bdd($dir)      {
 
	require('..\config\conf.php');  // pour les données $serveur, $user, etc...
 
	chdir($dir);   // $dir est une variable déjà définie, c'est un répertoire de fichiers de données à entrer sur la bdd
 
	$cnx = mysql_connect($serveur, $user, $passwd); 
	mysql_select_db($bdd, $cnx); 	
 
	$fp = opendir($dir);
 
	while ($file = readdir($fp))      {
 
		$fich = file($file);
		$nb=count($fich); 
 
		for ($i=0; $i<=$nb; $i++)	{
 
			list( $num, $ligne ) = each( $fich );
			$instruction = trim($ligne);
 
    			mysql_query($instruction) or die(mysql_error());
 		}
	}
 
 
	mysql_close();
}
 
?>
Merci par avance de votre avis.

Cordialement.
Whombat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2007, 12h45   #2
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
As-tu fais un echo sur le nom du fichier a lire, j'ai l'impression que tu n'as pas exclu les fichiers . et .. c'est peut-etre eux qui te pose problème.
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2007, 13h25   #3
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 183
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 183
Points : 33
Points : 33
Bonjour,

Je n'ai pas cherché les fichiers '.' et '..' parcequ'il n'y a^pas de sous répertoire. C'est juste un rep, créé pour, avec des fichiers txt.
Whombat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2007, 14h32   #4
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
Tous les répertoires contiennent implicitement les fichier . et .. tu n'as pas le choix essaye de voir si le problème ne viens pas de là.
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2007, 20h15   #5
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 183
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 183
Points : 33
Points : 33
En fait vous aviez raison.
Ca marche parfaitement.
Merci pour le tuyau.
Cordialement.
Whombat 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 11h48.


 
 
 
 
Partenaires

Hébergement Web