Du traitement à coté des cases non remplies ?

Résolu
ninja -  
 ninja -
Bonjour,
j'ai un un mini-projet à réaliser, ils nous ont demandé de préparer un formulaire et de traiter les données saisis et les afficher sous forme de phrases et enfin de remercier l'internaute.

en fait, c'est fait !
sauf que si l'internaute ne saisie pas une case, je lui demande de saisir ce qui lui manque dans une autre page blanche.
J'apprécie pas trop ça. Je préfère, comme ce qui se fait plus usuellement sur les formulaires, on écrit la consigne en rouge juste à coté de la case non remplie .
Surement vous avez pu comprendre que j'ai écrit le formulaire sur une page html et puis le traitement sur une autre page.
j'ai essayé de voir le code d'un de ces formulaire, éh oui ! puisque c un traitement, c du code php et donc ça n'apparait pas sur le code source de la page.

svp, comment on peut réaliser du traitement juste à coté des cases non remplies ?
si il y a qlq chose dans le code qui soit un peut particulier, veuillez me l'indiquer.
Merci

13 réponses

Atropa Messages postés 1940 Date d'inscription   Statut Membre Dernière intervention   274
 
bonsoir,

il faut traiter et afficher le formulaire sur la même page

<form action="#" method="post">
<p>
<input type="text" name="unchamp" /> <?php if(isset($_POST['unchamp']) && $_POST['unchamp'] == '') echo 'remplis ce champ tout de suite ou t\'es mort !'; ?>
</p>
</form>


voilà un exemple
0
ninja
 
afficher le formulaire sur la même page ? d'extension html ou php ?

si c sur une extension php, c possible d'écrire du code html dans cette extension, c-à-d même le DOCTYPE et tout ?
0
Atropa Messages postés 1940 Date d'inscription   Statut Membre Dernière intervention   274
 
ben oui heureusement ! ce serait la misère sinon

et oui j'ai oublié de préciser il faut changer l'extension .html en .php

essaye ca juste pour voir sur un fichier php

<?php for($i=0;$i<10;$i++) { ?>
            <p>a ce niveau nous sommes <?php echo $i; ?></p>
<?php } ?>



c'est très souple il y a plein de facon de méler le php au html...
0
ninja
 
Merci pour l'idée de mettre tt sur un même fichier, et ça a marcher de mettre du code HTML dans une extension php.

