begin process at 2010 02 10 16:42:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaires

 > FORMULAIRE : 4 EN 1

FORMULAIRE : 4 EN 1


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Formulaires Classé sous :formulaire, champs, dynamiques Niveau :Initié Date de création :18/10/2007 Date de mise à jour :18/10/2007 14:14:36 Vu :7 336

Auteur : Tartuffe

Ecrire un message privé
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

 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.' &nbsp;&nbsp;&nbsp;';
  • }
  • 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.=' />&nbsp;&nbsp;&nbsp;';
  • }
  • 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>&nbsp;</p>
  • <p>&nbsp;</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&ccedil;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&eacute;e de POST ou de BdD
  • $typaff=1;
  • $aide=addslashes('OPTIONNEL.<br />Saissisez i&ccedil;i toutes les informations concernant la fiche.');
  • $texte=$det_fiche[0]['F_COMMENT'];// je prend les donn&eacute;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.' &nbsp;&nbsp;&nbsp;';
		}
	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.=' />&nbsp;&nbsp;&nbsp;';
		}
	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>&nbsp;</p>
<p>&nbsp;</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&ccedil;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&eacute;e de POST ou de BdD
	$typaff=1;
	$aide=addslashes('OPTIONNEL.<br />Saissisez i&ccedil;i toutes les informations concernant la fiche.');
	$texte=$det_fiche[0]['F_COMMENT'];// je prend les donn&eacute;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 du même auteur

UPLOAD / AJOUT / SUPPRESSION DE FICHIER SUR VOTRE SITE
DIFFÉRENCE ENTRE 2 DATES & AJOUT DE 2 DATES

 Sources de la même categorie

TESTEUR DE REGEX par hornetbzz
Source avec Zip SE SOUVENIRE D'UN VISITEUR GRACE A UN COOKIE par MoulouD1993
Source avec Zip Source avec une capture CAPTCHA PHP SIMPLE par toutoos
Source avec Zip POSTER, AFFICHER, ... DES NEWS SUR VOTRE SITE par TORA38
CLASS DE CONTRÔLE DE FORMULAIRE par baxterio

 Sources en rapport avec celle ci

TESTEUR DE REGEX par hornetbzz
Source avec Zip CRAWLER DE SITE EN PHP par Mcjo
Source avec Zip FORMULAIRE EMAIL AVEC PIECE JOINTE REPRIS DE LITTLEBUBU par cfndiaye
Source avec Zip CLASSE FORMULAIRE par wolfcyber95
VÉRIFIER LES CHAMPS OBLIGATOIRES D'UN FORMULAIRE par choy

Commentaires et avis

Commentaire de Teclis01 le 18/10/2007 16:03:33

euh pas compris a quoi ça sert ...un formulaire reste un formulaire et il est par définition facile à faire.
Là le php génère du html qui prend 1 minute par champ et chose plus moche il sort un formulaire en table (eurk:p)
Donc pour moi pas d'interêt

Commentaire de cedriclomb le 19/10/2007 12:30:02

Tu devrais peut être jeuter un coup d'oeil a PEAR et HTML_QuickForm2 sut http://pear.php.net

Commentaire de Tartuffe le 19/10/2007 13:47:32

Teclis,
1/ si t'as pas compris, je ne peux pas t'aider.
2/ c'est pas 1 minute par champs, c'est 452,41 minutes !
3/ si tu ne veux pas de tableau, tu n'en fais pas. Le PHP ne génère aucun tableau.
4/ 1 formulaire c'est simple ; 4 versions d'un même formulaire sur le même page, c'est plus compliqué.

Commentaire de NGStudio le 19/10/2007 14:21:12

Bonjour,

Moi j'aurai plutot gérer le formulaire en javascript ! sauf bien sur si les champs doivent etres renplis à l'affichage alors oui pour du PHP...par ailleur les tableaux ne sont plus trop recommandé en HTML sauf bien sur si l'on ne peut pas faire autrement...sinon c'est balise DIV avec du CSS....

Commentaire de Frank9321 le 19/10/2007 16:20:00 9/10

Pas mal...J'aime bien
Juste un petit truc:
# <?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 } ?>
trop de <?php  ?>

Frank

Commentaire de malalam le 20/10/2007 00:02:20 administrateur CS

Hello,

moi, je n'aime pas. Mais je vais étayer mes propos :
- le php ne génère peut-être pas de tableau, mais il génère un paquet de <td>..., et de toute manière, un maximum de html...sans laisser beaucoup de liberté à l'utilisateur. Ah si, on a la liberté d'utiliser des attributs html dépréciés depuis belle lurette, et un javascript particulièrement invasif.
- ce code est extrèmememt limitatif. Il ne génère absolument pas des formulaires...il génère 3 types de champ. C'est vraiment restrictif et ne va pas convenir à énormément d'utilisations.
- ce code balance des addslashes et des stripslashes sans trop savoir pourquoi. A vrai dire, ce code balance beaucoup de trucs qui rendent son utilisation très périlleuse et complexe si jamais on dévie un tant soi peu de ce que son auteur a imaginer. Et si, moi, à tout hasard, je n'utilise pas mysql...? Je modifie toutes tes fonctions de db, ET tes addlashsles et compagnie (vu que l'échappement est différent sur ce serveur de DB)? Mouais. Autant refaire mon propre code.
- on a de jolis noms de fonctions voire de variable...et un code pourtant carrément laxiste. Pas de comparaison stricte, aucun typage donc avec les risques que cela comporte lors du traitement de données utilisateur.
- utilisation abusive des if elseif else (ça me rappelle un de mes staigaires qui utilisaient des tableaux à outrance, pour boucler dessus, et tester chacune des valeurs possibles du tableau dans la boucle...private joke). Tu ferais mieux, là justement, d'utiliser des tableaux paramétrés.
- $aide=addslashes('OPTIONNEL.<br />Saissisez i&ccedil;i toutes les informations concernant la fiche.'); Il sert à quoi, le addslahes, là ? T'as peur des caractères que tu mets en dur dans ta chaîne...?
- le code est franchement complexe pour ce qu'il fait. Il ne donne pas envie de le décortiquer pour parvenir à l'utiliser.

Je finis sur des notes plus douces maintenant, parce que l'intention y est. TU fais des tests, des isset() etc...ce n'est pas toujours le cas.
Tu as pris la peine de créer des fonctions (pas beaucoup, peu de choix, mais au moins, il y en a).
T'as suffisemment commenté.
@NGStudio => on ne valide pas la conformité de données saisies dans un formulaire en javascript. Surtout pas. On les pré-valide éventuellement pour donner un confort à l'utilisateur (y a pas au moins 10 chiffres dans ton numéro de téléphone ? Tiens, je te le dis sans raffraîchir la page), mais la validation définitive pour insertion en bdd, dans un fichier, ou autre, se fait côté serveur (en php dans notre cas). Parce que le javascript, ça se passe côté client. Et côté client, tu ne contrôles pas grand chose...alors que le client, lui, il contrôle tout...J'ai vu des formulaires sur le site de grosses boîtes (très grosses) validés uniquement en javascript... et qui permettaient du coup avec très peu d'astuce de leur faire insérer en base absolument n'importe quoi. Suis sympa, j'attaque pas...et je ne déconce pas histoire qu'ils ne se fassent pas hacker à tout va, mais c'est quand même une erreur grossière que de faire ça. Donc le principe de ce code est correct de ce côté-ci.

Commentaire de malalam le 20/10/2007 00:04:34 administrateur CS

Au passage, je viens de percuter ce que signifiait l'entité html dans ta phrse : "OPTIONNEL.<br />Saissisez i&ccedil;i toutes les informations concernant la fiche.".
ICI ne prend pas de C cédille...ici...iça, oui...mais pas ici ;-)

Commentaire de Tartuffe le 20/10/2007 01:24:54

Peut-être me suis mal expliqué...

