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

Symfony PHP Discussion :

[crud] erreur lors de la mise à jour d'un enregistrement


Sujet :

Symfony PHP

  1. #1
    Membre habitué Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Points : 178
    Points
    178
    Par défaut [crud] erreur lors de la mise à jour d'un enregistrement
    bonjour,
    j'ai un souci avec la mise à jour d'un enregistrement (id,date,type).
    La date est affiché au format français.
    dès que je met à jour mon enregistrement, j'ai une erreur : page not found
    voici le contenu de ma fonction executeUpdate() dans actions.class.php :
    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
    public function executeUpdate()
      {
      
        if (!$this->getRequestParameter('date')
         || !$this->getRequestParameter('code_local'))
        {
          $norme = new Norme();
    
        }
        else
        { 
          
          $norme = NormePeer::retrieveByPk($this->getRequestParameter('date'),
                                       $this->getRequestParameter('code_local'));
                                       
        
        
          $this->forward404Unless($norme);
        }
    
        if ($this->getRequestParameter('date'))
        {
        
          list($d, $m, $y) = sfI18N::getDateForCulture($this->getRequestParameter('date'), $this->getUser()->getCulture());
          
          
          $norme->setDate("$y-$m-$d");
        }
        $norme->setCodeLocal($this->getRequestParameter('code_local'));
        $norme->setTypeNorme($this->getRequestParameter('type_norme'));
    
        $norme->save();
    
        return $this->redirect('normes/list');
      }
    quand je fais un echo de NormePeer::retrieveByPk($this->getRequestParameter('date'),
    $this->getRequestParameter('code_local'));, rien n'est renvoyé.
    je me demande donc si l'erreur vient de là : l'enregistrement à modifier n'est pas trouvé

    merci d'avance

  2. #2
    Membre averti
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Points : 445
    Points
    445
    Billets dans le blog
    7
    Par défaut
    C'est exactement ça

    $this->forward404Unless($norme) va te rediriger vers une 404 si il ne trouve pas l'enregistrement à mettre à jour .
    regarde ce thread :
    http://groups.google.fr/group/symfon...4af38391f0c05a

    Cordialement Ahmed
    Je suis Développeur Senior ouvert aux opportunités
    Mon blog

  3. #3
    Membre habitué Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Points : 178
    Points
    178
    Par défaut
    je suis un peu une quiche en anglais mais je pense pas que ça vienne de là l'erreur.
    En effet quand je créé un enregistrement sans date, ça marche et pas dans le cas contraire
    bon je vais quand même essayer merci pour ta réponse

  4. #4
    Membre habitué Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Points : 178
    Points
    178
    Par défaut
    je viens de trouver l'erreur
    en fait le programme recherche le code local et la date passés en post dans le formulaire de saisie, dans la base de données.
    si on change l'un des deux, forcément il ne trouve pas l'enregistrement et renvoie une erreur.

    j'ai fini par faire deux champs cachés dans editsuccess.php qui récupèrent les clés de l'enregistrement courant.
    ensuite, j'ai modifié de cette manière la fonction executeUpdate()
    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
     
    public function executeUpdate()
      {
        if (!$this->getRequestParameter('date')
         || !$this->getRequestParameter('code_local'))
        {
          $norme = new Norme();
     
        }
        else
        { 
     
          $time = explode("/",$this->getRequestParameter('date'));
          krsort($time);
          $date = implode("-",$time);
     
          $norme = (NormePeer::retrieveByPk($this->getRequestParameter('preDate'),
                                           $this->getRequestParameter('preCodeLocal')));
          $this->forward404Unless($norme);
        }
     
        if ($date)
        {
     
          list($d, $m, $y) = sfI18N::getDateForCulture($date, $this->getUser()->getCulture());
     
     
          $norme->setDate("$y-$m-$d");
        }
        $norme->setCodeLocal($this->getRequestParameter('code_local'));
        $norme->setTypeNorme($this->getRequestParameter('type_norme'));
     
        $norme->save();
     
        return $this->redirect('normes/list');
      }
    Problème : quand je change la valeur des deux clés, je suis bien redirigée dans la liste des normes mais aucune modification n'a été effectuée.

    comment remédier à ce problème ?

    bonne fin de journée

Discussions similaires

  1. [AC-2003] Message d'erreur lors de la mise à jour des table
    Par Maude_84 dans le forum VBA Access
    Réponses: 2
    Dernier message: 31/01/2014, 14h44
  2. [WebService] - Erreur lors de la mise à jours
    Par Anto03 dans le forum Visual Studio
    Réponses: 1
    Dernier message: 24/12/2009, 09h46
  3. [AC-2003] Erreur lors de la mise à jour d'une table SQL Server 2008
    Par suziwan dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 14/12/2009, 22h06
  4. [WD14] Erreur lors d'une mise à jour de procédure stocké
    Par klbsjpolp dans le forum HyperFileSQL
    Réponses: 0
    Dernier message: 16/07/2009, 18h45

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