Bonjour,
Comme c'est le mois d'aout et qu'on est tous les pieds dans le vent je
me réponds car je viens de trouver la solution.
Bref propel à un pb avec ce type de mise à jour, vu que mon champ
email ( avec lequel je fais la requête ) renvoie bien la ligne
correpondante mais ne merge pas le résultat dans le formulaire 'id'
disparait.
il faut donc se le faire à la main comme ceci :
[CODE]
public function executeCreate($request){
      $c = new Criteria();
      $tmp = $request->getParameter('client');
      $c->add(ClientPeer::EMAIL,$tmp['email']);
      $this->utilisateur = ClientPeer::doSelectOne($c);
      if($this->utilisateur){
          $this->maj = true;
      }

      $this->fclient = new ClientForm($this->utilisateur);
      if ($request->isMethod('post')){
        $this->fclient->bind($request->getParameter('client'));
        if ($this->fclient->isValid()){
            if($user && ($user->getMotdepasse()!='default')){
                $this->error = "La création de votre compte est
impossible, veuillez contacter PhaConcept";
            }else{
                if($this->maj){
                      // set the select condition criteria
                      // set the update criteria
                      $update = new Criteria();
                      if($this->utilisateur->getNom()!= $tmp['nom'])
{ $update->add(ClientPeer::NOM, $tmp['nom']);}
                      if($this->utilisateur->getPrenom()!= $tmp
['prenom']){ $update->add(ClientPeer::PRENOM, $tmp['prenom']);}
                      if($this->utilisateur->getSociete()!= $tmp
['societe']){ $update->add(ClientPeer::SOCIETE, $tmp['societe']);}
                      if($this->utilisateur->getAdresse()!= $tmp
['adresse']){ $update->add(ClientPeer::ADRESSE, $tmp['adresse']);}
                      if($this->utilisateur->getCodepostal()!= $tmp
['codepostal']){ $update->add(ClientPeer::CODEPOSTAL, $tmp
['codepostal']);}
                      if($this->utilisateur->getVille()!= $tmp
['ville']){ $update->add(ClientPeer::VILLE, $tmp['ville']);}
                      if($this->utilisateur->getMotdepasse()!= $tmp
['motdepasse']){ $update->add(ClientPeer::MOTDEPASSE, $tmp
['motdepasse']);}
                      if($this->utilisateur->getTelephone()!= $tmp
['telephone']){ $update->add(ClientPeer::TELEPHONE, $tmp
['telephone']);}
                      $update->add(ClientPeer::DATEMAJ,date("Y-m-d"));
                      $update->add(ClientPeer::SESSIONID,'true');
                      $con = Propel::getConnection();
                      BasePeer::doUpdate($c, $update, $con);
                  }else{
                      $this->fclient->save();
                  }
                $this->body = "compte utilisateur : ".$this->fclient-
>getValue('email')."<br/>";
                $this->body .="Votre mot de passe : ".$this->fclient-
>getValue('motdepasse')."<br/>";
                //$this->SendEmail($body,$this->fclient->getValue
('email'));
                $this->redirect('user/submit?'.http_build_query($this-
>fclient->getValues()));
            }
        }
      }
  }
[CODE]

Bon certes, cela n'est pas total académique fun up to date symfony,
mais comme aurais dit mon tuteur
faut'q ca tourne

Bref faut faire un bel update à la main ( confère site de propel )

olivier


On 10 août, 14:03, nathieb <thiebaut.oliv...@gmail.com> wrote:
> Bonjour,
>
> J'utilise symfony avec propel 1.1.7, j'utilise la notion de formulaire
> et la mise à jour est impossible.
>
> public function executeCreate($request){
>       le client existe 'il ?
>       $c = new Criteria();
>       $tmp = $request->getParameter('client');
>       $c->add(ClientPeer::EMAIL,$tmp['email']);
>       $this->utilisateur = ClientPeer::doSelectOne($c);
>       cela fonctionne mais bizarrement l'id disparaît dans le cas de
> la mise à jour  ???
>
>       $this->fclient = new ClientForm($this->utilisateur);
>       if ($request->isMethod('post')){
>         $this->fclient->bind($request->getParameter('client'));
>         if ($this->fclient->isValid()){
>             if($user && ($user->getMotdepasse()!='default')){
>                 $this->error = "La création de votre compte est
> impossible, veuillez contacter PhaConcept";
>             }else{
>                 $this->fclient->save();
>                 $this->body = "compte utilisateur : 
> ".$this->fclient->getValue('email')."<br/>";
>
>                 $this->body .="Votre mot de passe : 
> ".$this->fclient->getValue('motdepasse')."<br/>";
>
>                 //$this->SendEmail($body,$this->fclient->getValue
> ('email'));
>                 //$this->redirect('user/submit?'.http_build_query
> ($this->fclient->getValues()));
>             }
>         }
>       }
>   }
>
> et je me retrouve avec
>
> UPDATE client SET ID = NULL,NOM = 'rrrrrrrrrrr',PRENOM =
> 'rrrrrrrrr',MOTDEPASSE = '55555555',SOCIETE = 'rrrrrrrrrrr',ADRESSE =
> 'rrrrrrrrrrrr',CODEPOSTAL = 44444444,VILLE = 'rrrrrrrrr',TELEPHONE =
> '4444444',DATECREATION = '2009-08-10',DATEMAJ = '2009-08-10' WHERE
> client.ID IS NULL
>
> il faudrait forcer l'id ou l'email car c'est l'email qui me sert de
> référence ??
>
> une idée ?
>
> olivier
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe Groupe "Symfony-fr" 
de Google Groupes.
 Pour transmettre des messages à ce groupe, envoyez un e-mail à 
l'adresse symfony-fr@googlegroups.com
 Pour résilier votre abonnement à ce groupe, envoyez un e-mail à 
l'adresse symfony-fr+unsubscr...@googlegroups.com
 Pour afficher d'autres options, visitez ce groupe à l'adresse 
http://groups.google.com/group/symfony-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---

Répondre à