Accueil > > > FORMULAIRE : 4 EN 1
FORMULAIRE : 4 EN 1
Information sur la source
Description
PROBLEMATIQUE : A devoir gérer des forumlaires, on se trouve confronté aux modes suivants : 1/ formulaire vierge avec champs vide 2/ formulaire avec champs manquant ou données incohérentes après validation 3/ formulaire avec les données de la BdD pour modification 4/ fiche du formulaire affiché sans les champs Au déut je faisais 3 ou 4 pages, puis 1 page avec des contraintes et des test de variables d'état infernales.... Alors j'ai pété un plomb, et j'ai réalisé quelques fonctions qui couvrent 95% de mes besoins. Si vous voulez passé à 100%, modifiez les fonctions ou ajoutez-en ^^ PRINCIPE : - un fichier "INCLUDE" avec lesdites fonctions de champs de formulaire - un appel de fonction variable selon les tests nécessaires, qui dépendent évidement de votre appli, de votre envie, bref de vous... Je vous donne l'architecture générale du Biniou, pas les détails particuliers
Source
- Dans un fichier qu'il faut "INCLUDE"...
-
- <?PHP
- /////////////////////////////////////////////////////////////////
- function F_FormText($type,$nom,$tail,$maxi,$aide,$conf,$texte)
- {
- // $type : gère le mode d'affichage
- // $nom : nom du champs
- // $tail : taille du champ
- // $maxi : nombre maximum de caractère autorisé
- // $aide : blabla d'aide sur le champs (obligatoire, facultatif, nbr de caract...) que j'affiche au bout de la souris avec une fonction JS sur OnMouseOver
- // $conf : si besoin, affiche une pop-Up de confirmation
- // $texte : valeur du champs venant de $_POST ou de la valeur en BdD
- $rezu='';
- if($type==0){// affiche simplement avec les données prêtes à être modifiée
- $rezu.=stripslashes($texte).'<input type="hidden" name="'.$nom.'" value="'.stripslashes($texte).'" />';
- }
- else{
- $rezu.='<input type="text" size="'.$tail.'" name="'.$nom.'"';
- $rezu.=' value="'.stripslashes($texte).'"';
- if($maxi>0){$rezu.=' maxlength="'.$maxi.'"';}
- if(strlen($aide)>2){$rezu.=' onmouseover="popfeun(\''.$aide.'\');" onfocus="popfeun(\''.$aide.'\');" onmouseout="kill()" onlostfocus ="kill()"';}
- if($conf!=0){$rezu.=' onclick="if (window.confirm(\''.$conf.'\')){kill();return true;} else {kill();return false;}';}
- $rezu.=' />';
- }
- return ($rezu);
- }
- ///////////////////////////////////////////////////////////////////////////
- function F_FormArea($type,$nom,$lign,$colo,$aide,$texte)
- {
- // $type : gère le mode d'affichage
- // $nom : nom du champs
- // $lign : nbr de ligne du champs
- // $colo : nbr de colonne
- // $aide : blabla d'aide sur le champs (obligatoire, facultatif, nbr de caract...) que j'affiche au bout de la souris avec une fonction JS sur OnMouseOver
- // $texte : valeur du champs venant de $_POST ou de la valeur en BdD
- $rezu='';
- if($type==0){// // affiche simplement avec les données prêtes à être modifiée
- $rezu.=(nl2br(trim($texte))).'<input type="hidden" name="'.$nom.'" value="'.stripslashes($texte).'" />';
- }
- else{
- $rezu.='<textarea name="'.$nom.'" cols="'.$colo.'" rows="'.$lign.'" wrap="physical"';
- if(strlen($aide)>2){$rezu.=' onmouseover="popfeun(\''.$aide.'\');" onfocus="popfeun(\''.$aide.'\');" onmouseout="kill()" onlostfocus ="kill()"';}
- $rezu.=' />'.stripslashes($texte).'</textarea>';
- }
- return ($rezu);
- }
- ///////////////////////////////////////////////////////////////////////////
- function F_FormRadio($type,$nom,$posi,$aide,$lib,$recu)
- {
- // $type : gère le mode d'affichage avec 5 choix
- // $nom : nom du champs
- // $posi : valeur affectée au choix du champs (1,2,3,4,5...)
- // $lib : libellé du choix du champs (oui, non, nsp...)
- // $aide : blabla d'aide sur le champs (obligatoire, facultatif, nbr de caract...) que j'affiche au bout de la souris avec une fonction JS sur OnMouseOver
- // $recu : valeur du champs venant de $_POST ou de la valeur en BdD
- $rezu='';
- if($type==0){// affiche simplement
- if($recu==$posi){$rezu.=$lib.'<input type="hidden" name="'.$nom.'" value="'.$recu.'" />';}
- }
- elseif($type==1){// en paragraphe, bouton puis lib
- $rezu.='<input type="radio" name="'.$nom.'" value="'.$posi.'"';
- if($recu==$posi){$rezu.=' checked="checked"';}
- if(strlen($aide)>2){$rezu.=' onmouseover="popfeun(\''.$aide.'\');" onfocus="popfeun(\''.$aide.'\');" onmouseout="kill()" onlostfocus ="kill()"';}
- $rezu.=' /> '.$lib.' ';
- }
- elseif($type==2){// en paragraphe, lib puis bouton
- $rezu.=$lib.' <input type="radio" name="'.$nom.'" value="'.$posi.'"';
- if($recu==$posi){$rezu.=' checked="checked"';}
- if(strlen($aide)>2){$rezu.=' onmouseover="popfeun(\''.$aide.'\');" onfocus="popfeun(\''.$aide.'\');" onmouseout="kill()" onlostfocus ="kill()"';}
- $rezu.=' /> ';
- }
- elseif($type==11){// en tableau, avec TR/TD, bouton puis lib AJOUTER tag <table>
- $rezu.='<tr><td align="center"><input type="radio" name="'.$nom.'" value="'.$posi.'"';
- if($recu==$posi){$rezu.=' checked="checked"';}
- if(strlen($aide)>2){$rezu.=' onmouseover="popfeun(\''.$aide.'\');" onfocus="popfeun(\''.$aide.'\');" onmouseout="kill()" onlostfocus ="kill()"';}
- $rezu.=' /></td><td>'.$lib.'</td></tr>';
- }
- elseif($type==21){// en tableau, avec TR/TD, lib puis bouton AJOUTER tag <table>
- $rezu.='<tr><td>'.$lib.'</td><td align="center"><input type="radio" name="'.$nom.'" value="'.$posi.'"';
- if($recu==$posi){$rezu.=' checked="checked"';}
- if(strlen($aide)>2){$rezu.=' onmouseover="popfeun(\''.$aide.'\');" onfocus="popfeun(\''.$aide.'\');" onmouseout="kill()" onlostfocus ="kill()"';}
- $rezu.=' /></td></tr>';
- }
- return ($rezu);
- }
- ///////////////////////////////////////////////////////////////////////////
- ?>
-
- Dans le fichier d'utilisation, qui contient le "INCLUDE" du fichier qui contient les fonctions...
- Voici le principe d'utilisation pour chaque type de champs 'fonctionnisé'. Je vous passe la mise en page...
-
-
- 1/ Traitement de la BdD
- ...
- <?PHP
- if(isset($_POST['p_kelchoix']) && $_POST['p_kelchoix']>0){// pas de mise à jour ! Je viens d'une page de lsite de choix, et le choix est fait via p_kelchoix.
- $_SESSION['id_encours']=$_POST['p_kelchoix'];
- $det_fiche=F_InfoFiche(0,$_SESSION['id_encours'],$db_link);// ma fonction de requete
- }
- else{
- if($_SESSION['id_encours']>0){
- $det_fiche=F_InfoFiche(0,$_SESSION['id_encours'],$db_link);// ma fonction de requete
- }
- else{
- $_SESSION['id_encours']=0;
- }
- }
- if(isset($_GET['g_koi'])){
- if($_GET['g_koi']==99){//ni mise à jour, ni création. Demande de création à venir
- $type=2;
- $mise_jour=0;
- $creation=0;
- $nosql=0;
- }
- elseif($_GET['g_koi']==66){//ni mise à jour, ni création. Demande de modif à venir
- $type=0;
- $mise_jour=0;
- $creation=0;
- }
- elseif($_GET['g_koi']==1){// mise à jour. Modif à venir
- $type=1;
- $mise_jour=1;
- $creation=0;
- }
- elseif($_GET['g_koi']==2){//création. Modif à venir
- $type=1;
- $mise_jour=0;
- $creation=1;
- }
- elseif($_GET['g_koi']==0){// ni l\'un ni l\'autre. Modif à venir
- $type=1;
- $mise_jour=0;
- $creation=0;
- }
- }
- else{// fomulaire vierge : g-koi pas défini RAF
- $type=99;
- $mise_jour=0;
- $creation=0;
- }
- if($mise_jour==1 || $creation==1){//update
- if($mise_jour==1){
- $rek_u_fich='update fiche set ... where FS_ID='.$_SESSION['id_encours'];
- mysql_query($rek_u_fich,$db_link) or die(mysql_error());
- $det_fiche==F_InfoFiche(0,$_SESSION['id_encours'],$db_link);// ma fonction de requete
- $effet='La fiche a été mise à jour.';
- }
- else{$effet=' La fiche a été mise à jour, et contient ('.$nosql.') erreurs .<br />Vous pourrez toujours la modifier ultérieurement, en la sélectionnant dans votre liste de Fiche.';}
- if($creation==1 && $_SESSION['rocket']==0){
- $rek_i_fich='insert into fiche ...';
- mysql_query($rek_i_fich,$db_link) or die(mysql_error());
- $_SESSION['id_encours']=mysql_insert_id();
- $effet='La fiche a enregistrée.';
- $_SESSION['rocket']=1;// gestion du REFRESH ^^
- $det_fiche==F_InfoFiche(0,$_SESSION['id_encours'],$db_link);// ma fonction de requete
- }
- if($creation==1 && $_SESSION['rocket']==0){$effet=' La fiche a été déjà été enregistrée, pas la peine d\'insister ^^ !';}
- }
- ?>
-
- 2/ Traitement du FORM
- ...
- <form id="form2" name="form2" method="post" action="fiche.php?g_koi=<?PHP
- if($_GET['g_koi']==99){echo '2';}
- elseif($_GET['g_koi']==66){echo 0;}
- else{echo 1;}
- ?>">
- ...
- ...
- <?PHP if($type!=0) { ?>
- <input name="p_etat" type="hidden" value="<?PHP echo $nosql;?>" />
- <?PHP if($type==2) { ?>
- <input name="Valide" type="submit" value="Valider la fiche suivi" />
- <?PHP } else { ?>
- <input name="Valide" type="submit" value="Enregistrer la fiche de suivi" />
- <?PHP } } else { ?>
- <input name="Valide" type="submit" value="Modifier cette fiche" />
- <?PHP } ?>
- </p>
- </blockquote>
- </form>
- <p> </p>
- <p> </p>
- <?PHP } ?>
- ...
-
-
- 3/ Traitement des champs
-
- ...
- if(strlen($effet)>10){echo '<br><span class="text3"><strong><font color="#FF0000" size="+1">'.$effet.'</font></strong></span><br>';}
- ...
- <table>
- <tr>
- <td align="right" valign="top">Nom : </td>
- <td><?PHP
- $effet='';
- if($type==99){//formulaire vide
- $typaff=1;
- $aide=addslashes('OBLIGATOIRE. Saisissez le nom de famille de la mère.<br />2 caractères de long minimum, 100 maximum.');
- $texte='';
- }
- elseif($type>0){//formulaire avec donnée de POST ou de BdD
- $typaff=1;
- $aide=addslashes('OBLIGATOIRE. Saisissez le nom de famille de la mère.<br />2 caractères de long minimum, 100 maximum.');
- $texte=$det_fiche[0]['F_MERE_NOM'];// je prend les données de la BdD
- if(isset($_POST['p_m_01']) && strlen($_POST['p_m_01'])>1 && strlen($_POST['p_m_01'])<101){$texte=stripslashes(trim($_POST['p_m_01']));}
- if(strlen($texte)<2){// comme un nouveau, vide, mais du à une erreur
- //echo 'hoho : lg='.strlen($texte).'<br />';
- $texte='';
- $nosql++;// variable de contrôle des erreurs, qui comptabilise le nbr d'erreur
- $effet=$nosql.'/ Le nom doit avoir au minimum 2 caractères de long, et au maximum 100.';
- }
- }
- else{$typaff=0;$texte=$det_fiche[0]['F_MERE_NOM']; $aide='';}// $type=0 : affiche la fiche existante sans formulaire
- echo F_FormText($typaff,'p_m_01',40,100,$aide,0,$texte);
- if(strlen($effet)>10){echo '<br><span class="txt4_22">'.$effet.'</span>';}
- ?></td>
- </tr>
- <tr>
- <td align="right" valign="top">Possède une TV ? </td>
- <td><?PHP
- $effet='';
- if($type==99){//formulaire vide
- $typaff=2;
- $aide=addslashes('OBLIGATOIRE. Précisez si l\'individu possède une TV.');
- $recu=99;
- echo F_FormRadio($typaff,'p_ae_01',1,$aide,'Oui ',$recu);
- echo F_FormRadio($typaff,'p_ae_01',2,$aide,'Non ',$recu);
- }
- elseif($type>0){//formulaire avec donnée de POST ou de BdD
- $typaff=2;
- $aide=addslashes('OBLIGATOIRE. Précisez si l\'individu possède une TV.');
- $recu=$det_fiche[0]['F_TV'];// je prend les données de la BdD
- if(isset($_POST['p_ae_01'])){$recu=$_POST['p_ae_01'];/*echo 'recu de post='.$recu.'<br />';*/}
- if($recu!=2 && $recu!=1){// comme un nouveau, vide, mais du à une erreur
- $nosql++;// variable de contrôle des erreurs, qui comptabilise le nbr d'erreur
- $effet=$nosql.'/ Vous devez spécifier si l\'individu possède une TV ou non.';
- }
- echo F_FormRadio($typaff,'p_ae_01',1,$aide,'Oui ',$recu);
- echo F_FormRadio($typaff,'p_ae_01',2,$aide,'Non ',$recu);
- }
- else{// $type=0 : affiche la fiche existante sans formulaire (nécessaire de traiter chaque cas individuellement...
- $typaff=0;$recu=$det_fiche[0]['F_TV']; $aide='';
- if($recu==2){echo F_FormRadio($typaff,'p_ae_01',2,$aide,'Non ',$recu);}
- elseif($recu==1){echo F_FormRadio($typaff,'p_ae_01',1,$aide,'Oui ',$recu);}
- else{echo F_FormRadio($typaff,'p_ae_01',0,$aide,'...non défini ',0);}
- }
- if(strlen($effet)>10){echo '<br><span class="txt4_22">'.$effet.'</span>';}
- ?></td>
- </tr>
- </table>
- <?PHP
- $effet='';
- if($type==99){//formulaire vide
- $typaff=1;
- $aide=addslashes('OPTIONNEL.<br />Saissisez içi toutes les informations concernant la fiche.');
- $texte='';
- echo '<blockquote><p>Si vous avez une remarque ou des commentaires sur cette fiche, c\'est içi : </p></blockquote>
- ';
- }
- elseif($type>0){//formulaire avec donnée de POST ou de BdD
- $typaff=1;
- $aide=addslashes('OPTIONNEL.<br />Saissisez içi toutes les informations concernant la fiche.');
- $texte=$det_fiche[0]['F_COMMENT'];// je prend les données de la BdD
- if(isset($_POST['p_perso']) && strlen(trim($_POST['p_perso']))>0){$texte=stripslashes(trim($_POST['p_perso']));}
- echo '<blockquote><p>Si vous avez une remarques ou des commentaires sur cette fiche, c\'est içi : </p></blockquote>
- ';
- }
- else{// $type=0 : affiche la fiche existante sans formulaire
- $typaff=0;$texte=$det_fiche[0]['F_COMMENT']; $aide='';
- if(strlen($texte)>1){echo '<blockquote><p>Vos remarques ou commentaires ...</p></blockquote>';}
- else{echo '<blockquote><p>Pas de remarque, ni commentaire sur cette fiche.</p></blockquote>';}
- }
- echo F_FormArea($typaff,'p_perso',5,50,$aide,$texte);
- if(strlen($effet)>10){echo '<br><span class="txt4_22">'.$effet.'</span>';}
- ?>
Dans un fichier qu'il faut "INCLUDE"...
<?PHP
/////////////////////////////////////////////////////////////////
function F_FormText($type,$nom,$tail,$maxi,$aide,$conf,$texte)
{
// $type : gère le mode d'affichage
// $nom : nom du champs
// $tail : taille du champ
// $maxi : nombre maximum de caractère autorisé
// $aide : blabla d'aide sur le champs (obligatoire, facultatif, nbr de caract...) que j'affiche au bout de la souris avec une fonction JS sur OnMouseOver
// $conf : si besoin, affiche une pop-Up de confirmation
// $texte : valeur du champs venant de $_POST ou de la valeur en BdD
$rezu='';
if($type==0){// affiche simplement avec les données prêtes à être modifiée
$rezu.=stripslashes($texte).'<input type="hidden" name="'.$nom.'" value="'.stripslashes($texte).'" />';
}
else{
$rezu.='<input type="text" size="'.$tail.'" name="'.$nom.'"';
$rezu.=' value="'.stripslashes($texte).'"';
if($maxi>0){$rezu.=' maxlength="'.$maxi.'"';}
if(strlen($aide)>2){$rezu.=' onmouseover="popfeun(\''.$aide.'\');" onfocus="popfeun(\''.$aide.'\');" onmouseout="kill()" onlostfocus ="kill()"';}
if($conf!=0){$rezu.=' onclick="if (window.confirm(\''.$conf.'\')){kill();return true;} else {kill();return false;}';}
$rezu.=' />';
}
return ($rezu);
}
///////////////////////////////////////////////////////////////////////////
function F_FormArea($type,$nom,$lign,$colo,$aide,$texte)
{
// $type : gère le mode d'affichage
// $nom : nom du champs
// $lign : nbr de ligne du champs
// $colo : nbr de colonne
// $aide : blabla d'aide sur le champs (obligatoire, facultatif, nbr de caract...) que j'affiche au bout de la souris avec une fonction JS sur OnMouseOver
// $texte : valeur du champs venant de $_POST ou de la valeur en BdD
$rezu='';
if($type==0){// // affiche simplement avec les données prêtes à être modifiée
$rezu.=(nl2br(trim($texte))).'<input type="hidden" name="'.$nom.'" value="'.stripslashes($texte).'" />';
}
else{
$rezu.='<textarea name="'.$nom.'" cols="'.$colo.'" rows="'.$lign.'" wrap="physical"';
if(strlen($aide)>2){$rezu.=' onmouseover="popfeun(\''.$aide.'\');" onfocus="popfeun(\''.$aide.'\');" onmouseout="kill()" onlostfocus ="kill()"';}
$rezu.=' />'.stripslashes($texte).'</textarea>';
}
return ($rezu);
}
///////////////////////////////////////////////////////////////////////////
function F_FormRadio($type,$nom,$posi,$aide,$lib,$recu)
{
// $type : gère le mode d'affichage avec 5 choix
// $nom : nom du champs
// $posi : valeur affectée au choix du champs (1,2,3,4,5...)
// $lib : libellé du choix du champs (oui, non, nsp...)
// $aide : blabla d'aide sur le champs (obligatoire, facultatif, nbr de caract...) que j'affiche au bout de la souris avec une fonction JS sur OnMouseOver
// $recu : valeur du champs venant de $_POST ou de la valeur en BdD
$rezu='';
if($type==0){// affiche simplement
if($recu==$posi){$rezu.=$lib.'<input type="hidden" name="'.$nom.'" value="'.$recu.'" />';}
}
elseif($type==1){// en paragraphe, bouton puis lib
$rezu.='<input type="radio" name="'.$nom.'" value="'.$posi.'"';
if($recu==$posi){$rezu.=' checked="checked"';}
if(strlen($aide)>2){$rezu.=' onmouseover="popfeun(\''.$aide.'\');" onfocus="popfeun(\''.$aide.'\');" onmouseout="kill()" onlostfocus ="kill()"';}
$rezu.=' /> '.$lib.' ';
}
elseif($type==2){// en paragraphe, lib puis bouton
$rezu.=$lib.' <input type="radio" name="'.$nom.'" value="'.$posi.'"';
if($recu==$posi){$rezu.=' checked="checked"';}
if(strlen($aide)>2){$rezu.=' onmouseover="popfeun(\''.$aide.'\');" onfocus="popfeun(\''.$aide.'\');" onmouseout="kill()" onlostfocus ="kill()"';}
$rezu.=' /> ';
}
elseif($type==11){// en tableau, avec TR/TD, bouton puis lib AJOUTER tag <table>
$rezu.='<tr><td align="center"><input type="radio" name="'.$nom.'" value="'.$posi.'"';
if($recu==$posi){$rezu.=' checked="checked"';}
if(strlen($aide)>2){$rezu.=' onmouseover="popfeun(\''.$aide.'\');" onfocus="popfeun(\''.$aide.'\');" onmouseout="kill()" onlostfocus ="kill()"';}
$rezu.=' /></td><td>'.$lib.'</td></tr>';
}
elseif($type==21){// en tableau, avec TR/TD, lib puis bouton AJOUTER tag <table>
$rezu.='<tr><td>'.$lib.'</td><td align="center"><input type="radio" name="'.$nom.'" value="'.$posi.'"';
if($recu==$posi){$rezu.=' checked="checked"';}
if(strlen($aide)>2){$rezu.=' onmouseover="popfeun(\''.$aide.'\');" onfocus="popfeun(\''.$aide.'\');" onmouseout="kill()" onlostfocus ="kill()"';}
$rezu.=' /></td></tr>';
}
return ($rezu);
}
///////////////////////////////////////////////////////////////////////////
?>
Dans le fichier d'utilisation, qui contient le "INCLUDE" du fichier qui contient les fonctions...
Voici le principe d'utilisation pour chaque type de champs 'fonctionnisé'. Je vous passe la mise en page...
1/ Traitement de la BdD
...
<?PHP
if(isset($_POST['p_kelchoix']) && $_POST['p_kelchoix']>0){// pas de mise à jour ! Je viens d'une page de lsite de choix, et le choix est fait via p_kelchoix.
$_SESSION['id_encours']=$_POST['p_kelchoix'];
$det_fiche=F_InfoFiche(0,$_SESSION['id_encours'],$db_link);// ma fonction de requete
}
else{
if($_SESSION['id_encours']>0){
$det_fiche=F_InfoFiche(0,$_SESSION['id_encours'],$db_link);// ma fonction de requete
}
else{
$_SESSION['id_encours']=0;
}
}
if(isset($_GET['g_koi'])){
if($_GET['g_koi']==99){//ni mise à jour, ni création. Demande de création à venir
$type=2;
$mise_jour=0;
$creation=0;
$nosql=0;
}
elseif($_GET['g_koi']==66){//ni mise à jour, ni création. Demande de modif à venir
$type=0;
$mise_jour=0;
$creation=0;
}
elseif($_GET['g_koi']==1){// mise à jour. Modif à venir
$type=1;
$mise_jour=1;
$creation=0;
}
elseif($_GET['g_koi']==2){//création. Modif à venir
$type=1;
$mise_jour=0;
$creation=1;
}
elseif($_GET['g_koi']==0){// ni l\'un ni l\'autre. Modif à venir
$type=1;
$mise_jour=0;
$creation=0;
}
}
else{// fomulaire vierge : g-koi pas défini RAF
$type=99;
$mise_jour=0;
$creation=0;
}
if($mise_jour==1 || $creation==1){//update
if($mise_jour==1){
$rek_u_fich='update fiche set ... where FS_ID='.$_SESSION['id_encours'];
mysql_query($rek_u_fich,$db_link) or die(mysql_error());
$det_fiche==F_InfoFiche(0,$_SESSION['id_encours'],$db_link);// ma fonction de requete
$effet='La fiche a été mise à jour.';
}
else{$effet=' La fiche a été mise à jour, et contient ('.$nosql.') erreurs .<br />Vous pourrez toujours la modifier ultérieurement, en la sélectionnant dans votre liste de Fiche.';}
if($creation==1 && $_SESSION['rocket']==0){
$rek_i_fich='insert into fiche ...';
mysql_query($rek_i_fich,$db_link) or die(mysql_error());
$_SESSION['id_encours']=mysql_insert_id();
$effet='La fiche a enregistrée.';
$_SESSION['rocket']=1;// gestion du REFRESH ^^
$det_fiche==F_InfoFiche(0,$_SESSION['id_encours'],$db_link);// ma fonction de requete
}
if($creation==1 && $_SESSION['rocket']==0){$effet=' La fiche a été déjà été enregistrée, pas la peine d\'insister ^^ !';}
}
?>
2/ Traitement du FORM
...
<form id="form2" name="form2" method="post" action="fiche.php?g_koi=<?PHP
if($_GET['g_koi']==99){echo '2';}
elseif($_GET['g_koi']==66){echo 0;}
else{echo 1;}
?>">
...
...
<?PHP if($type!=0) { ?>
<input name="p_etat" type="hidden" value="<?PHP echo $nosql;?>" />
<?PHP if($type==2) { ?>
<input name="Valide" type="submit" value="Valider la fiche suivi" />
<?PHP } else { ?>
<input name="Valide" type="submit" value="Enregistrer la fiche de suivi" />
<?PHP } } else { ?>
<input name="Valide" type="submit" value="Modifier cette fiche" />
<?PHP } ?>
</p>
</blockquote>
</form>
<p> </p>
<p> </p>
<?PHP } ?>
...
3/ Traitement des champs
...
if(strlen($effet)>10){echo '<br><span class="text3"><strong><font color="#FF0000" size="+1">'.$effet.'</font></strong></span><br>';}
...
<table>
<tr>
<td align="right" valign="top">Nom : </td>
<td><?PHP
$effet='';
if($type==99){//formulaire vide
$typaff=1;
$aide=addslashes('OBLIGATOIRE. Saisissez le nom de famille de la mère.<br />2 caractères de long minimum, 100 maximum.');
$texte='';
}
elseif($type>0){//formulaire avec donnée de POST ou de BdD
$typaff=1;
$aide=addslashes('OBLIGATOIRE. Saisissez le nom de famille de la mère.<br />2 caractères de long minimum, 100 maximum.');
$texte=$det_fiche[0]['F_MERE_NOM'];// je prend les données de la BdD
if(isset($_POST['p_m_01']) && strlen($_POST['p_m_01'])>1 && strlen($_POST['p_m_01'])<101){$texte=stripslashes(trim($_POST['p_m_01']));}
if(strlen($texte)<2){// comme un nouveau, vide, mais du à une erreur
//echo 'hoho : lg='.strlen($texte).'<br />';
$texte='';
$nosql++;// variable de contrôle des erreurs, qui comptabilise le nbr d'erreur
$effet=$nosql.'/ Le nom doit avoir au minimum 2 caractères de long, et au maximum 100.';
}
}
else{$typaff=0;$texte=$det_fiche[0]['F_MERE_NOM']; $aide='';}// $type=0 : affiche la fiche existante sans formulaire
echo F_FormText($typaff,'p_m_01',40,100,$aide,0,$texte);
if(strlen($effet)>10){echo '<br><span class="txt4_22">'.$effet.'</span>';}
?></td>
</tr>
<tr>
<td align="right" valign="top">Possède une TV ? </td>
<td><?PHP
$effet='';
if($type==99){//formulaire vide
$typaff=2;
$aide=addslashes('OBLIGATOIRE. Précisez si l\'individu possède une TV.');
$recu=99;
echo F_FormRadio($typaff,'p_ae_01',1,$aide,'Oui ',$recu);
echo F_FormRadio($typaff,'p_ae_01',2,$aide,'Non ',$recu);
}
elseif($type>0){//formulaire avec donnée de POST ou de BdD
$typaff=2;
$aide=addslashes('OBLIGATOIRE. Précisez si l\'individu possède une TV.');
$recu=$det_fiche[0]['F_TV'];// je prend les données de la BdD
if(isset($_POST['p_ae_01'])){$recu=$_POST['p_ae_01'];/*echo 'recu de post='.$recu.'<br />';*/}
if($recu!=2 && $recu!=1){// comme un nouveau, vide, mais du à une erreur
$nosql++;// variable de contrôle des erreurs, qui comptabilise le nbr d'erreur
$effet=$nosql.'/ Vous devez spécifier si l\'individu possède une TV ou non.';
}
echo F_FormRadio($typaff,'p_ae_01',1,$aide,'Oui ',$recu);
echo F_FormRadio($typaff,'p_ae_01',2,$aide,'Non ',$recu);
}
else{// $type=0 : affiche la fiche existante sans formulaire (nécessaire de traiter chaque cas individuellement...
$typaff=0;$recu=$det_fiche[0]['F_TV']; $aide='';
if($recu==2){echo F_FormRadio($typaff,'p_ae_01',2,$aide,'Non ',$recu);}
elseif($recu==1){echo F_FormRadio($typaff,'p_ae_01',1,$aide,'Oui ',$recu);}
else{echo F_FormRadio($typaff,'p_ae_01',0,$aide,'...non défini ',0);}
}
if(strlen($effet)>10){echo '<br><span class="txt4_22">'.$effet.'</span>';}
?></td>
</tr>
</table>
<?PHP
$effet='';
if($type==99){//formulaire vide
$typaff=1;
$aide=addslashes('OPTIONNEL.<br />Saissisez içi toutes les informations concernant la fiche.');
$texte='';
echo '<blockquote><p>Si vous avez une remarque ou des commentaires sur cette fiche, c\'est içi : </p></blockquote>
';
}
elseif($type>0){//formulaire avec donnée de POST ou de BdD
$typaff=1;
$aide=addslashes('OPTIONNEL.<br />Saissisez içi toutes les informations concernant la fiche.');
$texte=$det_fiche[0]['F_COMMENT'];// je prend les données de la BdD
if(isset($_POST['p_perso']) && strlen(trim($_POST['p_perso']))>0){$texte=stripslashes(trim($_POST['p_perso']));}
echo '<blockquote><p>Si vous avez une remarques ou des commentaires sur cette fiche, c\'est içi : </p></blockquote>
';
}
else{// $type=0 : affiche la fiche existante sans formulaire
$typaff=0;$texte=$det_fiche[0]['F_COMMENT']; $aide='';
if(strlen($texte)>1){echo '<blockquote><p>Vos remarques ou commentaires ...</p></blockquote>';}
else{echo '<blockquote><p>Pas de remarque, ni commentaire sur cette fiche.</p></blockquote>';}
}
echo F_FormArea($typaff,'p_perso',5,50,$aide,$texte);
if(strlen($effet)>10){echo '<br><span class="txt4_22">'.$effet.'</span>';}
?>
Conclusion
Depuis que je fais ca, je fais un formulaire de 30 champs avec contrôle des données et gestion de la BdD en 1 journée sans ma prendre la tête...
Historique
- 18 octobre 2007 14:00:40 :
- - ajout des TAG PHP pour une meilleur lisibilité
- 18 octobre 2007 14:02:38 :
- - Ajout des TAG PHP pour une meilleur lisibilité du code sur PHPCS
- 18 octobre 2007 14:04:42 :
- - positionnement du message d'erreur
- 18 octobre 2007 14:14:36 :
- - modif et précision des commentaires
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Problèmes formulaire [ par JTR ]
Bien le bonjour tous :)Alors je veux faire un formulaire de modification d'informations. ( Nom, prénom, adresse ...)Les informations sont dans une bas
"bluffer" un script cgi [ par koala01 ]
Bonjour,je cherche désepérément le moyen de faire une double utilisation d'un formulaire:Il faudrait qu'une page PHP vérifie le formulaire (ca, c'est
formulaire [ par cba ]
cbaj'ai créé un formualire en HTML dont les données des variables sont envoyées dans un fichier.txt.criq.php traite les données des variables et écrit
formulaire [ par Tomcube ]
SalutJ'ai un problème complètement bizarre.J'ai un formulaire avec des champs "titre", "section", "titre0" et "astuce0". Lorsque je rempli les 4, et q
remplissage automatique de champs de formulaire [ par drek ]
J'aimerais savoir si la chose suivante est possible en php :je clique sur un lien de mon site donnant sur la page d'un autre site qui contient un form
Formulaire et upload [ par darktiti ]
Bonjour a tous, Bon je vous explike mon probleme qui est assez complexe pour moi car je suis debutant en php.Bon j'ai un formulaire classique avec des
valeur d'un champs vide du formulaire [ par optimed ]
Bonjour!Voila mon problème: dans un formulaire, j'ai deux champs de texte qui me servent à récupérer un horaire ( le premier permet de saisir l'heure
formulaire avec champs cachés [ par nath82 ]
bonjour, pour info je commence dans la programmation php mysql ; merci de votre aide par avance..alors j'ai un formulaire ajout.php de ma table MATERI
type select dans un formulaire precharge [ par logbird1 ]
Salut,je cherche a precharger un formulaire a partir d' une requete mysql. pour les champs de type input c' est facile (<INPUT type=text name="pren
champ d'un formulaire suivant une selection radio [ par LiGrAnD ]
Bonjour,je dois faire un formulaire recueillant des informations sur des personnes, mais les champs du formulaire doivent etre different celon la cate
|
Derniers Blogs
TECHDAYS PARIS 2010 : ADMINISTRATION SHAREPOINT 2010TECHDAYS PARIS 2010 : ADMINISTRATION SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Patrick Guimonet et Benoit Hamet Cette session traitera des différents points exigés durant les taches d'administration : Planification (architecture, hébergement, authentification, .) Opération e...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [TECHDAYS 2010] #03 - WEB CONTENT MANAGEMENT SOUS SHAREPOINT 2010[TECHDAYS 2010] #03 - WEB CONTENT MANAGEMENT SOUS SHAREPOINT 2010 par pierre
Stephane Cordonnier de MCNext nous présente les fonctionnalités Web Content Management (WCM) sous SharePoint 2010. Qu'est-ce que le WCM ECM, GED, RM, WCM c'est quoi Plateforme SharePoint Versions SharePoint 2010 SharePoint Fondation...
Cliquez pour lire la suite de l'article par pierre [DESIGN PATTERNS] PARTIE 2: DIP: DEPENDENCY INVERSION PRINCIPLE[DESIGN PATTERNS] PARTIE 2: DIP: DEPENDENCY INVERSION PRINCIPLE par tja
C'est le dernier principe des principes du Design Orienté Objet (The Principles of Object Oriented Design) fondés par Robert C. Martin plus connu sous le pseudonyme d'Uncle Bob.
l'image empruntée de LosTechies.
Je ne traite pas les principes dans...
Cliquez pour lire la suite de l'article par tja TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : IMPORT CSVRE : IMPORT CSV par roymatthieu
Cliquez pour lire la suite par roymatthieu
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|