IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Récupérer l'heure d'un fichier TXT dans un Insert into


Sujet :

Langage PHP

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    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 :

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    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.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 87
    Points : 102
    Points
    102
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $lignes = file('monfichier.txt');
    foreach($lignes as $ligne)
    {
    mysql_query($ligne);
    }

  3. #3
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  4. #4
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Autre solution au moment de la sauvegarde, mettre directement la "'" pour les champs de certains type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PowerShell] Récupérer des lignes d'un fichier txt dans un autre
    Par Boulboul22 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 24/04/2012, 22h44
  2. [PowerShell] Récupérer certaines lignes d'un fichier txt dans un autre
    Par TanKer dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 16/11/2011, 22h31
  3. Réponses: 6
    Dernier message: 30/12/2010, 12h55
  4. [OpenOffice][Base de données] Récupérer les données d'un fichier .txt et les insérer dans une base de données
    Par frack dans le forum OpenOffice & LibreOffice
    Réponses: 9
    Dernier message: 05/08/2009, 11h52
  5. Réponses: 2
    Dernier message: 20/07/2008, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo