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
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : SONDAGE..RE : SONDAGE.. par phpAnonyme
Cliquez pour lire la suite par phpAnonyme RE : SONDAGE..RE : SONDAGE.. par TychoBrahe
Cliquez pour lire la suite par TychoBrahe
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|