- Mon source propose en effet seulement  3 fonctions (les plus courantes d'utilisation ; radio button, textarea et text) qui permettent via les paramètres de se créer comme je leur demande avec un JS d'aide sur onmouseover dans mon cas (addslashe, étant pour le passage des  " ' "  via php qui fusil l'affichage dans le JS (j'aime pas JS) ; dans le doute je le rajoute (ce qui est utile si le message d'aide vient d'une BdD)).
- Le php NE GENERE PAS de TD (sauf si on choisi ce format d'affichage pour les RB). Par contre, j'ai choisi dans mon HTML de mettre mon formulaire en TD...
- Le code ne génère pas de formulaire, en effet.
Par contre l'architecture exposée permet de générer 4 formats de formulaire (en fait 3 formats : vierge, contrôle des saisies, modification, et la page de fiche d'iinfo issu du formulaire.
- en effet c'est PHP + MySQL, donc a adapter avec d'autre BdD....
- IF, ELSEIF, ELSE...
Je suis sur d'une chose et seulement de celle-là, c'est ce que je dois recevoir. Je ne peux rein contrôler d'autre. Donc, afin d'éviter les plantages ou les affichages abscons en recevant autre chose, je teste effectivement les IF et ELSIF des possibles, et met un ELSE pour tous les autres cas.
Je suis donc certain de n'afficher mes infos UNIQUEMENT pour les valeurs attendues des variables contrôlées par ce type de boucle. Bref si un malin s'amuse à me balancer une valeur 'idiote (45 par exemple), il sera traité par le ELSE... Et y'en a des malins ^^
- Comme je disais, je ne donne RIEN concernant les contrôles des données vers la  BdD, ni concernant le création de la requête, cela pour ne pas être trop restrictif... Et on me traite de laxiste du coup ^^
Et en effet, si on utilise autre chose que MySQL, on refait ces requêtes (et gare aux stripslashes), CQFD !


Bref, j'ai fais un code ouvert au possible en virant les trucs PROPRIETAIRE de BdD sauf les stripslashes  (les addslashes gèrent du PHP HTML JS dans ce cas).
J'ai donné un exemple en découpant 1 à 1 les points principales de construction de la page :
- Contrôle des valeurs GET ou POST d'une autre page ou de la même.
- Gestion du <form></form> et des Boutons d'envoie du formulaire
- exemple d'utilisation de chacune des fonctions (dans un formulaire mis en TABLEAU, et alors, si j'aime ca ?)
Je fournis SEULEMENT une architecture des possibles d'utilisation afin qu'à un formualire soit lié 1 et 1 seule page qui gère de plus le format d'affichage différent selon qu'on attende 1 page formulaire ou une page fiche-de-formulaire.

Bref un truc SIMPLE, pas PERILLEUX pour 2 sous, ADAPTABLE, parce que son concepteur à imaginé un truc ultra basique...


Et on me pouille sur des TABLE et des TD !
Sur le fait que je sois telle ou telle BdD...

Soit je n'ais pas compris le concept du réutilsable dans le LIBRE, car adaptable facilement,
Soit PHPCS attend des bouts de codes complets mais restrcitifs car attachés à une problématique fonctionnelement précise et particulièrement individuelle, donc inexploitable par un tiers,
Soit vous n'étiez pas réveillé en lisant ce code,
soit il est trop complexe pour le commun des mortels et je suis un génie (Yes !!!!!!!!)..


