Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je souhaite une solution à mon problème après des heures et des heures de recherches.Je cherche à envoyer un message de confirmation d'inscription d'un nouveau visiteur sur mon site,alors je travaille avec Doctrine pour enregistrer et tirer mes informations de la base de donnée,pour mon cas c'est dans un premier temps de tirer le dernier "ID" du visiteur inscrit puis par ce dernier je tire l'Email pour envoyer un message directement après l'inscription du visiteur(l'enregistrement).
Pour tirer le dernier "ID" enregistré j'utilise "lastinsertID()" comme suit :
public function getMail() { // pour trouver le dernier ID $conn = Doctrine_Manager::getInstance()->getCurrentConnection(); $id=$conn->lastInsertId('Users','id'); //Puis utiliser le ID pour trouver l'Email $mail = Doctrine::getTable('Users')->find($id)->mail; return $mail; }
Il m'affiche toujours l'erreur suivant :
Notice: Trying to get property of non-object in...
j'ai essayé d'autres méthodes comme "fetchone()" et même zend_DB mais toujours le même problème.Surement il ne récupére pas une bonne enregistrement.
Merci.Nll
Dernière modification par elec (26-01-2010 14:09:45)
Hors ligne
Bonsoir,
Jon Lebensold a consacré plusieurs tutoriels vidéo à l'intégration ZF - Doctrine.
En plus, le forum de discussion des tutoriels peut être utile.
http://www.zendcasts.com/archives/
Hope this helps...
Jean
Hors ligne
Bonsoir,
Merci pour votre réponse,mais pour ce site incroyable est encore au début pour l'utilisation de doctrine alors que il y a aucune solution sur ce site ou même sur peut être le net en ce qui concerne ce problème,c'est tout nouveau alors je souhaite des zenders ici si vous avez une idée....
Merci.
Hors ligne
au lieu de faire ça dans une nouvelle action, ajoute plutôt un appel à $utilisateur->envoiEmailBienvenue() et dans cette méthode tu fais l'envoi de l'e-mail
Hors ligne
Bonjour,
Merci pour votre réponse mais ou est la solution!Je cherche une solution pour le message d'erreur...,en tout cas je vous remercie pour votre aide.
Nll.
Hors ligne
Si on avait la ligne ou ce produit ton notice, ca pourrait nous aider
Hors ligne
Bonjour,
Merci encore,bon il m'affiche l'erreur dans la dernière ligne et j'ai indiqué dans mon premier message que l'erreur provient précisément de "lastInsertId()" alors soit il ne retourne pas un bon "ID" ou définitivement aucune valeur,parce que j'ai testé avec un "ID" qui existe dans ma base de donnée de cette façon ::
public function getMail() { $id= '3'; $mail = Doctrine::getTable('Users')->find($id)->mail; return $mail; }
alors cela marche très bien et il m'envoie le message correctement vers la destination souhaitée...,j'attend vos réponse.
A+.Nll
Dernière modification par elec (01-02-2010 14:20:33)
Hors ligne
L'erreur suivante :
Notice: Trying to get property of non-object in..
Indique que tu accèdes à une propriété d'un objet qui n'existe pas.
En gros, souvent, c'est comme si on faisait :
$obj = null; // ou false
$obj->toto(); // erreur
Dans le code que tu présentes si dessus, je vois 2 cas possible :
Doctrine::getTable('Users') renvoi null/false ?
->find($id) renvoi false
à toi de voir laquelle plante
Hors ligne
Bonjour,
Merci Norky mais je ne pense pas que tu as bien lus mon dernier message,je m'explique encore:
J'affecte à "ID" la valeur '3' qui est dans ma base de donnée correspond à l'email "test@test.fr"(par exemple),quand je fais comme j'indique dans le code en haut,il sélectionne la table "Users" puis avec "find("$id")->mail" il trouve le champ Email et il me rend "test@test.fr" dans "return $mail".Cela veut dire que doctrine::gettable("User") et " ->find($id)" fonctionne bien alors le problème c'est que "lastInsertId()" c'est elle qui renvoie null ou false.Enfin je cherche si il y a une autre solution pour retourner le dernier "ID" de la dernière inscription.
Je vous remercie encore et je vais me débrouiller pour trouver une solution après...
A+.Nll
Dernière modification par elec (01-02-2010 16:08:57)
Hors ligne
Beh, perso, je fais :
$obj->save(); $id = $obj->id;
lastInsertId, ca dépends du driver et du type de champ (auto-increment ?) je crois..
Hors ligne
Bonjour,
Oui effectivement Norky,j'avais penser à cela et je l'ai testé aujourd'hui et cela marche très bien mais avant je voulais utiliser plusieurs fonctions puis les appeler dans une seule,alors que maintenant j'ai ramassé tout le code dans une seule fonction pour ne pas avoir des problèmes,je vous remercie encore j'avais laissé cette tache une semaine malgré sa facilité j'avais plus le temp,enfin j'ai résolu mon problème avec votre aide.
A+.Nll
Dernière modification par elec (02-02-2010 11:34:38)
Hors ligne