Recyperer Et Inserer Les Données D'un Formaulaire Dans Une Table Dune Base De Donnée

Bonjour a tous je suis nouveau dans le forum et aussi novice dans l’utilisation de yii alors voilla je suis entrin d’elaborer un site web je suis arriver a l’etape ou ma page doit interagire avec la base de données pour la recuperation et l’affichage des information a partire d’une table je n’ai pas de probleme ,le souci se pose sur une page ou j’ai un formulaire d’inscription que le client doit remplire ses information doivent etre enregistré dans la table inscription(par exmemple )

es-que vous pouvez me dir comment je doit proceder pour recuperer les information envoyer par le formulaire et les inserer dans la table? decrivez moi impe les etapes merciiiii

Bienvenue sur le forum.

L’idée générale est de vérifier si le tableau $_GETPOST[‘NomDuModele’] existe :

  • Si oui, le formulaire a déjà été rempli. On peut donc valider la saisie et sauvegarder le modèle.

  • Sinon, on affiche la vue contenant le formulaire.

Cette approche est déjà implementée dans l’action Create automatiquement générée par Gii.

Merci benouna pour la rapiditée d

pour la question de gii je l’ai juste utiliser pour les models creation j’ai pas envi d’utiliser la gestion du crud que yii propose,

pour la verification c’est ok et pour l’enregistrement des _$POST[‘item’] sa se passe ou je fait le traitement au niveau du controller la deuxiem etapes je sais pas ou la faire et comment mi prendre pour dir que voila tu met le _$POST dans la table inscription (insert into table en sql) vous voyez impe se que je veut dire


public function actionCreate()

{

    $model = new NomDuModele;

    if (isset($_POST['NomDuModele'])) {

        $model->attributes = $_POST['NomDuModele'];

        if ($model->save()) {

            /* voilà c'est sauvegardé */

        }

    } else {

        /* affichage de la vue contenant le formulaire */

    }

}

et pour les champ obligatoire on peut verifir dans le premier controle tous sa a la verification si le tableau est rempli merciiiiiiii infiniment benouna

La méthode CActiveRecord::validate() est là pour ça :slight_smile:

une autre question au niveau de la page qui est dans le view ya rien a faire quand je click sur le boutton s’inscrire sa se fait automatiquement parceque je vien de le faire et rien ne se passe es qu’il ya des manipulation a faire au niveau de la page inscription.php jenvoi un array qui contien le _$Post

le code de sauvegarde que tu m’as donnée je linsert dans le conrolleer pas dans le model

NomDuModel:c’est le model que j’ai crée pour la table dans la quelle je veux sauvegarder

Oui pour les deux dernières questions.

Sinon l’excellente série que Larry Ullman avait consacrée à Yii a aussi été traduite en français : http://www.memorandom.fr/php/introduction-au-framework-yii/ elle est vraiment utile pour démarrer avec Yii

merci pour le lien psk j’ai la documentation en anglais je me retrouve pas quand sa devien assé special et complex j’ai pas tous les reflex pour le moment le code s’execute mais rien ne se passe dans la table tu m’as bcp aidé merciiiiiii infiniment

voila dans ma page d’inscription voila le boutton d’inscription

<div id="sub">

<span class="txt">Champs de saisie obligatoires</span>

<span class="picto"></span>

 &lt;a href=&quot;#&quot;&gt;S'inscrir à cette formation&lt;/a&gt;

</div>

je doit envoyer le pste dans href c’est sa

Ah mais là tu veux faire de l’ajax ou tu veux soumettre ton formulaire normalement ? Parce que dand le 2e cas, je ne vois pas le code pour…

Si tu veux un conseil : démarre par le CRUD généré par Gii. Tu pourras après changer ce que tu veux.

je veu juste envoyer mon formulaire normalement pas de ajax ou autre chose juste clické sur sinscrire et le formulaire est envoyer c’est tous

Alors le plus simple c’est un bouton de formulaire et non pas un lien.

le mien ne veux pas envoyer les données j’ai pas trouver comment lui faire envoyer je rajoute une action

Peux-tu poster le code de ton action (controlleur) et de ta vue ?

controller