Bref, je me trouve bien marie de vouloir aider en publiant du code qui ne vaut pas tripettes, certes, mais dons l'utilisation vaut son pesant d'or (m'est avis que...)

Faudra m'expliquer quelque trucs là...

Tartuffe plus endormi, quoique...

Commentaire de Tartuffe le 20/10/2007 01:33:08

Sinon...

"Ah si, on a la liberté d'utiliser des attributs html dépréciés depuis belle lurette, ..."
  Je code si vieux que ca ?

"... et un javascript particulièrement invasif"
J'insite, mais vu que ce code est adaptable, on peut virer l'intrus sans souci, non ?

Commentaire de Teclis01 le 20/10/2007 02:00:42

J'ai relu ton code et non je n'adhere toujours pas...
Peut être parce que un formulaire c'est rapide à faire en soit et que quand c'est un formulaire "complexe" il vaut mieux savoir ce qu'on fait (code propre et typé et facilement adaptable)
Désolé de ne pas être partisan du moindre effort et d'aimer les choses bien faite... Tu peux en effet ne pas être d'accord avec mon propos mais...
Si j'avais du faire ton truc deja, j'aurais fait une/des classes.
Surement une pour chaque type "d'input" déjà (avec une factory peut être) et donc des methodes pour assainir les variables entrées par l'utilisateur et informer l'utilisateur en cas de mauvais choix ou de choix obligatoire.
Ces assainissements feront reference a une bdd (mysql,mssql,...) afin de faire les bons assainissements d'une part mais aussi pour simplifier le requetage vers ma bdd.
Des fonctions jetées comme ça et une methode a touiller pour faire ci ou ça n'a jamais fait grand miracle et n'a jamais eveillé beaucoup d'esprit et c'est cela que je regrette le plus dans cette source.
Attention néanmoins, je ne crache pas sur les framework qui fournissent de bons outils de manière générale mais ils sont généralement fait en classes...

Commentaire de malalam le 20/10/2007 07:36:08 administrateur CS

Je réponds aussi, point par point :
- select, checkbox, ce ne sont pas des éléments courants ? Personnellement, j'utilise bien plus souvent des select que des textarea. Pour le onmouseover, j'y reviens.
- Ton script ne génère pas de tableau, SAUF si on le lui demande. Ce qui revient à dire qu'il le fait, quoi. Mais les balises <p>, tu décides de les laisser à l'extérieur. Enfin bref, ça c'est insignifiant.
- pas de formulaire donc, seulement 3 types de champs. Je continue à dire que c'est très restrictif : tu partages un code, tu penses qu'il sera utile à d'autres. Enfin, ce devrait être le but. Et pourtant, tu limites son utilisation à tes choix très restrictifs. Ca t'aurait coûté quoi d'être complet afin d'être vraiment utile au plus grand nombre ? Puisque, à priori, si tu postes ici, c'est pour ça.
- Si je n'utilise pas mysql, je dois changer : tes contrôles d'échappement et tes requêtes. Ca comment à faire beaucoup. Même s'ils sont dans la partie "exemple"...et c'est ce qui me gène : ta partie "exemple" est plus grosse que le reste du code. Plus bordélique aussi, pas de fonction, rien. C'est franchement incompréhensible. Si c'est pour avoir seulement une 3 fonctions qui génèrent 3 types d'input (avec ce html, j'insiste, et ce javascript)...ça ne sert plus à grandchose. Et si tu décides que cette partie "exemple" fait partie du code, alors elle n'est pas adaptée car il y a des tonnes de modifications à faire dedans, sans aucune facilité apportée.
-tu sais cve que tu attends dans ton GET, en effet. Donc si tu crées un tableau de correspondances valeurs => variables à mettre à jour...tu y gagnes bien un paquet de lignes.
- Ah...donc, ton code, ce ne sont que les 3 fonctions ? Le reste, c'est comment les utiliser...? Bref, ton code ne fait qu'afficher 3 input.

Tartuffe...ce code n'est adaptable à peu près que par toi, et 2-3 débutants qui s'y essayeront. Ton exemple est bordélique, propriétaire, difficile à comprendre. Et dans ton exemple, il y a le côté fonctionnel de ton code! C'est là que tu traites tes valeurs, que tu les contrôles, que tu joues avec la session pour pallier aux refresh...bref, ça fait partie de ton code, puisqu'il met en place des fonctionnalités promises.
Je pense donc en effet que tu n'as pas compris la notion de réutilisabilité, de portabilité. Tu n'as pas pensé ce code pour les autres, mais uniquement pour toi. C'est bien ce que je te reproche. Si mettre un onmouseover, un popup, et 3 attributs dans un élément de formulaire c'est, pour toi, un de ces "bouts de codes complets mais restrcitifs car attachés à une problématique fonctionnelement précise et particulièrement individuelle, donc inexploitable par un tiers,", c'est en effet qu'il y a un soucis.

" Je code si vieux que ca ?" Faut croire!

"J'insite, mais vu que ce code est adaptable, on peut virer l'intrus sans souci, non ?"
Mais si je modifie tout ton code, puisqu'il est si adaptable...il sert à quoi, au juste?

Quoi que tu en penses, ce que je reproche à ton code ce n'est pas l'intention, c'est la manière. Je suis un développeur web. Depuis longtemps...et je pense que tu peux me croire si je te dis que ton code n'aidera pas grand monde (à quelques exceptions près hein...il y en a toujours), parce que tu as omis de le rendre vraiment portable, simple à utiliser, propre, générique. Tu penses l'avoir fait, mais ce n'est pas le cas. Il faut modifier 95% de ce que tu as écrit pour pouvoir l'utiliser dans son propre système. Y compris les fonctions. Ca fait beaucoup.

Commentaire de stay le 14/11/2007 11:48:12

Moi je n'aime pas non plus.

Tous tes textes sont statiques.
Pour ma par un site web digne de se nom est multilingues.
Donc ton formulaire (code)  serait bien trop compliquer à mètre à jour.

Pour finir je crois que des classes seraient plus intéressantes  que de ce retrouvé avec 856 lignes de code.

Pour les débutants attention je croie que ton HTML n'est pas des plus Initié.

Désoler

Commentaire de maagicien le 06/08/2008 12:45:34

moi j'aime bien!

 Ajouter un commentaire


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 (&lt;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


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,964 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales