"action" dynamique dans un formulaire

Mammouth du PHP | 881 Messages

28 avr. 2011, 17:20

Il est difficile de t'aider sans le code.!

Dans mon message précédent, je n'avais pas remarqué ta ligne
$choix = $_POST['choix'];
et pourtant je l'ai copiée-collée.
Tout devient plus simple en gardant toujours le même nom de variable.
Certains diront de faire comme t'as fait, renommer pour plus d'aise; soit, mais fait le à la première ligne pour être sûr que ce soit la nouvelle variable seulement qui entre en jeu. Je parie qu'à ta ligne 21, on devrait lire $_POST["choix"] plutôt que $choix. Si tu déplace $choix = $_POST['choix']; en tout début de page, tu devrais régler ça. Encore une fois ... sans le code ... #-o

Quant à des guillemets fermant, regarde bien s'il ne manque pas un point-virgule à quelque part, pour conclure une commande. Commence par régler la ligne 21, tu verras ensuite si l'autre erreur n'est pas réglée du coup.
Soyez artisans de paix

Eléphant du PHP | 57 Messages

29 avr. 2011, 10:33

Bonjour,

Alors merci de ta réponse, mais désolé de te decevoir, ma ligne 21 est une accolade fermante :lol: .
Voici le code tant attendu (je ne l'avais pas remis car il n'a pas changer depuis un de mes posts plus haut):
<?php
	$metatags = "blabla";  // à changer
	include('includes/header.php');

if (isset($_POST['choix']))
{
	$choix = $_POST['choix'];
	
	if (isset($_POST['submit']))
	{
		if ($choix == "contact/nous-contacter.php")
		{
			header('Location : contact/nous-contacter.php');
		}
		else if ($choix == "contact/devis-impression.php")
		{
			header('Location : contact/devis-impression.php');
		}
		else if ($choix == "contact/devis-textile.php")
		{
			header('Location : contact/devis-textile.php');
		}
		else if ($choix == "contact/devis-objets-pub.php")
		{
			header('Location : contact/devis-objets-pub.php');
		}
	}
}
	include('includes/liste_contact.php');
	include('includes/footer.php');
?>
et mon formulaire :
<form action="<?php echo $choix;?>" method="post">
	<table class="contact">
		<tr>
			<td bgcolor="#000" colspan="1">Selectionner l'objet de votre demande :</td>
			<td colspan="1">
				<select name="choix">
					<option value="contact/nous-contacter.php">Nous contacter</option>
					<option value="contact/devis-impression.php">Devis impression</option>
					<option value="contact/devis-textile.php">Devis textile</option>
					<option value="contact/devis-objets-pub.php">Devis objets pub</option>
				</select>
			</td>
			<td colspan="1"><input type="button" name="submit" value="Ok" onclick="document.location = '<?php echo $choix;?>'"></input></td>
		</tr>
	</table>
</form>
J'ai essayé de mettre $choix = $_POST['choix'] avant if(isset($_POST['choix']), mais du coup ma variable est indéfinie.
Cependant, elle ne l'est pas non plus si je le laisse à l'intérieur.
Je vois pas comment ca se fait qu'elle ne soit définie nulle part, ni pourquoi ma ligne de formulaire contenant le bouton m'affiche le bug graphique dont j'ai fait part plus haut.

Donc là je ne sais plus vraiment quoi faire.

En espèrant que tu pourras m'aider encore une fois :oops: ...

EDIT : Je viens de trouver pourquoi ma variable $choix m'était indiquée comme indéfinie. En effet, je l'ai insérée dans le "action" de mon formulaire, alors qu'elle est définie plus loin dans ce même formulaire. En l'enlevant je n'ai donc plus cette erreur, mais que mettre à la place ?

Eléphant du PHP | 57 Messages

29 avr. 2011, 14:03

Après avoir longuement réfléchi, je viens de m'apercevoir que comme une couillonne, j'avais mis du php dans du javascript.
Or, c'est absolument pas possible.
J'abandonne donc la piste javascript et garde l'action vers contact.php, en attendant d'avoir un script qui fonctionne.

contact.php
<?php
	$metatags = "blabla";  // à changer
	include('includes/header.php');

if (isset($_POST['choix']))
{
	$choix = $_POST['choix'];

	if (isset($_POST['Ok']))
	{
		if ($choix == "contact/nous-contacter.php")
		{
			header('Location : contact/nous-contacter.php');
		}
		else if ($choix == "contact/devis-impression.php")
		{
			header('Location : contact/devis-impression.php');
		}
		else if ($choix == "contact/devis-textile.php")
		{
			header('Location : contact/devis-textile.php');
		}
		else if ($choix == "contact/devis-objets-pub.php")
		{
			header('Location : contact/devis-objets-pub.php');
		}

	}
}
	include('includes/liste_contact.php');
	include('includes/footer.php');
?>
liste_contact.php
<br/>
<h3>COMMENT NOUS CONTACTER ?</h3>
<p>
EN SAVOIE : Z.A. Plan Cumin - 73800 Les Marches<br/>
	EN HAUTE SAVOIE : 825 route de Sallanches - 74920 Combloux <br/>
	tél : 04 79 44 86 10 - 04 50 96 10 64 fax : 09 72 15 71 60 - email : [email protected]
</p>

<form method="post" action="contact.php">
	<table class="contact">
		<tr>
			<td bgcolor="#000" colspan="1">Selectionner l'objet de votre demande :</td>
			<td colspan="1">
				<select name="choix">
					<option value="contact/nous-contacter.php">Nous contacter</option>
					<option value="contact/devis-impression.php">Devis impression</option>
					<option value="contact/devis-textile.php">Devis textile</option>
					<option value="contact/devis-objets-pub.php">Devis objets pub</option>
				</select>
			</td>
			<td colspan="1"><input type="submit" value="Ok" name="Ok"></input></td>
		</tr>
	</table>
</form>
En attendant vos idées..

Eléphant du PHP | 57 Messages

29 avr. 2011, 14:15

Bon, désepèrant de ne pas trouver de solution, j'ai du changer un petit peu mon plan, et j'ai trouvé une solution qui fonctionne à merveille, mais sans le bouton submit.

La voici :
<?php
	$metatags = "blabla";  // à changer
	include('includes/header.php');
?>
<br/>
<h3>COMMENT NOUS CONTACTER ?</h3>
<p>
adresse...
</p>

<form method="post" action="">
<table class="contact">
<tr>
<td bgcolor="#000" colspan="1">Selectionner l'objet de votre demande :</td>
			<td colspan="1">
				<select name="choix" onchange="location.href=this.value">
					<option value="#" selected="selected">---- Sélectionnez ----</option>
					<option value="contact/nous-contacter.php">Nous contacter</option>
					<option value="contact/devis-impression.php">Devis impression</option>
					<option value="contact/devis-textile.php">Devis textile</option>
					<option value="contact/devis-objets-pub.php">Devis objets pub</option>
				</select>
			</td>
		</tr>
	</table>
</form>
<?php
	include('includes/footer.php');
?>
De cette façon ca marche très bien. Merci infiniment à tous ceux qui m'ont aidés pour leur temps, ce sujet est résolu ! :mrgreen: