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 :

j'arrive pas a sauvegarder en base de données


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Points : 103
    Points
    103
    Par défaut j'arrive pas a sauvegarder en base de données
    Bonjour,
    J'ai dernièrement suivi des tutoriel sur cakephp et j'ai commencer a mettre en place une nouvelle partie sur mon site en local
    Le problème que je rencontre c'est la sauvegarde en base de donnée et la copie des images envoyé a parti de mon formulaire
    Ci-dessous les different fichier de mon projet

    Mon 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
    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
    <?php
    App::uses('AppController', 'Controller');
     
    class GamesController extends AppController {
    	public $helpers = array('Text','Form','Html', 'Session', 'Date');
    	public $components = array('RequestHandler','Img');
    	public $uses = array('Game');
    	public $categorie = 'Jeux';
     
    	function index(){
    		$d['games'] = $this->Paginate('Game',array('online'=>1));
    		$this->set($d);
    	}
    		/**
    		* parie avec les prefix
    		**/
    	function admin_index(){
    		$this->paginate = array('Game'=> array(
    			'limit'=>20
    			));
    		$d['games'] = $this->Paginate('Game',array('type'=>'jeux','online'>=0));
    		$this->set($d);
     
    	}
    	function admin_edit($id){
    			if($this->request->is('put') || $this->request->is('post')){
    				$data = $this->request->data['Game'];
    				if($this->Game->save()){
    					$this->Session->setFlash("Le contenu a bien été modifié","notif");
    					$this->redirect(array('action'=>'index'));
    				}  
    				// Création d'un dossier 
     
    				$dir = IMAGES.date('D');
    					if(!file_exists($dir))
    						mkdir($dir,0777);
     
    				// création du sous dossier image
     
    						$dir .= DS.date('m');
    							if(!file_exists($dir))
    								mkdir($dir,0777);
     
    				$f = explode('.',$data['file']['name']);
    				$ext = '.'.end($f);
    				$filename = Inflector::slug(implode('.',array_slice($f,0,-1)),'-');
     
    			// Sauvegarde dans la base de données
     
    				$success = $this->Game->save(array(
    					'name' => $data['name'],
    					'content'=>$data['content'],
    					'url' => date('D').'/'.date('m').'/'.$filename.$ext,
    					'picture'=>$data['picture'],
    					'type'=>$data['type'],
    					'sponsor'=>$data['sponsor'],
    					'user_id' => $Session['id']					
    				));
     
    			if($success){
    					move_uploaded_file($data['file']['tmp_name'],$dir.DS.$filename.$ext);
    					//On parcourre les different de format de media 
    						foreach(Configure::read('Media.formats') as $k =>$v){
    							$prefix = $k;
    							$size = explode('x',$v);
    							$this->Img->crop($dir.DS.$filename.$ext,$dir.DS.$filename.'_'.$prefix.'.jpg',$size[0],$size[1]);
    						}
    				}else{
    					$this->Session->setFlash("L'image n'est au bon format","notif",array('type'=>'error'));
    				}
    			}
    			$d = array();
    			$d['games'] = $this->Game->find('all',array(
    				'conditions' => array('user_id' => $Session['id'])			
    			));
    				$d['formats'] = Configure::read('Media.formats');
    				$this->set($d);
    		}
    	function admin_delete($id){
    			$this->Session->setFlash("Le jeu a bien été supprimer",'notif');
    			$this->Game->delete($id);
    			$this->redirect($this->referer());
     
    		}
     
    }
    Mon model
    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
    <?php
    class Game extends AppModel {
     
    	public $recursive = -1;
     
    	public $validate =array(
    			'name' => array(
    			array(
    			'rule' =>'alphanumeric',
    			'required' =>true,
    			'allowEmpty' => false,
    			'message' => "Ce titre est déja utilisé, merci de saisir un nouveau titre"),
     
    		'url' => array(
    			'rule' => '/^.*\.(jpg|png|jpeg)$/',
    			'allowEmpty' => true,
    			'message' => "Le fichier n'est pas une image valide"
    			)		
    		));
     
    	/**
    	* Permet de générer / récupere un brouillon
    	**/
    	public function getDraft($type){
    		$game = $this->find('first',array(
    			'conditions' => array('online' => -1, 'type' => $type)
    		));
    			if(empty($game)){
    				$this->save(array(
    					'type' => $type,
    					'online' => -1
    				),false);
    					$game = $this->read();				
    			}
    				$game['game']['online'] = 0;
    				return $game;
    	}
    	public function afterfind($data){
    		foreach ($data as $k => $d){
    			if(isset($d['Game']['url']) && isset($d['Game']['type']) && $d['Game']['type']=='image'){
    				$filename = implode('.',array_slice(explode('.',$d['Game']['url']),0,-1));
    					foreach (Configure::read('Media.formats') as $kk=>$vv){
    						$d['Game']['url'.$kk] = $filename.'_'.$kk.'.jpg';
    					}
    				}
    					$data[$k] = $d;
    				}
    		return $data;
    	}
    	public function beforeDelete(){
    				$file = $this->field('url');
    				$f = explode('.',$file);
    				unlink(IMAGES.DS.$file);
    				$ext = '.'.end($f);
    				$file = implode('.',array_slice($f,0,-1));
    				foreach(glob(IMAGES.DS.$file.'_*.jpg')as $v){
    					unlink($v);				
    				}
    			return true;
    		}
     
    }
    ?>
    La structure de ma base de donnée
    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
     
    --
    -- Structure de la table `games`
    --
     
    CREATE TABLE IF NOT EXISTS `games` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(100) DEFAULT NULL,
      `content` mediumtext,
      `url` varchar(255) DEFAULT NULL,
      `picture` varchar(255) DEFAULT NULL,
      `type` varchar(25) NOT NULL DEFAULT 'manga',
      `sponsor` text,
      `user_id` int(11) NOT NULL,
      `online` int(1) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`),
      KEY `user_id` (`user_id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
    pour le momment j'ai des message d'erreur suivants
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Notice (8): Undefined index: file [APP\Controller\GamesController.php, line 44]
    Notice (8): Undefined variable: Session [APP\Controller\GamesController.php, line 57]
    Notice (8): Undefined variable: Session [APP\Controller\GamesController.php, line 74]
    Je vous remerci de votre aide

    Runcafre91

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2012
    Messages : 57
    Points : 74
    Points
    74
    Par défaut
    L'erreur t'explique qu'il ne voit rien dans tes variables $data['file'] et $Session.

    Tu peux montrer le code de ton formulaire ou donne moi le retour d'un debug($data); dans ton gameController lors d'un enregistrement dans la base s'il te plait
    et pour ton problème d'enregistrement sur ta session lis sa http://book.cakephp.org/2.0/en/core-...omponent::read
    cela peut t'aidé

Discussions similaires

  1. [Débutant] bonjour ! je n'arrive pas insérer dans ma base de données access
    Par moussadelemouzie dans le forum VB.NET
    Réponses: 1
    Dernier message: 13/01/2015, 23h03
  2. j'arrive pas a connecter ma base de donnée a mon formulaire
    Par lokardz dans le forum Développement Web avec .NET
    Réponses: 1
    Dernier message: 09/03/2013, 16h40
  3. je n'arrive pas a sauvegarder les VI avec leur donné.
    Par sidedu92 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 12/06/2012, 10h23
  4. Réponses: 0
    Dernier message: 26/05/2008, 16h56
  5. Je n'arrive pas à créer la base où je veux avec HCreation
    Par Cazaux-Moutou-Philippe dans le forum WinDev
    Réponses: 5
    Dernier message: 26/10/2006, 15h18

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