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