Et ben tu crée un controller newsletter ainsi qu'un model puis tu utilise celui-ci pour enregistrer l'email dans ta bdd
Salut,
Nous avons appris beaucoup de choses pendant la série de "Développer un site de A-Z".
j'aimerai enregistrer dans la base de données sans passer par la partie administration.
Autrement dit j'ai une page qui contient :
Inscrire à nos newsletter<br>
<input type="text" name="txtnewsletter" class="inputnewsletter">
<input type="submit" name="enregistrer" value="OK"">
en validant avec OK, je veux enregistrer l'email dans ma base de données.
merci d'avance.
8 réponses
est ce qu'il faut obligatoirement passer par un controller et un model?
j'ai créer mon model et j'ai essayé de tout faire dans la même page :
if (isset($_POST'enregistrer']) && !empty($_POST'txtnewsletter']) ) {
extract($_POST);
Conf::$databases;
$this->loadModel('Abonnee');
$condition=array('email'=>$txtnewsletter);
$sql = $this->Abonnee->find(array(
'conditions' =>$condition
));
$nbr = $this->Abonnee->findCount($condition);
if ($nbr>0) {
echo 'Vous êtes déjà inscrit';
}else {
date_default_timezone_set('Europe/Paris');
$this->request->data->email=$txtnewsletter;
$this->request->data->dateabonnees=date("Y/m/d H:i:s");
$this->request->data->active=0;
$this->Abonnee->save($this->request->data);
echo 'Inscription réussite';
}
}
mais j'ai l'erreur suivante :
stdClass Object ( [txtnewsletter] => ff [enregistrer] => OK [email] => ff [dateabonnees] => 2011/11/02 23:19:36 [active] => 0 )
( ! ) Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'txtnewsletter' in 'field list' in C:\wamp\www\monsite\core\Model.php on line 195
la formulaire :
<form action="" method="post">
<p class="news">
Inscrire à nos new letter<br> <input type="text" name="email"
class="inputnewsletter"> <input type="submit" name="enregistrer"
value="OK" class="btnnewsletter">
</p>
</form>
l'erreur parle d'elle même, essaie de la traduire :)
:(
la nouvelle version avec presque la même erreur (je rappel que j'ai créée le model mais pas le controller)
mon code :
if (isset($_POST'enregistrer']) && !empty($_POST'email']) ) {
extract($_POST);
$email=$_POST'email'];
Conf::$databases;
$this->loadModel('Abonnee');
$condition=array('email'=>$email);
$sql = $this->Abonnee->find(array(
'conditions' =>$condition
));
$nbr = $this->Abonnee->findCount($condition);
if ($nbr>0) {
echo 'Vous êtes déjà inscrit';
}else {
date_default_timezone_set('Europe/Paris');
$this->request->data->email=$email;
$this->request->data->dateabonnees=date("Y/m/d H:i:s");
$this->request->data->active=0;
print_r($this->request->data);
$this->Abonnee->save($this->request->data);
echo 'Inscription réussite';
}
}
j'ai l'erreur suivante:
ffffstdClass Object ( [email] => ffff [enregistrer] => OK [dateabonnees] => 2011/11/03 19:04:15 [active] => 0 )
( ! ) Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'enregistrer' in 'field list' in C:\wamp\www\monsite\core\Model.php on line 195
merci d'avance
Je suis vraiment débutant, ( genre 2 mois pour coder mon site ).
Mais si je dis pas de bétise, le problème est que il trouve pas la colonne " enregistrer ". Donc faut trouver ta colonne enregistrer, peut être tu t'es trompé là dessus.
Enregister c'est le nom de btn Submit
Bah là tel que tu l'as marqué :
if (isset($_POST'enregistrer']) && !empty($_POST'email']) ) {
Il vérifie si la valeur 'enregistrer'] donc surement un input ou input hidden, est rempli. ( D'après ce que moi je fais sur mon site ) après peut être que je me trompe.
Bon ton erreur dit qu'il trouve pas de champs enregistrer dans ta bdd car je pense que tu dois passer tout ton $_POST dans le execute sans traitement avant donc vire les champs que tu as pas besoin dans ta bdd du $_POST et tout fonctionnera