Bonjour tous le mone Heureuse année 2015 , voila je suis sur le tuto de crée un site en MVC je suis sur la partie fronte office, sur toutes les video on fait que des SELECT WHER, je voudrais pouvoir faire une ISERTION dans Ma base de donnée pour cella j'ai crée un cormulaire de contact le plus normalement possible, la maintenant je bloque je sais pas comment faire au niveau du Pagecontroler(mon controler) et du model pour pouvoir effectuer le sumit comment je doit procédé Merci
<div id="contact_form">
<h3>Formulaire de contact</h3>
<div id="form_body">
<div id="situation">
Mr<input type="Radio" value="Mr" name="civ">
Mlle<input type="Radio" value="Mlle" name="civ">
Mme<input type="Radio" value="Mme" name="civ">
</div>
<ul id="input">
<li>
<h4>Nom : <span class="red">*</span></h4>
<span>Saisissez votre nom</span>
<input type="text" />
</li>
<li>
<h4>Prénom : <span class="red">*</span></h4>
<span>Saisissez votre Prénom</span>
<input type="text" />
</li>
<li>
<h4>Email : <span class="red">*</span></h4>
<span>Saisissez votre Email</span>
<input type="text" />
</li>
</ul>
<div id="message">
<h4>Object : <span class="red">*</span></h4>
<span>Saisissez votre message</span>
<textarea></textarea>
</div>
<div class="clear"></div>
Les mentions obligatoires sont signalées par une étoile (<span class="red">*</span>)
<input class="submit" type="submit" value="ENVOYER"/>
</div>
</div>
ps je n'ai encor rien mis ni dans mon controler ni mon model
Il faudrait peut-être te renseigner en premier sur la balise <form> html... ca t'idera pour envoyer le formulaire ;)
oui oui je sais je m'en rend compte en lisant le code que il manque ptetre un <form></form> mais ce que je cherche plus exactement c'est commen faire pour envoyer les donée de Post ver le controler puis appeler le model pour faire mon insertion :)
il explique dans la gestion du backoffice moi je suis toujour dans le client puis c'est pas trés claire avec l'ajout du Rooter justement j'ai pas bien compris la procedure, puis si je me trempe pas et si on parle de la méme video il a fait pour le ALTER et INSERT INTO
Bonjour,
Dans ton modele tu fera un peut comme dans la methode qui te construit un select sauf que cette fois tu construira un INSERT ( INSERT INTO table SET valeur1 = :valeur1.... )
Bon courage
Resalut les amis alors voila j'ai fait tous ce que vous m'vez dit mais la je suis face un pb d'ont je trouve pas directement la solution alors voila je reposte mon formulaire Corriger
<form method="post" action="/Monsite/static/contact/" id="contactF">
<div id="situation">
Mr<input type="Radio" value="Mr" name="civilite">
Mlle<input type="Radio" value="Mlle" name="civilite">
Mme<input type="Radio" value="Mme" name="civilite">
</div>
<ul id="input">
<li>
<h4>Nom : <span class="red">*</span></h4>
<span>Saisissez votre nom</span>
<input type="text" name="nom" maxlength="30" onfocus="if(this.value=='Exemple : Hamdane')this.value='';" onblur="if (this.value == '') this.value = this.defaultValue;" value="Exemple : Hamdane"/>
</li>
<li>
<h4>Prénom : <span class="red">*</span></h4>
<span>Saisissez votre Prénom</span>
<input type="text" name="prenom" maxlength="30" onfocus="if(this.value=='Exemple : Fatiha')this.value='';" onblur="if (this.value == '') this.value = this.defaultValue;" value="Exemple : Fatiha"/>
</li>
<li>
<h4>Email : <span class="red">*</span></h4>
<span>Saisissez votre Email</span>
<input type="email" name="email" maxlength="30" onfocus="if(this.value=='Exemple : eeeee@gmail.com')this.value='';" onblur="if (this.value == '') this.value = this.defaultValue;" value="Exemple : eeeee@gmail.com" />
</li>
</ul>
<div id="message">
<h4>Object : <span class="red">*</span></h4>
<input type="text" name="objet" onfocus="if(this.value=='Exemple : Informations complémentaires')this.value='';" onblur="if (this.value == '') this.value = this.defaultValue;" value="Exemple : Informations complémentaires"/>
<span>Saisissez votre message</span>
<textarea name="message" form="contactF" onfocus="if(this.value=='Exemple : Votre message .....'){this.value='';}" onblur="if(this.value==''){this.value='Exemple : Votre message .....';}">Exemple : Votre message .....</textarea>
</div>
<div class="clear"></div>
Les mentions obligatoires sont signalées par une étoile (<span class="red">*</span>)
<input class="submit" type="submit" value="ENVOYER"/>
</form>
</div>
voila au niveau de mon model ce que j'ai mis
public function save($data){
$key = $this->primaryKey;
$fields=array();
$d=array();
if(isset($data->$key))unset($data->$key);
foreach($data as $k=>$v){
$fields[] = "$k=:$k";
$d[':$k'] = $v;
}
$sql = 'INSERT INTO '.$this->table.' SET '.implode(',', $fields);
$pre = $this->db->prepare($sql);//preparation de la requette
$pre->execute($d);
}
dans mon request
class Request
{
public $url; //url appele par lutilisateur
public $page = 1;
public $data = false;
function __construct()
{
$l=REQ_URI;
$trim= substr($l, 5);
$this->url = str_replace(DOCUMENT_ROOT."/", "", $trim);
if(isset($_GET['page'])){
if(is_numeric($_GET['page'])){
if($_GET['page']> 0 ){
$this->page = round($_GET['page']);
}
}
}
if(!empty($_POST)){
$this->data = new stdClass();
foreach($_POST as $k=>$v){
$this->data->$k=$v;
}
}
}
}
et en fin dans mon StaticController
unction contact() //function view correspon a une page php dan le fichier view avec le nom view
{
$this->loadmodel('Fix');
$this->loadmodel('Contact');//le fichier qui se trouve dans le dossier model
if($this->request->data){
$this->Contact->save($this->request->data);
}
$this->render('contact');
}
Maintenant quan je fait une insertion je rempli mon formulaire il me sort ses deux warning
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /var/www/html/anap/core/Model.php on line 184
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number in /var/www/html/anap/core/Model.php on line 184
c'est sa ma ligne 184 : $pre->execute($d);
quand je fait un debug $data $sql voila ce que je récupere
pour le $data
stdClass Object
(
[civilite] => Mme
[nom] => aaaaaaaaaaaa
[prenom] => a
[email] => aaaaaa@gmail.com
[objet] => zzzzzzzzzzzz
[message] => aaaaa
)
pour le $sql
INSERT INTO contact SET civilite=:civilite,nom=:nom,prenom=:prenom,email=:email,objet=:objet,message=:message
et dans ma table contact jai les champs suivant dans lordre
id
, civilite
, nom
, prenom
, email
, objet
, message
Merciiiiiiii de m'aider
Toujour praeil méme erreur je l'ai suprimer par erreur je voulais mettre un id vide mais toujour la méme chose méme avec le SET
Punezzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz vous devinerez jammais c'été quoi toute été bon sauf
```donc à la place de ' il faudrait mettre " Merci à tous
des idée pour gerer deux formulaire dans une méme page au faite j'ai un formulaire dans la page defaulte celui de la news letter donc il se repercute sur toutes les page comment pourraige faire pour lui dire que le submite de news letter tu le met dans la table mail