Dans la continuité de la création de mon site j'ai été amené à développé cette fonction permettant de créer un formulaire à partir d'une requete SQL
Source / Exemple :
//--- Affiche une requete SQL
function AfficherFormulaire($sql,$nbChampsEnMoins=0, $TailleMax=0){
$rst = mysql_query($sql);
if (!$rst){
echo "Erreur :" . mysql_error() . "<br>";
}else{
//--- Nombre d'enregistrements
$nbLig = mysql_num_rows($rst);
//--- Nombre de colonnes
$nbCol = mysql_num_fields($rst) - $nbChampsEnMoins;
//--- Début du tableau
echo '<table width="100%" cellpadding="0" cellspacing="0">';
//--- Affichage noms des colonnes
$i = 0;
echo '<tr>';
for ($j = 0; $j < $nbCol; $j++)
{
$type = mysql_field_type($rst, $j);
$name = mysql_field_name($rst, $j);
$len = mysql_field_len($rst, $j);
$flags = mysql_field_flags($rst, $j);
//--- Zone de texte
if ($type == 'string' && $len > 1){
echo '<tr>';
echo ' <td width="30%">'. $name . ' :';
if ($flags == 'not_null') echo '*';
echo ' </td>';
echo ' <td>';
echo ' <input type="text" name="'. $name . '"';
echo ' value="' . $_POST[$name] . '"';
echo ' maxlength="' . $len . '"';
if ($len > $TailleMax){
echo ' size="' . $TailleMax . '"></td>';
}else{
echo ' size="' . $len . '"></td>';
}
echo ' <td width="20%"></td>';
echo '</tr>';
//--- Case à cocher
}elseif ($type == 'int' && $len == 1){
echo '<tr>';
echo ' <td width="30%">'. $name . ' :</td>';
echo ' <td>';
echo ' <input type="checkbox" name="'. $name . '"';
echo ' value="1"';
if ($_POST[$name] == '1'){
echo ' checked';
}
echo ' class="checkbox"></td>';
echo ' <td width="20%"></td>';
echo '</tr>';
//--- Zone de texte numérique
}elseif ($type == 'int'){
echo '<tr>';
echo ' <td width="30%">'. $name . ' :';
if ($flags == 'not_null') echo '*';
echo ' </td>';
echo ' <td>';
echo ' <input type="text" name="'. $name . '"';
echo ' value="' . $_POST[$name] . '"';
echo ' maxlength="' . $len . '"';
if ($len > $TailleMax){
echo ' size="' . $TailleMax . '"></td>';
}else{
echo ' size="' . $len . '" onChange="if (isNaN(this.value)) this.value = \'\' ;"></td>';
}
echo ' <td width="20%"></td>';
echo '</tr>';
//--- Case à cocher
}
}
echo '</tr>';
//--- Fin du tableau
echo '</table>';
}
}
Conclusion :
paramètres :
$sql = la chaine de requete
$nbChampsEnMoins - Si dans notre requete on ne souhaite pas afficher les $nbChampsEnMoins derniers champs
$TailleMax = Taille maximum autorisé pour les zones de texte
informations complémentaires:
les champs de type string crée de zone de texte
les champs de type int et de longueur 1 sont considérés comme des case à cocher (soit 0 soit 1)
Les champs de type int de longueur supérieure à 1 sont des zones numériques, si la valeur n'est pas saisi correctement elle est automatiquement effacée
les champs not_null sont suivi d'un * signifiant obligatoire
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.