Ma première class , optimisation
Posté : 27 avr. 2006, 15:41
bonjour , je viens de créer une class pour créer un formulaire de façon dynamique.
Ca fonctionne très bien !! mais à présent , avant de partir dans le gros boulot , je désire savoir si je suis sur la bonne route.
Je vais encore de voir modifier ma class pour les form de type select.
Je me limite pour le formulaire au champ :
-input (text,checkbox)
-textarea
-select
Voici mon code :
Ca fonctionne très bien !! mais à présent , avant de partir dans le gros boulot , je désire savoir si je suis sur la bonne route.
Je vais encore de voir modifier ma class pour les form de type select.
Je me limite pour le formulaire au champ :
-input (text,checkbox)
-textarea
-select
Voici mon code :
<?
//Créons une class pour les champs
class Champ {
var $name ;
var $type ;
var $valuedef;
var $size1;
var $size2;
function Info($type,$name,$valuedef,$size1,$size2)
{
$this->type = $type ;
$this->name = $name ;
$this->valuedef = $valuedef ;
$this->size1 = $size1 ;
$this->size2 = $size2 ;
}
function CreatChamp()
{
if($this->type == 'text')
{
printf("<input name=\"%s\"",$this->name) ;
printf("value=\"%s\"",$this->valuedef);
printf("type=\"text\" size=\"%s\" />",$this->size1);
}
if($this->type == 'textarea')
{
printf("<textarea name=\"%s\"",$this->name) ;
printf("cols=\"%s\"",$this->size1);
printf("rows=\"%s\">",$this->size2);
printf("%s</textarea>",$this->valuedef) ;
}
}
}
?>
<form action="?page=test" method="post">
<table>
<?
$qry_champ = mysql_query("SELECT
champ.champ_id,
champ.champ_fk_subgroup_id,
champ.champ_name,
champ.champ_type,
champ.champ_valuedef,
champ.champ_obligatoire,
champ.champ_check_type,
champ.champ_size1,
champ.champ_size2,
champ.champ_checked,
champ.champ_ordre,
champ.champ_fk_option_id,
denom.denom_id,
denom.denom_fk_champ_id,
denom.denom_nomfr,
denom_language.denom_language_id,
denom_language.denom_language_fk_denom_id,
denom_language.denom_language_fk_language_id,
denom_language.denom_language_name,
language.language_id,
language.language_name,
language.language_sub
FROM
denom
RIGHT OUTER JOIN champ ON (denom.denom_fk_champ_id=champ.champ_id)
INNER JOIN denom_language ON (denom.denom_id=denom_language.denom_language_fk_denom_id)
INNER JOIN language ON (denom_language.denom_language_fk_language_id=language.language_id) WHERE champ_fk_subgroup_id='1' AND language_sub ='$_SESSION[lang]' ORDER BY champ_ordre ASC") or die (mysql_error());
$nb_champ = mysql_num_rows($qry_champ);
for($i=0;$i<$nb_champ;$i++)
{
$champ = mysql_fetch_assoc($qry_champ);
$denom = ($champ['champ_obligatoire'] == 1)? "<b>".$champ['denom_language_name']."</b>" : $champ['denom_language_name'] ;
?>
<tr>
<td><?=$denom?></td>
<td>
<?
$type = $champ['champ_type'];
$name = $champ['champ_name'];
$valuedef = $champ['champ_valuedef'];
$size1 = $champ['champ_size1'];
$size2 = $champ['champ_size2'];
$champ = new Champ ;
$champ->Info($type,$name,$valuedef,$size1,$size2);
$champ->CreatChamp();
?>
</td>
</tr>
<? }
?>
</table>
Merci d'avance à vous pour vos conseils !!!