Page 1 sur 1

vérification

Posté : 27 mai 2011, 12:43
par Jibe
Bonjour,

Je fais appel à vos connaissances PHP pour un problème qui est surement tout bête mais auquel je ne trouve pas de solution:

Voilà la ligne pour laquelle l'utilisateur doit rentrer des notes:
<td><input type="text" name="eval[<?php echo $donnees['id'];?>]" id="eval[<?php echo $donnees['id'];?>]" size="2" maxlength="1" tabindex="5"/></td>
Voilà ensuite la page qui fait le traitement:
if (!empty($_POST['eval']))
 {
  $eval=$_POST['eval'];
				
  foreach($eval as $element => $valeur)
   {
	// On se connecte à MySQL
						
	$bdd->exec('UPDATE l_met_scomp SET precedent='.$valeur.' WHERE id='.$element.'');
						
	header("Location: niveau_fct.php");
					
  }
 }
 else
 {
	echo 'Vous devez respecter la règle de saisie, remplir tous les champs et nombre entre 1 et 5';
 }
Ma requête s’exécute et les données s'enregistrent. Le problème que j'ai c'est que je ne sais pas comment faire la vérification que l'ensemble des champs aient été remplis et que l'utilisateur a bien saisi des nombres compris entre 1 et 5.

Merci

Re: vérification

Posté : 27 mai 2011, 13:21
par Silen.S.Sin
Bonjour, je ne comprend pas bien ton code.
Que cherche tu réellement à faire? Juste vérifier avant l'envoi que cette case est remplis par un chiffre de 1 à 5?

Moi personnellement juste pour 1 à 5 je ne vérifierais pas... je mettrais soit des boutons radio, soit un select.

Re: vérification

Posté : 27 mai 2011, 14:07
par Jibe
Oui je cherche juste à faire une vérification que tous les champs soient remplis et que ce soit avec une valeur comprise entre 1 et 5. Si c'est le cas alors la requête s’exécute et on met à jour la table, sinon on affiche un message d'erreur et on revient à la page précédente.

Re: vérification

Posté : 27 mai 2011, 14:28
par Maskime
Hello,

Tu peux faire un truc comme ça :
<?php
if(isset($_POST['eval']) && !empty($_POST['eval']) && is_array($_POST['eval'])){
	$eval = $_POST['eval'];
	$evalQuery = array();
	$elementsInError = array();
	$templateQuery = "UPDATE l_met_scomp SET precedent=##VALEUR## WHERE id=##ELEMENT##";
	$toReplace = array("##VALEUR##", "##ELEMENT##");
	$hasError = false;
	foreach($eval as $element => $valeur){
		if(strlen($valeur) > 0 && trim($valeur) != ''){
			$replacements = array($valeur, $element);
			$sQuery = str_replace($toReplace, $replacements, $templateQuery);
			$evalQuery[] = $sQuery;
		}else{
			$elementsInError[] = $element;
			$hasError = true;
		}
	}
	if(!$hasError){
		foreach($evalQuery as $query){
			$bdd->exec($query);
		}
		header("Location: niveau_fct.php");
	}else{
		$elementList = implode(", ", $elementsInError);
		echo "Les éléments suivant n'ont pas été complétés : " . $elementList . "<br />";
		echo '<a href="' . $_SERVER['HTTP_REFERER'] . '">Cliquez ici pour revenir sur la page précédente</a>';
	}
}
?>
Maintenant en faisant comme ça, l'utilisateur qui clique sur le lien "Cliquez ici pour revenir sur la page précédente", retournera bien sur la page précédente, mais le formulaire n'aura pas les valeurs qu'il aura renseigné avant...

Egalement à noter que ce script est sensible à l'injection SQL et que l'utilisateur doit abligatoirement avoir saisi un chiffre, s'il saisi une chaîne de caractères ça plantera...

Re: vérification

Posté : 27 mai 2011, 14:33
par Silen.S.Sin
Une question, combien à tu de champs à vérifier?

Re: vérification

Posté : 27 mai 2011, 14:39
par Jibe
Je vais essayer ton code Maskime, merci.

Silen.S.Sin le nombre de champs à remplir n'est pas fixe. Il dépend d'une autre donnée (que je n'ai pas mis dans la page), c'est pour ca que je le déclare comme un tableau.
L'utilisateur peut avoir a remplir 4 champs, 10 champs, ...