8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,
Je solicite votre aide pour un petit problème technique.
J'ai le code suivant me permettant de faire différent choix et je voudrai intégrer le fait que chacune de ces oprtion me permet d'ouvrir une page différente. Comment dois-je donc faire pour intégrer cela à mon code ?????

<form id="form1" name="form1" method="post" action="">
                  <label for="Choix"></label><select name="Choix" size="1" id="Choix">
                  <option>
                     Famille de prot&egrave;ine
                  </option><option>
                     Famille de domaine 
                  </option><option>
                     Espèce
                  </option>
                  </select>
                </form>


Merci d'avance
Modérateur
Salut,

À vue de nez ton code html manque des données essentielles (attribut aux tags option et action). Logiquement, cela devrait se passer ainsi :


<form id="form1" name="form1" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>">
	<label>choix :</label>
		<select name="choix" size="1" id="Choix">
			<option value="proteine">Famille de prot&egrave;ine</option>
			<option value="domaine">Famille de domaine</option>
			<option value="espece">Espèce</option>
		</select>
</form>


en haut de cette même page que tu vas renommer en php (exemple : mon_formulaire.php). Attention, pas de ligne blanche, ni de code html avant <?php !!!

<?php
if(isset($_POST['choix'])){
	switch($_POST['choix']){
		case "proteine":
			header("location:ma_page_proteine.html"); //donner le bon chemin
			break;
		case "domaine":
			header("location:ma_page_domaine.html"); //donner le bon chemin
			break;
		case "espece":
			header("location:ma_page_espece.html");//donner le bon chemin
			break;
	}
}
?>


Cela devrait être un truc dans ce goût là. Il se peut qu'il y ait un petit bogue car je n'ai pas la possibilité de déboguer là où je suis.

<<<EDIT
Logiquement, ton sujet ne devrait pas être posté sur ce canal. Plutôt vers le langage serveur.
EDIT;

++
Modifié par Nolem (10 Apr 2009 - 11:59)
Thx you so much

je viens de me mettre à la programmation et le php est new pour moi mais c'est interressant !!!
Modérateur
Yuki_Hime a écrit :
Thx you so much

je viens de me mettre à la programmation et le php est new pour moi mais c'est interressant !!!


re,

Attention, je te conseille fortement de commencer par le html et le maîtriser avant de te lancer dans un autre langage. Prend le temps d'apprendre auprès de certains membres du forum. Ici, tu vas avoir la possibilité de te faire la main sur le html et le maîtriser. Moi même qui connait assez bien, j'en apprend encore. C'est la raison pour laquelle, je passe régulièrement. Si tu as des questions, n'hésite pas.