public function actionPreInscription($id)

	{

	  //elmacirfinal/protected/views/formaion/preinscription.php

	  

	  $this->idStyle="id='contenu'";

	  $form=Formation::model()->findByPk($id);

	  $date=DateFormation::model()->findByPk($id);

	  $this->render('preinscription',array('form'=>$form,'date'=>$date));

			

			$model = new Inscription;

    if (isset($_POST['Inscription'])) {

        $model->attributes = $_POST['Inscription'];

        if ($model->save()) {

            /* voilà c'est sauvegardé */

        }

    } else {

        /* affichage de la vue contenant le formulaire */

        //$this->render('preinscription',array('form'=>$form,'date'=>$date));

    }

la vue




<div id="core" class="span-15">

							<div id="inscription">

								<h3 class="heading"><span class="border"></span>Pré-inscription à nos formations</h3>

								<p>Si vous souhaitez participer à l'atelier, veuillez remplir la présente fiche de participation.Attention ! 

								Le nombre d'inscrits étant limité, nous vous prions de bien vouloir confirmer vos inscriptions dans 

								les meilleurs délais possibles.</p>

								<div id="top_inscription">

									<h3>Personne procédant à l'inscription</h3>

									<ul>

										<li><span class="txt">Nom :</span><input type="text"/><span class="picto"></span></li>

										<li><span class="txt">Prénom :</span><input type="text"/><span class="picto"></span></li>

										<li><span class="txt">Fonction :</span><input type="text"/></li>

										<li><span class="txt">E-mail :</span><input type="text"/></li>

									</ul>

									<div class="clear"></div>

								</div>

								<div id="info_inscription">

									<h3>Information Formation</h3>

										<ul>

											<li>

												<span class="txt">Formation :</span>

												<select>

													<option><?php echo $form->nom; ?></option>

												</select>

												<span class="picto"></span>

											</li>

											<li>

												<span class="txt">Date saision :</span>

												<select>

													<option><?php echo $date->date_debut; ?>  Au <?php echo $date->date_fin; ?> </option>

												</select>

												<span class="picto"></span>

											</li>

											<li><span class="txt">Date saision:</span><input type="text"/><span class="picto"></span></li>

											<li><span class="txt">Numbres :</span><input type="text"/><span class="picto"></span></li>

											<li><span class="txt">Société :</span><input type="text"/></li>

											<li><span class="txt">Adresse :</span><input type="text"/><span class="picto"></span></li>

											<li><span class="txt">Code postal :</span><input type="text"/><span class="picto"></span></li>

											<li><span class="txt">Ville :</span><input type="text"/></li>

											<li><span class="txt">Pays :</span><input type="text"/></li>

											<li><span class="txt">Téléphone :</span><input type="text"/></li>

											<li><span class="txt">Fax :</span><input type="text"/></li>

										</ul>

										<div class="clear"></div>

								</div>

								<div id="sub">

									<span class="txt">Champs de saisie obligatoires</span><span class="picto"></span>

									<a href="#">S'inscrir à cette formation</a>

								</div>

							</div>

</div>






Tu as besoin de deux choses :

  1. Dans ton controlleur, tu enleves le premier render et tu gardes le deuxieme

  2. Dans ta vue, il y a du travail…

  • D’abord il faut englober l’ensemble entre deux tags <form> et </form>.

  • ensuite chaque input et autre champ doit avoir un attribut name sinon il ne sera pas present dans le post

  • pour preserver le fonctionnement du controlleur, les attributs name doivent etre du type "Inscription[nomDuChampTelQueDansLaBDD]"

  • ensuite chaque input et autre champ doit avoir un attribut id sinon il ne sera pas valide par le modele

  • pour preserver le fonctionnement du modele, les attributs id doivent etre du type "Inscription_nomDuChampTelQueDansLaBDD"

  • maintenant pour afficher les erreurs de validation pour chaque champ, il faut egalement ajouter un element specifique apres chaque champ

  • et tout ca c’est reinventer la roue car tu feras certainement des erreurs et tu perdras du temps.

Tu peux m’expliquer pourquoi tu ne veux pas utiliser Gii?

gii pour le crud ne m’aide pas je doit passer par lvoie normal car il me faud pas le truc standard que génére yiii gii je l’é utilizé pour generé le model c’est tous

Comme tu veux quoique je ne comprends pas.

En tout cas quand tu apporteras les changements expliques dans mon post precedent, n’oublie pas d’ajouter un bouton submit a ton formulaire.

apré avoir fait toutes les modification que tu m’as demander il m’affiche tous dans l’Url mais rien dans la table de la base de donnée et il me redirige vvers la page index.php avec toutes les information dans l’url

controller Preinscription


public function actionPreInscription($id)

	{

	  //elmacirfinal/protected/views/formaion/preinscription.php

	  

	  $this->idStyle="id='contenu'";

	  $form=Formation::model()->findByPk($id);

	  $date=DateFormation::model()->findByPk($id);

	  

			

			$model = new Inscription;

    if (isset($_POST['Inscription'])) {

        $model->attributes = $_POST['inscription'];

        if ($model->save()) {

            /* voilà c'est sauvegardé */

            $this-> getErrors();

        }

    } else {

        /* affichage de la vue contenant le formulaire */

        $this->render('preinscription',array('form'=>$form,'date'=>$date));

       

vue




<form name="formulaire">

<div id="core" class="span-15">

							<div id="inscription">

								<h3 class="heading"><span class="border"></span>Pré-inscription à nos formations</h3>

								<p>Si vous souhaitez participer à l'atelier, veuillez remplir la présente fiche de participation.Attention ! 

								Le nombre d'inscrits étant limité, nous vous prions de bien vouloir confirmer vos inscriptions dans 

								les meilleurs délais possibles.</p>

								<div id="top_inscription">

									<h3>Personne procédant à l'inscription</h3>

									<ul>

										<li><span class="txt">Nom :</span><input type="text" name="Inscription[nom]" id="1"/><span class="picto"></span></li>

										<li><span class="txt">Prénom :</span><input type="text" name="Inscription[prenom]" id="2"/><span class="picto"></span></li>

										<li><span class="txt">Fonction :</span><input type="text"  name="Inscription[fonction]" id="3"/></li>

										<li><span class="txt">E-mail :</span><input type="text" name="Inscription[mail]" id="4"/></li>

									</ul>

									<div class="clear"></div>

								</div>

								<div id="info_inscription">

									<h3>Information Formation</h3>

										<ul>

											<li>

												<span class="txt">Formation :</span>

												<select>

													<option ><?php echo $form->nom; ?></option>

												</select>

												<span class="picto"></span>

											</li>

											<li>

												<span class="txt">Date saision :</span>

												<select  name="date" id="5">

													<option  ><?php echo $date->date_debut; ?>  Au <?php echo $date->date_fin; ?> </option>

												</select>

												<span class="picto"></span>

											</li>

											<li><span class="txt">Date saision:</span><input id="6" type="text"  name="Inscription[date_session]"/><span class="picto"></span></li>

											<li><span class="txt">Numbres :</span><input id="7" type="text"  name="Inscription[nombre]"/><span class="picto"></span></li>

											<li><span class="txt">Société :</span><input id="8" type="text"  name="Inscription[societe]"/></li>

											<li><span class="txt">Adresse :</span><input id="9" type="text"  name="Inscription[adresse]"/><span class="picto"></span></li>

											<li><span class="txt">Code postal :</span><input id="10" type="text"  name="code_postal"/><span class="picto"></span></li>

											<li><span class="txt">Ville :</span><input id="11" type="text"  name="Inscription['ville']"/></li>

											<li><span class="txt">Pays :</span><input id="12" type="text"  name="Inscription[pays]"/></li>

											<li><span class="txt">Téléphone :</span><input id="13" type="text"  name="Inscription[phone]"/></li>

											<li><span class="txt">Fax :</span><input id="14" type="text"  name="Inscription[fax]"/></li>

										</ul>

										<div class="clear"></div>

								</div>

					</form>

								<div id="sub">

									<span class="txt">Champs de saisie obligatoires</span><span class="picto"></span>

									<button type="submit">S'inscrir à cette formation</button>

								</div>

							</div>

						

</div>









l’url

avant de clické submit ::


 http://localhost/elmacirfinal/index.php?r=formation/preinscription&id=1# 

apré avoir cliké submit:::


http://localhost/elmacirfinal/index.php?Inscription[nom]=dongii&Inscription[prenom]=druming&Inscription[fonction]=drumer&Inscription[mail]=drumerzone&date=2012-10-09+Au+2012-10-11&Inscription[date_session]=14&Inscription[nombre]=12&Inscription[societe]=tam&Inscription[adresse]=new+york&code_postal=16009&Inscription[ville]=lllll&Inscription[pays]=lapslam&Inscription[phone]=123&Inscription[fax]=1234#