Créer un formulaire à partir d'une requete sql

Contenu du snippet

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

A voir également

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.