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

PHP & Base de données Discussion :

date lors d'importation d'un csv


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut date lors d'importation d'un csv
    Salut à tous, je suis débutant , svp j'ai besoin de votre aide. j'ai un script php pour importer un fichier log sous format csv à ma table et j'ai modifié les champs à importer dans la base mysql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $date = $liste[0]; 
    $heure = $liste[1]; 
    $service = $liste[7];
    le problème c'est que le champ "date" vaut après importation 0000-00-00 sachant que dans le csv il est sous la forme jour/mois/annee.
    merci,

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    hmmm

    Si dans ton CSV tu n'as que la date et pas l'heure, il faut soit dans ta DB utiliser un champ DATE et pas DATETIME, soit assigner une heure par défaut...

    admettons que tu reçoive ta date depuis le CSV :
    J'ai mis une valeur fixe mais c'est de cette forme là que tu dois organiser ta date : YYYY-MM-DD, tu es obligé de respecter ce format !

    pour le mettre dans ta DB si le format du champ est de type DATETIME il faudra ajouter l'heure :
    Ceci ajoute l'heure => minuit pile.


    A ce stade, echo $date; t'affichera : 2009-08-27 00:00:00
    Le format de DATETIME est : YYYY-MM-DD HH:mm:ss

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux convertir ton format de date directement dans ta requete d'insertion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    STR_TO_DATE($date, '%d/%m/%Y')

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour et Bienvenue sur Developpez.
    Tu dois formater la date avant son insertion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date = implode('-',array_reverse (explode('/',$liste[0])));

  5. #5
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    merci beaucouuuuup c'est parfait. vraiment vous êtes super

  6. #6
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    encore une question (grace vous je commence à aimer le php). bon, j'ai un script pour importer des fichiers logs(csv) vers la bd, sur ma page web j'ai mis icone "importer" lorsqu'on clik ça donne (parcourir:\...) pour choisir l'emplacement du fichier et l'importer, ici ça marche pas. je ne sais pas cmt faire, voici le script :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <?php
    if(isset($_FILES["fichier"])){
    	if($_FILES["fichier"]["size"]!=0){
    		$file_tmp=$_FILES["fichier"]["tmp_name"];
    		copy($file_tmp,$fichier);
    	}else $fichier="";
    }
    $table = $_POST["service"];
      	include("connexion.php");
       /* On ouvre le fichier à importer en lecture seulement */
     if (file_exists($fichier))
         $fp = fopen("$fichier", "r"); 
     else
         { /* le fichier n'existe pas */
           echo "Fichier introuvable !<br>Importation stoppée.";
           exit();
         }
              while (!feof($fp)) /* Et Hop on importe */
        { /* Tant qu'on n'atteint pas la fin du fichier */ 
           $ligne = fgets($fp,4096); /* On lit une ligne */  
           /* On récupère les champs séparés par ; dans liste*/
           $liste = explode( "\t",$ligne);  
               /* On assigne les variables */ 
           $date = implode('-',array_reverse (explode('/',$liste[0]))); 
    	   $heure = $liste[1]; 
    	   $service = $liste[5]; 
    	   $adresse = $liste[8]; 
    	   //echo $date." ".$heure." ".$service." ".$adresse."<br/>";
    	   $tmp = strchr($adresse,"mailbox");
    	   $tabb = explode( " ",$tmp);
    	   $adresse = $tabb[1];
           /* Ajouter un nouvel enregistrement dans la table */ 
           $query = "INSERT INTO $table VALUES('$date','$heure','$service','$adresse')"; 
           $result= MYSQL_QUERY($query); 
            } 
              echo "<br>Importation terminée, avec succès."; 
        fclose($fp); 
    	MYSQL_CLOSE(); 
     
      ?>

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu utilises la variable $fichier sans lui avoir donné de valeur.

  8. #8
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    et comment faire svp ? j'ai utiliser la variable fichier provisoirement et je lui ai donner une valeur d'un fichier déjà existant, mais c'est pas une solution pour le faire

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu veux conserver le fichier uploadé sur ton serveur :
    - tu définis le nom de fichier que tu veux.
    - tu deplaces le fichier temporaire $_FILES["fichier"]["tmp_name"] en utilisant la fonction move_uploaded_file() et en lui donnant le nom que tu as défini plus haut
    - tu l'ouvres

    Si tu ne veux pas conserver le fichier :
    - tu ouvres $_FILES["fichier"]["tmp_name"]

  10. #10
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    désolé sabotage de vous déranger, en fait je veux savoir comment importer un fichier csv depuis n'importe quel emplacement ! je sais pas cmt faire. càd lorsque je clik sur parcourir je choisis l'emplacement que je veux. si tu peux modifier mon code stp

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155

  12. #12
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut code de bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form action="importer fichier.php" method="POST" ENCTYPE="multipart/form-data">
    	<span  style="color:black">Fichier log :<input name="fichier" type="file"/><br/>
    	Service : <input type="radio" name="service" value="pop" checked="checked"/> Pop 
    			<input type="radio" name="service" value="webmail"/> Webmail<br/> </span>
    	<input type="submit"/>
    </form>

Discussions similaires

  1. Format date lors de la création de CSV à partir d'Excel
    Par mehdiyou1985 dans le forum Excel
    Réponses: 3
    Dernier message: 04/11/2013, 16h58
  2. Réponses: 3
    Dernier message: 07/06/2011, 14h50
  3. erreur de format date lors d'import de fichier excel
    Par cashmoney dans le forum Import/Export
    Réponses: 0
    Dernier message: 07/01/2009, 13h27
  4. pas de reconnaissance date lors d'import
    Par Pierre845 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 08/05/2008, 14h40
  5. [VBA-E]Problème de date lors d'importation
    Par illight dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/04/2006, 11h38

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