+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Membre du Club
    Inscrit en
    novembre 2010
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : novembre 2010
    Messages : 222
    Points : 60
    Points
    60

    Par défaut uploade un fichier sur yii framework

    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 :
    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 :
    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 :
    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 -->

  2. #2
    Membre du Club
    Inscrit en
    novembre 2010
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : novembre 2010
    Messages : 222
    Points : 60
    Points
    60

    Par défaut uploade un fichier sur yii framework Recharger cette page Répondre à la discussion

    slt a vous je suppose que tout ce code vous a impeut fatigue alors j'exprime a nouveau voila je travail avec yii framework et j'aimerais savoir comme customize le form générer car je souhaite pourvoir créer un champ pour une uploade le problème est que ma variable name de mon input de type file n'est pas vue au niveau de actioncreater() dans le contrôler. après une longue analyse je suppose que ce passe je n'ai pas une propriété qui porte le nom de ma variable
    Code :
    <input type="file" name="Fichier">
    .Alors comment faire. car dans nom formulaire de création je dois faire cette uploade de fichier qui va entraine un trainement.

    Ainsi comment faire ce customize,toute aide,assistance ou conseil serais la bien venu. a+

  3. #3
    Membre du Club
    Inscrit en
    novembre 2010
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : novembre 2010
    Messages : 222
    Points : 60
    Points
    60

    Par défaut uploade un fichier sur yii framework

    j'ai mon model qui herite de CActiveRecord mais j'aimerais aussi qu'il herite aussi de CFormModel pour que mes variables du formulaire puisse etre vue pas le controller. comment faire?

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •