Récuperer une valeur en php depuis un menu déroulant sans "POST"

gub156 Messages postés 19 Statut Membre -  
ThEBiShOp Messages postés 9307 Statut Contributeur -
Bonjour,

Je crée ici un nouveau topic car j'ai pas mal fouillé internet sans trouver de réponse précise à ma question (peut-être ai-je mal cherché...)

Je suis débutant en php et je suis devant un problème: je souhaiterais récuperer une valeur d'un menu déroulant à l'aide d'un cookie, mais cela sans bouton "submit".

Plus concrétement, il s'agit d'un menu déroulant permettant la sélection de la langue du site web. Lors d'un changement de langue, je souhaiterais mettre à jour le cookie et rafraîchir le page de manière à l'afficher dans le langue choisie.

Voici le bout de code que j'ai tenté vainement...


	<form>
		<select name="language" size="1" <?php $language ?>>
			<option value='1'>English</option>
			<option value='2'>Français</option>
			<option value='3'>Deutsch</option>
		</select>
	</form>



Je compare ensuite la variable $language au cookie et effectue les opérations nécessaires en fonction du résultat de la comparaison.


	if(isset($language))
	{
		if($language != $_COOKIE['language'])	
		{
			$_COOKIE['language'] = $language;
			$file = $_SESSION['file'];
			header("Location: /../$file");
		}
	}




Est-ce d'une manière ou d'une autre possible d'effectuer ce type d'opération?


D'avance merci pour votre aide.

Gub156



A voir également:

6 réponses

ThEBiShOp Messages postés 9307 Statut Contributeur 1 566
 
Bonjour,

si j'ai bien compris, tu souhaites que lorsque tu choisis une ligne de ta liste, ça envoie le formulaire.
En théorie il te faut un bouton submit pour ça, mais on peut "simuler" ce comportement via javascript.

<head>
<script type="text/javascript">
    $(document).ready(function(){
        $('#language').change(function(){
            var url = 'http://www.monsite.com/mapage.php' + '?language=' + $('#language').val(); 
            window.location.href = url;
        });        
    });
</script>
</head>
<body>
  <form>
		<select id="language" name="language" size="1">
			<option value='eng'>English</option>
			<option value='fr'>Français</option>
			<option value='de'>Deutsch</option>
		</select>
	</form>
</body>


ensuite tu dois récupérer ta langue via $_GET.

A quoi sert ton <?php $language ?> dans ton form ?
0
gub156 Messages postés 19 Statut Membre
 
Bonjour TheBiShOp,

Tout d'abord, merci pour ta réponse plus que rapide. Je vais essayer ta solution après ce message et je redonnerai des nouvelles sur ce fil dès que possible.

Au sujet de mon code, <?php $language ?> était un essai.... non concluant. Je tentais de récupérer la valeur du menu à travers cette variable.

Encore merci!


Gub
0
gub156 Messages postés 19 Statut Membre
 
Rebonjour,

Voilà comment j'ai adapté le code de TheBiShOp. Cependant, cela ne fonctionne pas dans mon cas.


// Javascript

<script type="text/javascript">
	$(document).ready(function()
	{
		$('#language').change(function()
		{
			var url = '/../$_SESSION['file']' + '?language=' + $('#language').val(); 
			window.location.href = url;
		});        
	});
</script>


// Formulaire HTML

<div id="language">
	<p>
		<form>
			<select id="language" name="language" size="1" >
				<option value='1'>English</option>
				<option value='2'>Français</option>
				<option value='3'>Deutsch</option>
			</select>
		</form>
	</p>
</div>

<?php		

// Récupération de la variable en php

	if(isset($_GET["language"]))
	{
		if($_GET["language"] != $_COOKIE['language'])	
		{										
			$_COOKIE['language'] = $_GET["language"];
			$file = $_SESSION['file'];
			header("Location: /../$file");
		}
	}
}
?>



Rien ne se passe lors du changement de langue, pas même le rafraîchissement de la page web.

Ne connaissant pas le javascript (je découvre le php/MySql, alors un à la fois!), je ne suis pas certain d'avoir utilisé les bonnes syntaxes et surtout d'avoir compris le fonctionnement du script.

Encore une fois, merci pour votre aide.


Amicalement,

Gub
0
ThEBiShOp Messages postés 9307 Statut Contributeur 1 566
 
j'ai oublié de te donner un bout, tu dois mettre ça dans le head de ta page


<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gub156 Messages postés 19 Statut Membre
 
Merci TheBiShOp pour ta réponse.

Cependant, ta solution ne fonctionne toujours pas chez moi.
As-tu eu le temps de jeter un coup d'oeil à mon code ci-dessus? Peut-être y a-t-il une faute liée au fait que je ne maitrise pas du tout le javascript.

D'avance merci.


Gub
0
ThEBiShOp Messages postés 9307 Statut Contributeur 1 566
 
quand tu clic sur une des options, il y a un chargement de page ?
0