8792 sujets

Développement web côté serveur, CMS

Salut !

Voila mon probleme : il se trouve que je suis en train de creer des tas de formulaires pour mettre a jour ma base de données.
Jusque la, j'ai fait mon travail avec succès, cependant, les controles des formulaires n'interagissent pas assez avec l'utilisateur : je ne fais qu'apparaitre des phrases d'avertissement a coté du formulaire. Voici ma fonction de control en php :

<?php
// Fonction de contrôle avant insertion ou mise à jour 
function controle_eleve ($eleve)
{
	$message = "";
	
	// Test sur l'existence, le type, la présence d'une valeur



	if (empty($eleve['nom_eleve']))
	{
		$message = "<li>champ du nom vide,";
	}
	else if (is_numeric ($eleve['nom_eleve']))
	{
		$message = "<li>mauvaise saisie du nom,";
	}
	else if (ereg ("<[^>]*>", $eleve['nom_eleve'], $balises))
	{
		$message .= "<li>balise dans le champ nom : " .  htmlEntities ($balises[0]) . ",";
	}
	
	<?=$test->fielderror("Nom","fieldreq")?>
	
	if (empty($eleve['pren_eleve']))
	{
		$message .= "<li>champ du prénom vide,";
	}
	else if (is_numeric ($eleve['pren_eleve']))
	{
		$message = "<li>mauvaise saisie du prénom,";
	}
	else if (ereg ("<[^>]*>", $eleve['pren_eleve'], $balises))
	{
		$message .= "<li>balise dans le champ prénom : " .  htmlEntities ($balises[0]) . ",";
	}
	
	
	
	if (empty($eleve['datenai_eleve']))
	{
		$message .= "<li>champ de la date de naissance vide,";
	}
	else if(!eregi("^([0-9]{2})/([0-9]{2})/([0-9]{4})$",$eleve['datenai_eleve']))
	{
		$message .= "<li>mauvais format de la date,";
	}
	
	
	
	if (empty($eleve['cp_eleve']))
	{
		$message .= "<li>champ du code postal vide,";
	}
	else if (!is_numeric ($eleve['cp_eleve']))
	{
		$message .= "<li>mauvais format du code postal,";
	}



	if (empty($eleve['ville_eleve']))
	{
		$message .= "<li>champ de la ville vide,";
	}
	else if (is_numeric ($eleve['ville_eleve']))
	{
		$message = "<li>mauvaise saisie de la ville,";
	}
	else if (ereg ("<[^>]*>", $eleve['ville_eleve'], $balises))
	{
		$message .= "<li>balise dans le champ ville : " .  htmlEntities ($balises[0]) . ",";
	}
	
	
	
	if (empty($eleve['tel_eleve']))
	{
		$message .= "<li>champ du téléphone vide,";
	}
	else if (!is_numeric ($eleve['tel_eleve']))
	{
		$message .= "<li>mauvais format du téléphone,";
	}
	
	
	
	// si il y a un message, on affiche le détails des erreurs et le formulaire	
	
	if ($message)
	{
		echo "<div id='control'>"
		. "<b>Les erreurs suivantes sont été rencontrées : </b>"
		. "<ul>$message</ul>"
		. "</div>";

		// Réaffichage du formulaire avec les données saisies
		form_eleve (mode_insertion, $eleve);
		
		return  false;
	}
	else
	{
		return true;
	}
}
?>



L'ideal serait par exemple de rendre la couleur d'un champ non ou mal saisie rouge pour ainsi attirer l'attention.

J'ai deja trouvé des controle en javascript tres efficace et qui change un bloc de style css, mais le javascript a le désavantage de pouvoir etre désactivé pour raison de sécurité. Le javascript sera donc exclu de mon application dans la mesure du possible.

J'ai trouvé une methode en php qui va directement dans le style css et le modifie :

http://developpeur.journaldunet.com/tutoriel/php/050218-php-css-dynamique.shtml

Mais je ne souhaite pas non plus inserer du code php dans la feuille de style, car je veux separer le php, le css, et le html, ce qui permettra une meilleure comprehension du code.

J'ai aussi trouvé une classe technique en php qui permet de valider le formulaire et de changer la classe des blocs concerné (bloc .erreur, ou bloc .normal), c'est ce qui ressemble le plus a ce que je veux faire :

http://www.asp-php.net/scripts/asp-php/valide-form.php

Mais voila, je ne suis pas aussi bien calé que ça en php, et j'aimerais avoir une version simplifié, ou alors juste un petit tuto qui m'explique ce que je voudrais precisement realiser : la feuille de style dispose de 2 classe, l'une intitulée "erreur", qui affiche du rouge, l'autre "normale" qui affiche normalement. Je ne veux pas modifier la feuille de style en php, mais seulement switcher le nom de classe du bloc en fonction du resultat du controle d'erreur.

Voila voila, merci d'avance pour vos conseils.
Modifié par t.royere (23 Jan 2007 - 10:46)
Salut à toi et bienvenu sur le Forum,

En lisant ton sujet, il y a deux choses qui me sautent aux yeux :
- Tu n'as pas l'air d'avoir tout à fait compris qu'il n'y a absolument aucune interaction entre le css et le php à proprement parler dans le sens où le php est un langage serveur qui va (dans ton cas notamment) générer un contenu HTML. L'intercation que tu vas obtenir sera située entre ton contenu obtenu (html, htm, xhtml...) et sa mise en forme css.
- De plus, ... tu ne peux pas insérer du code php dans ta feuille de style css. Cette dernière ne sera composée que d'instructions css. Le premier exemple mentioné génère une feuille de style, ce qui est totalement différent. Smiley cligne

Concernant ton problème, il me semble que cela relève plus d'une question de php que d'une question relative au css.
Sans rentrer dans les détails voici comment cela va fonctionner en cas d'erreur :
Lors de ta vérification de formulaire, il te suffit de créer une variable pour les messages d'erreur.
Si celle-ci n'est pas vide (il y a donc erreur), tu remplis la class du champs correspondant.
Cela se fait simplement au moyen d'une instruction conditionnelle if() insérée dans la balise de l'élément concerné... Smiley murf
je suis désolé Smiley confus , je ne savais pas dans quelle partie du forum placer mon sujet. Je ferais plus attention a l'avenir.

Quant a ton conseil, il est tellement evident que je n'y avais meme pas pensé Smiley eek . Merci beaucoup ! Smiley biggrin
t.royere a écrit :
Quant a ton conseil, il est tellement evident que je n'y avais meme pas pensé Smiley eek . Merci beaucoup ! Smiley biggrin

Pas de problème Smiley cligne
Bonne continuation Smiley ravi