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 23/04/2007, 10h52   #1
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Par défaut Récupérer l'heure d'un fichier TXT dans un Insert into

Bonjour,

J'ai un fichier txt qui contient des enregistrement qui commencent tous pas :

Citation:
INSERT INTO t_dump_log VALUES(1, 2007-04-15, 10:43:12, 'base'
J'ai un script php qui lit le fichier txt et qui exécute chacune des lignes :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$file = fopen($fileinput, "r");
		$sql = fread($file, filesize($fileinput));
		fclose($file);
		$inst = explode(";", $sql);
		$n = count($inst);
		for($i=0;$i<$n;$i++)
		{
			if(trim($inst[$i])!="")
			{
				mysql_query("$inst[$i]") or die("$inst[$i] ".mysql_error());
				echo "OK.$inst[$i]<br>";
			}
		}
Mais il n'est pas content à cause des ":" de l'heure :

Citation:
erreur de syntaxe près de ':43:12, 'base',
J'ai essayé de protégé les ":", mais cela n'a rien changé.

Que faire dans ce cas de figure ,

Merci d'avance
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 11h52   #2
Membre habitué
 
Inscription : mars 2007
Messages : 87
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2007
Messages : 87
Points : 109
Points : 109
bonjour,

si chaque ligne de ton fichier TXT est un requête alors il est plus facile d'utiliser la fonction file pour accèder au fichier:
Code :
1
2
3
4
5
6
 
$lignes = file('monfichier.txt');
foreach($lignes as $ligne)
{
mysql_query($ligne);
}
supergogol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 13h59   #3
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Merci effectivement cela me fait quelque lignes en moins;

Pour mon manque de "'" sur l'heure et également en fait sur la date, j'ai fait une fonction d'ajout de "'".

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
// ajout des "'" si nécessaire
function ajoutQuote($cote)
{
	$position = strpos($cote, '(')+1;
	// récupère le début de la chaine jusqu'à la "("
	$chaine=substr($cote,0,$position);
	// récupère la chaine à partie de 1er caractère après le "("
	$cote=substr($cote,$position);
	// Supprime la ")" de fin
	$cote=substr($cote, 0, strlen($cote)-4);
	// met en tableau pour avoir chaque champ séparé
	$tabcote=explode(",", $cote);
	$cote = "";
	$n = count($tabcote);
	for($i=0;$i<$n;$i++)
	{
		$position = strpos($tabcote[$i], "'");
		if($position!="1")
		{
			$tabcote[$i] = preg_replace('/\s{1,}/', '', $tabcote[$i]); 
			$tabcote[$i] = "'".$tabcote[$i]."'";
		}
		$cote.=$tabcote[$i].",";
	}
	$cote= substr($cote, 0, strlen($cote) -1);
	$chaine.=$cote.")";
	return $chaine;
}
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 11h06   #4
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Autre solution au moment de la sauvegarde, mettre directement la "'" pour les champs de certains type :

Code :
1
2
3
4
5
6
7
if(mysql_field_type($donnees, $i) == "string" || 
	mysql_field_type($donnees, $i) == "blob" || 
	mysql_field_type($donnees, $i) == "date" || 
	mysql_field_type($donnees, $i) == "time" || 
	mysql_field_type($donnees, $i) == "datetime" || 
	mysql_field_type($donnees, $i) == "timestamp")  
$insertions .= "'";
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan 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 10h26.


 
 
 
 
Partenaires

Hébergement Web