Je me suis aperçu de deux pétouilles après relecture ce soir : (l'oublie de la première est pas mal, mais bon la fatigue me gagne Smiley ohwell .


<form id="form1" name="form1" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>">
	<label>choix :</label>
		<select name="choix" size="1" id="Choix">
			<option value="proteine">Famille de prot&egrave;ine</option>
			<option value="domaine">Famille de domaine</option>
			<option value="espece">Espèce</option>
		</select>
		[b]<input type="submit" name="envoi" value="choisir" />[/b]

</form>


et :

<?php
if(isset($_POST['choix'])){
	switch($_POST['choix']){
		case "proteine":
			header("location:ma_page_proteine.html"); //donner le bon chemin
		case "domaine":
			header("location:ma_page_domaine.html"); //donner le bon chemin
		case "espece":
			header("location:ma_page_espece.html");//donner le bon chemin
	}

}
?>


Et pour finir, là je t'ai donné une solution côté serveur. Il y a surement une solution AJAX ou JS. Sur le JS ou l'AJAX, je ne peux pas vraiment t'aider. Toutefois, je pense qu'une âme charitable du forum t'aidera.

++
Modifié par Nolem (10 Apr 2009 - 22:51)
Salut,

encore un peu fatigué Nolem ? Smiley cligne

Pour ce qui est du html ce serait plutôt :
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
	<p>
		<label for="choix">choix :</label>
		<select name="choix" id="choix">
			<option value="proteine">Famille de protéine</option>
			<option value="domaine">Famille de domaine</option>
			<option value="espece">Espèce</option>
		</select>
	</p>
	<p>
		<input type="submit" />
	</p>
</form>
Ne rajouter un id à l'élément FORM que s'il est utile (css ou JavaScript) et garder l'attribut for de LABEL pour des raisons d'ergonomie et dans le cas des lecteurs d'écrans d'accessibilité.

Pour le php :
<?php
if(isset($_POST['choix'])){
	switch($_POST['choix']){
		case "proteine":
			header("location: ma_page_proteine.html"); //donner le bon chemin
			break;
		case "domaine":
			header("location: ma_page_domaine.html"); //donner le bon chemin
			break;
		case "espece":
			header("location: ma_page_espece.html");//donner le bon chemin
			break;
	}
}
?>
Avec Javascript ça pourrait donner:


<p>
	<label for="choix">choix :</label>
	<select name="choix" id="choix">
		<option value="proteine">Famille de protéine</option>
		<option value="domaine">Famille de domaine</option>
		<option value="espece">Espèce</option>
	</select>
</p>
<p>
	<button onClick="window.location='page_'+document.getElementsById("choix").value+'.html';">Valider</button>
</p>

En admetant que tes pages s'appellent page_SUJETDELAPAGE.html

On pourrait même mettre le JS sur le onChange du select pour économiser un clic bouton à l'utilisateur (simplicity is powerfull), mais ça lui retire le droit à l'erreur de click sur le selecteur.
Salut,

Karedas a écrit :
On pourrait même mettre le JS sur le onChange du select pour économiser un clic bouton à l'utilisateur (simplicity is powerfull)
But accessibility is better than simplicity ! Smiley cligne

A ce sujet (pourquoi ne pas utiliser onchange et pourquoi préférer onsubmit à onclick) lire Comment bien coder en Javascript.
Modifié par Heyoan (11 Apr 2009 - 02:37)
Modérateur
Heyoan a écrit :

...
Ne rajouter un id à l'élément FORM que s'il est utile (css ou JavaScript) et garder l'attribut for de LABEL pour des raisons d'ergonomie et dans le cas des lecteurs d'écrans d'accessibilité.
...


Salut,

Pour l'id, j'ai décidé de le laisser volontairement ne sachant pas comment aller mettre en page Yuki_Hime.

Merci pour cette petite « astuce » du for. Je ne le savais pas du tout. D'ailleurs, j'ai fait une petite vérif sur le net. Dans le doute, j'ai préféré le supprimer. Smiley confused

En ce qui concerne l'input submit. N'est il pas préférable de mettre les principaux attributs :

<input type="submit" name="envoi" value="choisir" />


Après réflexion, j'ai opté de supprimer l'instruction break du switch. Si je ne dis pas de bêtises, le header met fin au script n'est ce pas ?

<hs>
En effet, en ce moment je me paie des morceaux de fatigue.
</hs>

Bonne soirée à vous
Modifié par Nolem (11 Apr 2009 - 22:01)
Nolem a écrit :
En ce qui concerne l'input submit. N'est il pas préférable de mettre les principaux attributs
Encore une fois cela dépend de ce que tu veux faire : si tu n'as pas besoin de récupérer la valeur autant ne pas renseigner le name et c'est pareil pour le value (même si c'est plus rare puisque la valeur par défaut n'est pas la même selon le navigateur).

Nolem a écrit :
Après réflexion, j'ai opté de supprimer l'instruction break du switch. Si je ne dis pas de bêtises, le header met fin au script n'est ce pas ?
Eh bien non : seul le dernier sera interprété si tu ne mets pas de break (ou dans ce cas bien précis un die ou un exit). Smiley cligne
Modifié par Heyoan (12 Apr 2009 - 00:12)
Nolem a écrit :


re,

Attention, je te conseille fortement de commencer par le html et le maîtriser avant de te lancer dans un autre langage. Prend le temps d'apprendre auprès de certains membres du forum. Ici, tu vas avoir la possibilité de te faire la main sur le html et le maîtriser. Moi même qui connait assez bien, j'en apprend encore. C'est la raison pour laquelle, je passe régulièrement. Si tu as des questions, n'hésite pas.

Je me suis aperçu de deux pétouilles après relecture ce soir : (l'oublie de la première est pas mal, mais bon la fatigue me gagne Smiley ohwell .


<form id="form1" name="form1" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>">
	<label>choix :</label>
		<select name="choix" size="1" id="Choix">
			<option value="proteine">Famille de prot&egrave;ine</option>
			<option value="domaine">Famille de domaine</option>
			<option value="espece">Espèce</option>
		</select>
		[b]<input type="submit" name="envoi" value="choisir" />[/b]

</form>


et :

<?php
if(isset($_POST['choix'])){
	switch($_POST['choix']){
		case "proteine":
			header("location:ma_page_proteine.html"); //donner le bon chemin
		case "domaine":
			header("location:ma_page_domaine.html"); //donner le bon chemin
		case "espece":
			header("location:ma_page_espece.html");//donner le bon chemin
	}

}
?>


Et pour finir, là je t'ai donné une solution côté serveur. Il y a surement une solution AJAX ou JS. Sur le JS ou l'AJAX, je ne peux pas vraiment t'aider. Toutefois, je pense qu'une âme charitable du forum t'aidera.

++
Nolem a écrit :


re,

Attention, je te conseille fortement de commencer par le html et le maîtriser avant de te lancer dans un autre langage. Prend le temps d'apprendre auprès de certains membres du forum. ....C'est la raison pour laquelle, je passe régulièrement. Si tu as des questions, n'hésite pas.


Je suis en plein stage (pour 5mois et j'ai commencé ya une semaine) donc je peux pas y allé trankilou

Nolem a écrit :

Et pour finir, là je t'ai donné une solution côté serveur. Il y a surement une solution AJAX ou JS. Sur le JS ou l'AJAX, je ne peux pas vraiment t'aider. Toutefois, je pense qu'une âme charitable du forum t'aidera.

++

Je ne fais pas du java et je ne fais pas encore du php orienté objet vu que je viens de commencer, mais je passeri souvent pour vos conseils et astuces !!
Heyoan a écrit :
Salut,

encore un peu fatigué Nolem ? Smiley cligne

Pour ce qui est du html ce serait plutôt :
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
	<p>
		<label for="choix">choix :</label>
		<select name="choix" id="choix">
			<option value="proteine">Famille de protéine</option>
			<option value="domaine">Famille de domaine</option>
			<option value="espece">Espèce</option>
		</select>
	</p>
	<p>
		<input type="submit" />
	</p>
</form>
Ne rajouter un id à l'élément FORM que s'il est utile (css ou JavaScript) et garder l'attribut for de LABEL pour des raisons d'ergonomie et dans le cas des lecteurs d'écrans d'accessibilité.

Pour le php :
<?php
if(isset($_POST['choix'])){
	switch($_POST['choix']){
		case "proteine":
			header("location: ma_page_proteine.html"); //donner le bon chemin
			break;
		case "domaine":
			header("location: ma_page_domaine.html"); //donner le bon chemin
			break;
		case "espece":
			header("location: ma_page_espece.html");//donner le bon chemin
			break;
	}
}
?>

On ne le dit pas souvent mais $_SERVER['PHP_SELF'] est fourni par le client donc vulnérable à toute sorte d'injection. Il faut donc utiliser htmlspecialchars quand on l'affiche Smiley cligne
Bien vu Heyoan Smiley cligne
Modifié par luc@s (15 Apr 2009 - 11:08)