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

10 réponses


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 :)

Dans le tuto grafikart l'explique :)

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,

  • Pour envoyer des données via un formulaire le plus simple est de mettre ton formulaire dans une balise <form></form>. L'attibut method te permet de preciser si tu envoie tes donnée en post ou en get et l'attribut action te permet de preciser la page php qui va être appelée.
  • Coté serveur tu recupèreras tes données envoyée dans la variable $_GET['nom'] ou $_POST['nom'] en fonction de la methode utilisée
  • 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

Merci je vais testé cella encor MErci Arnich et kewai

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

Il maque un SET entre le nom de la table et les données dans ta requete sql

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