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 :

sauvegarder le type de category, function add() [CakePHP]


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 96
    Points : 59
    Points
    59
    Par défaut sauvegarder le type de category, function add()
    Bonjour à tous,
    Aujourd'hui je viens vers pour vous demander de l'aide en ce qui concerne Cakephp.
    Je débute et mon problème est le suivant (j'ai regardé partout mais n'ai rien trouvé pour mon cas en particulier) :

    J'ai crée des Articles, qui sont censés appartenir à des catégories. J'ai réussi (me semble-t-il) à faire l'association entre les deux tables, puisque je peux dans le formulaire choisir une des catégories, ça c'est cool. En revanche, impossible d'enregistrer l'id de la catégorie dans la table de mon article!

    Je crois que mon souci vient de la fonction add(), parce que j'ai essayé plein de choses mais rien n'est concluant jusqu'ici...

    Voici le code de la fonction add() au dernier essai :

    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
     
    function add()
       {
          if ($this->data)
          {
             $this->Article->create();
             // récupère les informations de l'utilisateur en session
             $this->data['Article']['category_id'];
             //$this->Article->save($this>data);
             $this->Article->save($this->data);
             // redirige vers la liste des articles
             $this->redirect(array('action' => 'index'));
          }
          else
          {
             $categories = $this->Article->Category->find('list');
             // Transmet la variable $categories à la vue avec une varible de même nom
             $this->set('categories', $categories);
          }
       }
    et voici le formulaire (qui semble fonctionner...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <h1>Ajouter un Article</h1>
    <?php
    echo $this->form->create('Article');
    echo $this->form->input('titre');
     
    echo $this->Form->select('category_id', $categories);
    echo $this->form->input('contenu');
    echo $this->form->input('auteur');
     
    echo $this->form->end('Sauvegarder l\'article');
    ?>
    Si quelqu'un pouvait m'aider ça serait vraiment cool !

    Merci et bonne journée

    Fora

  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
    Les données envoyées dans le formulaire ne se trouvent pas dans $this->data, mais dans $this->request->data
    Un message utile vous a aidé ? N'oubliez pas le

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

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Bonjour,
    Merci de m'avoir répondue, mais ça ne marche pas toujours pas...!

  4. #4
    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
    Voici un exemple de controller propre :

    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
        public function add() {
            if ($this->request->is('post')) {
                $this->Article->create();
                if ($this->Article->save($this->request->data)) {
                    $this->Article->setFlash(__('The article has been saved'));
                    return $this->redirect(array('action' => 'index'));
                } else {
                    // Debug d'eventuelles erreurs
                    debug($this->Article->validationErrors);
                    $this->Session->setFlash(__('The article could not be saved. Please, try again.'));
                }
            }
            $categories = $this->Article->Category->find('list');
            // Transmet la variable $categories à la vue avec une varible de même nom
            $this->set('categories', $categories);
        }
    Assure toi aussi que ton niveau de debug soit à 2 pour bien afficher toutes les erreurs dans ton fichier core.php.
    Un message utile vous a aidé ? N'oubliez pas le

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

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    je ne comprends pas pourquoi ça ne marche toujours pas. là je n'arrive plus à enregistrer, mais je n'ai aucune erreur et aucune redirection...
    La requête qui s'affiche quand je suis dans le formulaire est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Nr	Query	Error	Affected	Num. rows	Took (ms)
    1	SELECT `Category`.`id`, `Category`.`name` FROM `cakesolo`.`categories` AS `Category` WHERE 1 = 1		3	3	0
    Je n'arrive pas trop à comprendre à quoi cela correspond du coup je ne sais pas si c'est probant...

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    C'est bon, j'ai réussi. en faisant deux choses :

    la fonction add()

    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
     
    public function add() {
     
        if (!empty($this->request->data)) {
                if ($this->Article->save($this->request->data)) {
                    $this->flash('Votre article a été sauvegardé.','/articles');
     
    } else {
                    // Debug d'eventuelles erreurs
                    debug($this->Article->validationErrors);
                    $this->Session->flash('The article could not be saved. Please, try again.');
                }
            }
            $categories = $this->Article->Category->find('list');
            // Transmet la variable $categories à la vue avec une varible de même nom
            $this->set('categories', $categories);
        }
    et surtout, dans le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $this->form->input('category_id', $categories);
    Voilà!
    Merci en tous cas pour votre aide.

    Bonne soirée

    Flora

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/08/2010, 16h03
  2. Evénement au clic de type Element.onclick = function
    Par xess91 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/03/2010, 20h20
  3. [Lazarus] Paramètre de type procedure ou function
    Par pduceux dans le forum Lazarus
    Réponses: 5
    Dernier message: 03/09/2007, 09h45
  4. Réponses: 4
    Dernier message: 30/05/2007, 11h17
  5. Sauvegarde de type ghost avec nero
    Par michelw dans le forum Sécurité
    Réponses: 2
    Dernier message: 26/07/2006, 19h28

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