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 <[email protected]> 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 [email protected]
Pour résilier votre abonnement à ce groupe, envoyez un e-mail à
l'adresse [email protected]
Pour afficher d'autres options, visitez ce groupe à l'adresse
http://groups.google.com/group/symfony-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---