Mais c pas encore parfait :(

Notice: Undefined index: nom in C:\wamp\www\formulaire_avec_traitement.php on line 28
veuillez saisir votre nom

c ce qu'on m'a écrit à coté de du le case "nom", j'ai essayer de définir
j'ai écrit plus haut ... , bon je vs donne le code que j'ai fait :


<table >
<tr>
<td>Nom:</td>
<td><input type="text"name="nom"size="30"maxlength="40"/></td>
<td>
<?php
if(strlen($_POST['nom'])>0)
{$nom=stripslashes($_POST['nom']);
}
else
{$nom=NULL;
echo"veuillez saisir votre nom <br/>";
}
?>
</td>

c'est quoi l'erreur ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Si tu veux afficher les erreurs avant l'envoie du formulaire, utilise le Javascript.
Si tu as déjà quelques basesen JS, j'ai un exemple ici.
Garde toujours ta vérification côté serveur avec PHP.
0
ninja
 
Je n'y ai rien compris, on a pas encore étudier du JS
on pourrait pas avoir un résultat similaire juste avec du PHP
0
Atropa Messages postés 1940 Date d'inscription   Statut Membre Dernière intervention   274
 
correction !

<table >
<tr>
<td>Nom:</td>
<td><input type="text"name="nom"size="30"maxlength="40"/></td>
<td>
<?php
// il faut tester l'existence de la variable avant tout !
// empty test la non existence ou la valeur 0, '' et  null retourne true dans ce cas
// isset test l'existence et retourne true dans ce cas  
// quand tu n'as qu'une instruction dans un if else ou autre tu peux supprimer les {}
if(!empty($_POST['nom']) && strlen($_POST['nom'])>0) $nom=stripslashes($_POST['nom']);
else {
$nom=NULL; // Est ce vraiment utilise ?
echo 'veuillez saisir votre nom <br/>'; // Evite les guillemet double sauf pour les caractère \r\n\t...
}
?>
</td> 
0
ninja
 
merci ! il n' y a plus de warning

mais j'ai tjs qlq remarques à propos de l'execusion :

- si c possible "veuillez saisir votre nom" ne devrait pas parraitre au début, mais après l'envoi des données
( sans avoir entré le nom )

mais c pas tellement grave !

- Ce qui est plus interressant c de savoir cmt afficher une autre page, dans laquelle on remercie l'internaute, après avoir appuyer sur envoyer, puisque là, on reste tjs sur la même page !! :-/


Merci encore pr votre patience
0
ninja
 
biensure en ayant 2 types de traitements, ceux qui font signe d'erreur lorsque les cases ne sont pas remplies, et l'autre type de traitements qui va par exemple remercier l'internaute
0
Atropa Messages postés 1940 Date d'inscription   Statut Membre Dernière intervention   274
 
à ce moment là tu fait

if(isset($_POST['nom'])) {
if(strlen($_POST['nom'])>0) $nom=stripslashes($_POST['nom']);
else {
$nom=NULL; // Est ce vraiment utilise ?
echo 'veuillez saisir votre nom <br/>'; // Evite les guillemet double sauf pour les caractère \r\n\t...
}
}


désolé je n'avais pas regardé le sens du code j'avais juste regardé d'où pouvais venir l'erreur
0
ninja
 
waw, ça marche !

Sympa d ta part

et pour la 2 ème partie de ma question, le 2ème tiret (msg avant-dernier) ?


(vraiment j'ai honte de vous embêter sur le même sujet )

si vs n'aviez pas compris paske jmété mal exprimé, bon jereformule :

on ayant du traitement sur la meme page, on écrit le formulaire et le traitement sur le même fichier php, là on est d'accord . mais ça n'a pu etre réalisé que pask'après avoir apuyer sur submit, ça renvoie vers le mm fichier.

cmt serrait il possible d'avoir en mm tps du traitement sur la mm page pr signaler des erreurs de nn remplissage de cases, et du traitemt pr renvoyer par exemple un remerciment à l'internaute .

Je m'excuse de trop insister ! :-s
0
Atropa Messages postés 1940 Date d'inscription   Statut Membre Dernière intervention   274
 
c'est simple mais il faut toujours tester l'existence des variable


je te fais un exemple rapide sert t'en de schéma générale mais rien empêche les include...

<?php

	function protect($string) {
		$string = htmlentities($string,ENT_QUOTES);
		$char = array(
			'='=>'&#61;',
			'%'=>'&#37;',
			'!'=>'&#33;',
			'_'=>'&#95;',
			'|' => '&#124;',
			'(' => '&#40;',
			')' => '&#41;',
			'{' => '&#123;',
			'}' => '&#125;',
			'[' => '&#91;',
			']' => '&#93;',
		);
		$string = strtr($string,$char);
		if ($stringSql = @mysql_real_escape_string($string))  return $stringSql;
		else return $string;
	}

	function ProtectArray($item) {
		if(is_array($item)) {
			$temp = array();
			foreach($item as $key => $a) {
				if(is_array($a)) $temp[$key] = ProtectArray($a);
				elseif(is_string($a)) $temp[$key] = protect($a);
				else $temp[$key] = $a;
			}
			return $temp;
		}
		elseif(is_string($item)) return protect($item);
		else return $item;
	}


	// Voilà 2 fonction qui te permetteront de sécuriser tout ton site automatique des injections sql et html

	if(isset($_GET)) $_GET = ProtectArray($_GET);
	if(isset($_POST)) $_POST = ProtectArray($_POST);
	if(isset($_COOKIE)) $_COOKIE = ProtectArray($_COOKIE);

	// comme ça tout est protégé d'entré !!! si tu as besoin de la variable original html_entity_decode() de "déprotège"

	if(!empty($_POST['name']) && !empty($_POST['mail'])) {
		//*
		$message = 'Nom : '.$_POST['name']."\r\n".'Mail : '.$_POST['mail'];
		file_put_contents('./monfichier.txt',$message,LOCK_EX);
		//*/
		//enregistrement dans un fichier txt par exemple...
		$masquerLeFormulaire = true;
	}


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title></title>
</head>
<body>
<?php if(!isset($masquerLeFormulaire)) { ?>
	<form action="#" method="post">
		<p>
			<label for="name">Name : </label><input type="text" name="name" id="name" size="20" maxlength="30" <?php if(isset($_POST['name'])) echo 'value="'.$_POST['name'].'" '; ?>/><?php
				if(isset($_POST['name']) && $_POST['name'] == '') echo ' | Veuillez remplir le champ Name'; ?><br />
			<label for="mail">Mail : </label><input type="text" name="mail" id="mail" size="50" maxlength="30" <?php if(isset($_POST['mail'])) echo 'value="'.$_POST['mail'].'" '; ?>/><?php
				if(isset($_POST['mail']) && $_POST['mail'] == '') echo ' | Veuillez remplir le champ Mail'; ?><br />
			<input type="submit" value="Envoyer" />


		</p>
	</form>
<?php } else { ?>

	<div><h1>merci d'avoir remplis le formulaire !!!!</h1></div>

<?php } ?>
</body>
</html>
0
ninja
 
éééééh oui, ça marche. bravo les experts !


Merci bcp pr votre effort !
Merci bcp pr votre patience !
et surtout un grand Merci pr votre serviabilité !

echo' Merci !!! :) ';
0