Page 1 sur 2

prob de script

Posté : 29 sept. 2005, 22:41
par Invité
Je ne comprend pas pourquoi ce script ne fonctionne pas
]

Code : Tout sélectionner

<form action="<?php if( $accepter == "1" ) { echo "valider.php";} ?>" method="get" name="commande" id="commande">
je voudrais donc que la validation du formulaire, a condition que le champ "accepter" soit egal à 1, pointe sur la page "valider.php".
ça marche pas

Merci[/php]

Posté : 29 sept. 2005, 22:44
par Cyrano
Où et quand est définie la variable $valider ?

Posté : 29 sept. 2005, 23:04
par Truc
Où et quand est définie la variable $valider ?
$accepter tu veut dire non ?!

sinon la comparaison sur un numerique se fait sans les guillemets :arrow:
$accepter == 1, mais ça c'est pour la forme, dis nous en plus. Que fait ton script et que doit-t-il faire exactement.

Posté : 29 sept. 2005, 23:17
par Cyrano
Tu as raison Truc, en fait, je flaire un truc à 100km : la variable est définie d'après une valeur sélectionnée dans le formulaire lui-même : ça ne peut donc pas fonctionner puisqu'au moment de l'affichage du formulaire, cette valeur n'a pas encore pu être sélectionnée, donc la variable ne peut pas être initialisée. À moins que ce soit une valeur provenant d'un formulaire d'une page précédente...? Mais bon, j'attends la réponse, on verra bien.

Posté : 29 sept. 2005, 23:46
par Invité
La variable est une chekbox dans le formulaire

Code : Tout sélectionner

<input name="accepter" type="checkbox" id="accepter" value="1">
le formulaire est en Get est je vois la variable sur 1. Donc elle est bien passée. J'ai essayé sans les guillemets, ça fonctionne pas mieux
Merci

Posté : 29 sept. 2005, 23:51
par Cyrano
Relis ce que j'ai mis plus haut: j'avais bien deviné et ça ne peut pas fonctionner de cette manière.

Posté : 30 sept. 2005, 00:08
par Gico
je crois comprendre, ou dois je mettre cette variable pour qu'elle soit prise en compte. Puisqu'il s'agit d'un champs du formulaire ?

Re: prob de script

Posté : 30 sept. 2005, 00:30
par pjl
je voudrais donc que la validation du formulaire, a condition que le champ "accepter" soit egal à 1, pointe sur la page "valider.php".
ça marche pas
Tu veux que ton visiteur après avoir validé le formulaire arrive sur la page valider.php ou que le traitement du formulaire se fasse dans la page valider.php ?

Posté : 30 sept. 2005, 00:34
par Gico
je voudrais qu'aprés avoir remplis le formulaire et coché la case "accepter"(les conditions), on aille sur la page "valider" sinon que rien ne se passe, on recharge la page actuelle.

Posté : 30 sept. 2005, 00:42
par pjl
utilise la fonction header alors.

Posté : 30 sept. 2005, 04:02
par DocType
Et si tu faisais un test sur tes variables lorsqu'elles sont envoyées par le formulaire (sur onsubmit). UN petit test javascript qui t'avertit que tas oublié un champ ou non et surtout la case...
Ensuite, tu recharges la meme page pour voir si tes variables existent...
Un exemple ?
<?
if ((isset($_POST["pseudo"])) and
		(isset($_POST["message"])))	{
		if (empty($_POST["pseudo"]))	{
			echo "Tu dois entrer ton pseudo ! <a href='exprimer.php'>Retour</a>";
		}	elseif(empty($_POST["message"]))	{
			echo "Tu dois entrer ton message ! <a href='exprimer.php'>Retour</a>";
		}	else	{
			//traitement de ton formulaire
	}	else	{
		?>
		<script type="text/javascript">
		<!--
		function verifchamps()	{
			if (document.envoi_exprimer.pseudo.value == "")	{
				alert("Tu dois entrer ton pseudo !");
				return false;
			}
			if (document.envoi_exprimer.message.value == "")	{
				alert("Tu dois entrer ton message !");
				return false;
			}
			return true;
		}
		-->	
		</script>
		<form action="exprimer.php" name="envoi_exprimer" method="post" onsubmit="return verifchamps();">
			<input type="text" size="42" name="pseudo" /><br />
			<textarea name="message" cols="30" rows="8"></textarea><br />
			<input type="submit" value="M'exprimer !" /><br />
		</form>
		<?
	}
?>

Posté : 30 sept. 2005, 08:03
par Cyrano
Il manque une accolade de fermeture dans ton exemple PRoGRaFLaSH. Le même en XHTML valide
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Validation et traitement de formulaire</title>
</head>
<body>
<?
if ((isset($_POST["pseudo"])) and (isset($_POST["message"])))
{
    if (empty($_POST["pseudo"]))
    {
        echo "Tu dois entrer ton pseudo ! <a href='exprimer.php'>Retour</a>";
    }
    elseif(empty($_POST["message"]))
    {
        echo "Tu dois entrer ton message ! <a href='exprimer.php'>Retour</a>";
    }
    else
    {
        //traitement de ton formulaire
    }
}
else
{
?>
<script type="text/javascript">
<!--
function verifchamps()
{
    if (document.forms['envoi_exprimer'].elements['pseudo'].value == "")
    {
        alert("Tu dois entrer ton pseudo !");
        return false;
    }
    if (document.forms['envoi_exprimer'].elements['message'].value == "")
    {
        alert("Tu dois entrer ton message !");
        return false;
    }
    return true;
}
-->
</script>
<form action="exprimer.php" id="envoi_exprimer" method="post" onsubmit="return verifchamps(); return false;">
  <p><input type="text" size="42" name="pseudo" id="pseudo" /><br />
  <textarea name="message" id="message" cols="30" rows="8"></textarea><br />
  <input type="submit" value="M'exprimer !" /></p>
</form>
<?
}
?>
</body>
</html>

Posté : 30 sept. 2005, 11:12
par Invité
C'est a dire ?

Posté : 30 sept. 2005, 11:38
par Gico
Merci a vous, mais j'ai déja un peu de mal a maitriser php alors me lancer dans JS...j'ai cependant trouvé une solution. Le formulaire recharge la page, un script recupère la valeur de la variable et redirige ou non vers la page de validation.
//init des variables 
if(!isset($HTTP_GET_VARS['accepter'])) $accepter="";
else $accepter=$HTTP_GET_VARS['accepter'];
puis
<?php
$accepter = ($HTTP_GET_VARS['accepter']);
if ($accepter=="ok")
{
header ("Location: commandevalidee.php");
}
?>

je pense que c'est sur cette piste que voulait me mettre pjl.

Merci

Posté : 30 sept. 2005, 12:23
par pjl
Exactement.