salut a vous j'ai un petit soucis je voudrais uploade un fichier csv puis le parcourir afin de lire son contenu et charger dans un tableau et qui serais enfin a son tour charger dans une base donnée Mysql.Pour cette application j’utilise le framework Yii.mon soucis en que variable fichier n'est vue au niveau de mon contrôleur et j'aimerais savoir comment faire au niveau de la vue pour ma variable fichier soit soumis avec le formulaire.le problème étant que celui-ci j'utilise le Html standard et non les Helpers comme celui de l'architecture du formulaire.n’étant pas un expert en Php et sur Yii toute aide,conseil ou assistance serais la bien venus.Merci a+
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 // mon controlleur ticketcontroller public function actionCreate() { $model=new Ticket; // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if(isset($_POST['Ticket'])) { if(isset($_FILES['Fichier'])) { //Instantiation d'un objet pour un nouveau fichier global $url; $duration=$_POST['duration']; //$url= basename($_FILES['Fichier']['name']); //echo ($url); $ObjFichier = new Uploadfile($_FILES['Fichier']); //Choix des types de fichiers possibles $ObjFichier->TypesValides = array('.csv'); //Upload du fichier et choix du répertoire de destination $ObjFichier->UploadFichier('Folder CSV/') or die($ObjFichier->UploadErreur()); $Ticket = new Ticket(); $model->attributes=$_POST['Ticket']; $this->InsertTicketfromfileCSV(basename($_FILES['Fichier']['name'])); $this->SaveTicket($listTicketUpload,$duration,$Ticket); // if($model->save()) $this->redirect(array('view','id'=>$model->TicketId)); } else { echo 'erreur uploade file'; } } $this->render('create',array( 'model'=>$model, )); } public function InsertTicketfromfileCSV($url) { global $listTicketUpload; $url='Folder CSV/'.$url; $csv = new SplFileObject($url,'r'); $csv->setFlags(SplFlieObject::READ_CSV); $csv->setCsvControl(';', '"', '"'); foreach($csv as $ligne) { $listTicketUpload[$i]=$ligne; $i++; } unset($i); } public function SaveTicket($listTicketUpload,$duration,Ticket $Tick){ if(empty($listTicketUpload)) return; else { $i=0;$etat=0; foreach($listTicketUpload.count() as $i) { $ligne=$listTicketUpload[$i]; $don[0]=$ligne; $don[1]=$duration; $don[2]=$etat; $Tick->CreateTicket($don); $insert= $this->db->prepare('INSERT INTO Ticket SET TicketCode =:ticketCode,Duration=:duration,Etat=:etat'); $insert->bindvalue(':ticketCode',$Tick->getticketCode(),PDO::PARAM_STR); $insert->bindvalue(':duration',$Tick->getduration(),PDO::PARAM_STR); $insert->bindvalue(':etat',$Tick->getEtat(),PDO::PARAM_INT); $insert->execute(); $Tick->hydrate(array ( 'TicketId'=> $this->db->lastinsertId() )); $i++; } unset($i); } }
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122 //mon model <?php class Ticket extends CActiveRecord { public static function model($className=__CLASS__) { return parent::model($className); } public function tableName() { return 'ticket'; } public function rules() { // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( array('TicketCode, Duration, Etat', 'required'), array('Etat', 'numerical', 'integerOnly'=>true), array('TicketCode', 'length', 'max'=>50), // The following rule is used by search(). // Please remove those attributes that should not be searched. array('TicketId, TicketCode, Duration, Etat', 'safe', 'on'=>'search'), ); } public function relations() { // NOTE: you may need to adjust the relation name and the related // class name for the relations automatically generated below. return array( ); } public function attributeLabels() { return array( 'TicketId' => 'Ticket', 'TicketCode' => 'Ticket Code', 'Duration' => 'Duration', 'Etat' => 'Etat', ); } public function search() { attributes that // should not be searched. $criteria=new CDbCriteria; $criteria->compare('TicketId',$this->TicketId); $criteria->compare('TicketCode',$this->TicketCode,true); $criteria->compare('Duration',$this->Duration,true); $criteria->compare('Etat',$this->Etat); return new CActiveDataProvider($this, array( 'criteria'=>$criteria, )); } public function initialize(array $don){ $this->setTicketCode($don[0]); $this->setDuration($don[1]); $this->setEtat($don[2]); } public function CreateTicket(array $don){ $this->initialize($don); } public function setTicketcode($info){ if (empty($info)) throw new Exception('chaine vide'); else $this->Ticketcode=$info; } public function setDuration($info){ if (empty($info)) throw new Exception('chaine vide'); else $this->Duration=$info; } public function setEtat($info){ if (empty($info)) throw new Exception('chaine vide'); else $this->Etat=$info; } public function getId(){ return $this->id; } public function getTicketCode(){ return $this->TicketCode; } public function getDuration(){ return $this->Duration; } public function getEtat() { return $this->Etat; } }
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 // ma vue <div class="form"> <?php $form=$this->beginWidget('CActiveForm', array( 'id'=>'ticket-form', 'enableAjaxValidation'=>false, )); ?> <?php echo $form->errorSummary($model); ?> <div class="row"> <input type="file" name="Fichier"> </div> <div class="row"> <?php echo $form->labelEx($model,'Duration'); ?> <input text="duration" value="60"> </div> <div class="row buttons"> <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?> </div> <?php $this->endWidget(); ?> </div><!-- form -->
Partager