prob de script

Invité
Invité n'ayant pas de compte PHPfrance

29 sept. 2005, 22:41

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]

Mammouth du PHP | 19672 Messages

29 sept. 2005, 22:44

Où et quand est définie la variable $valider ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

29 sept. 2005, 23:04

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 19672 Messages

29 sept. 2005, 23:17

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

29 sept. 2005, 23:46

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

Mammouth du PHP | 19672 Messages

29 sept. 2005, 23:51

Relis ce que j'ai mis plus haut: j'avais bien deviné et ça ne peut pas fonctionner de cette manière.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 294 Messages

30 sept. 2005, 00:08

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 ?

ViPHP
pjl
ViPHP | 2119 Messages

30 sept. 2005, 00:30

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 ?

Eléphant du PHP | 294 Messages

30 sept. 2005, 00:34

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.

ViPHP
pjl
ViPHP | 2119 Messages

30 sept. 2005, 00:42

utilise la fonction header alors.

Mammouth du PHP | 1776 Messages

30 sept. 2005, 04:02

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>
		<?
	}
?>

Mammouth du PHP | 19672 Messages

30 sept. 2005, 08:03

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>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

30 sept. 2005, 11:12

C'est a dire ?

Eléphant du PHP | 294 Messages

30 sept. 2005, 11:38

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

ViPHP
pjl
ViPHP | 2119 Messages

30 sept. 2005, 12:23

Exactement.