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

Bibliothèques et frameworks PHP Discussion :

Enregistrement des données d'un fichier csv


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2015
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Enregistrement des données d'un fichier csv
    Bonjour,
    Je suis débutant en PHP et CakePHP et je souhaite réaliser une application qui permet à un utilisateur de rentrer une liste de numéro et que cette liste s'enregistre dans mes tables.

    Pour cela j'ai 3 tables dans ma base de données :
    Categories(id, nom_cat, description)
    Articles(id, nom_article, description, #categorie_id)
    Pieces(id, numero, #article_id)

    Pour insérer une liste, l'utilisateur choisit une catégorie, un article et insère un fichier .csv qui contient les numéros des pièces.
    J'ai un problème lors de l'import de la liste, je n'arrive pas à enregistrer les numéros dans ma table Pieces.
    Après de nombreuses recherches, voila mon code :

    code du controller :
    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
    function add($id = null){
     
     
      if(!empty($this->data)){
       $this->Article->id = $id;
       $extension = pathinfo($this->data['Article']['nom_fichier']['name'], PATHINFO_EXTENSION);
     
       if(!empty($this->data['Article']['nom_fichier']['tmp_name'])&& in_array($extension, array('csv')) ){
     
        $fichier = $this->data['Article']['nom_fichier']['tmp_name'];
        $handle = fopen($fichier, "r");
     
        while($tab=fgetcsv($handle,4096,';')){
     
         $numero=utf8_encode($tab[0]);
         $donnees = array(
          'Article' => array('nom_article'=> $this->data['Article']['nom_article']),
          'Piece' => array(array('numero'=>$this->data['Piece']['numero'],
                 'article_id'=>$this->data['Article']['id']))
         );
         debug($donnees);
         //$this->Article->Piece->create();
         //$this->Article->Piece->saveAll($donnees);
        }
     
        //$this->Session->setFlash('Votre liste a été ajoutée.','sucess');
        //$this->redirect(array('action'=>'index', $this->Article->id)); 
     
       }else if (!empty($this->data['Article']['nom_fichier']['tmp_name'])){ 
        $this->Session->setFlash('Vous ne pouvez pas envoyer ce type de fichier');
       }
     
      }
     }
    je vous remercie d'avance,

    JP

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Remarque utilisez la version 3 de cake a lieu pourrait être une bonne idée, elle vient juste d'arriver.


    Les liaisons dans tes modèles sont OK ?
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2015
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Il m'a été imposé la version 1.3 de cake

    Voici mes liaisons :

    - Modèle Article : hasMany 'Piece'
    belongsTo 'Categorie'
    - Modèle Piece : belongsTo 'Article'
    - Modèle Categorie : hasMany 'Article'

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2015
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    J'arrive à attribuer les valeurs de mon fichier csv à 'numéro', cependant je n'arrive pas a récupérer l'id de l'article

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        while($tab=fgetcsv($handle,4096,';')){
     
         $numero=utf8_encode($tab[0]);
         $donnees = array(
          'Article' => array('nom_article'=> $this->data['Article']['nom_article']),
          'Piece' => array(array('numero'=>$numero,
    		             'article_id'=>$article_id))
         );
         debug($donnees);
         //$this->Article->Piece->create();
         //$this->Article->Piece->saveAll($donnees);
        }
    Appercu du debug($donnees)

    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
    Array
    (
        [Article] => Array
            (
                [nom_article] => test
            )
     
        [Piece] => Array
            (
                [0] => Array
                    (
                        [numero] => 10
                        [article_id] => 
                    )
     
            )
     
    )

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2015
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    J'ai réussi à récupérer l'id de l'article cependant je n'arrive toujours pas à importer les numéros des pièces dans ma base de données

    Voici mon code :
    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
    	$this->Article->save($this->data['Article']);   // enregistre l'article
     
    	$fichier = $this->data['Article']['nom_fichier']['tmp_name'];
    	$handle = fopen($fichier, "r");
    	$article_id = $this->Article->id;
     
    		while($tab=fgetcsv($handle,4096,';'))
    		{
     
    			$numero=utf8_encode($tab[0]);
    			$donnees = array(
    					'Article' => array('nom_article'=> $this->data['Article']['nom_article']),
    					'Piece' => array(array('numero'=>$numero,
    							    'article_id'=>$article_id))
    							);
     
     
    			$this->Article->Piece->create();
    			$this->Article->Piece->saveAll($donnees);
    			debug($donnees);
    		}

    Debug :
    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
    Array
    (
        [Article] => Array
            (
                [nom_article] => test
            )
     
        [Piece] => Array
            (
                [0] => Array
                    (
                        [numero] => 10
                        [article_id] => 55
                    )
     
            )
     
    )

    Pourriez-vous m'aider ?
    Je vous remercie

    JP.

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/02/2008, 22h52
  2. [File] enregistrer des données dans un fichier
    Par jontleman dans le forum Windows Forms
    Réponses: 8
    Dernier message: 23/08/2007, 13h08
  3. [CSV] exporter des données d'un fichier CSV vers BD Mysql
    Par samsso2006 dans le forum Langage
    Réponses: 2
    Dernier message: 04/05/2007, 22h25
  4. Extraire des données dans un fichier .csv
    Par orj30754 dans le forum C
    Réponses: 7
    Dernier message: 03/11/2006, 14h48
  5. [VB6]enregistrer des données dans un fichier
    Par tchinette42 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 19/04/2006, 18h55

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