Du traitement à coté des cases non remplies ?

Résolu/Fermé
ninja - 18 nov. 2009 à 21:54
 ninja - 19 nov. 2009 à 14:14
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 mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
18 nov. 2009 à 22:26
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
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 mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
18 nov. 2009 à 22:55
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
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 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
18 nov. 2009 à 23:30
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
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 mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
19 nov. 2009 à 00:42
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
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
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 mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
19 nov. 2009 à 01:53
à 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
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 mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
19 nov. 2009 à 10:35
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
ééééé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