Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/12/2010, 03h45   #1
Membre habitué
 
Inscription : décembre 2007
Messages : 392
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : décembre 2007
Messages : 392
Points : 118
Points : 118
Par défaut variables PHP avec GET et Select

Je voudrais faire passer plusieurs variables PHP avec GET et que l'une des variable provienne d'un select.

J'ai ecrit cela mais j'obtiens comme url http://www.xxxxxx.com/index.php?test=10
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
 
echo "<form action='index.php' method='GET'>";
echo "<select class='test'  name='test' onchange='top.location.href = '\index.php?catpays='.$catpays.'&catdistance='+this.form.test.value;'>
	<option value='10'>10 Km</option><BR>
	<option value='20'>20 Km</option><BR>
	<option value='50'>50 Km</option><BR>
	<option value='100'>100 Km</option><BR>
	<option value='200'>200 Km</option><BR>";
echo "</select>";
echo "<input type='submit' value='Ok' />";
echo "</form>";
?>
Pouvez vous m'aider?

Merci
voyageurdumonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 06h36   #2
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 699
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 699
Points : 3 269
Points : 3 269
Salut

Je ne vois pas trop pourquoi mettre un lien sur le onchange ?

Normalement on met un onchange sur un SELECT pour soumettre le formulaire où il se trouve lors d'un choix parmi la liste.
Du coup, un bouton submit devient par la même occasion inutile (ça fait doublon).

Ensuite, s'il y a des paramètres à transmettre, et là ça dépend de la méthode GET ou POST, et selon comment on souhaite les transmettre.

Dans ton cas, c'est le plus simple, c'est en GET, suffit de les rajouter dans des champs cachés.
Exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
<form action="index.php" method="get">
<input type="hidden" name="catpays" value="<?php echo $catpays; ?>" />
<select  name="catdistance" class="test" onchange="this.submit()">
	<option value="10">10 Km</option>
	<option value="20">20 Km</option>
	<option value="50">50 Km</option>
	<option value="100">100 Km</option>
	<option value="200">200 Km</option>
</select>
</form>
Le nom du SELECT est "catdistance", au submit (onchange) ça sera une des valeurs qui sera transmise (10 ou 20, ... ou 200), et pourra être récupérée par $_GET['catdistance'].
Même chose pour "catpays".
A savoir qu'il est théoriquement inutile de mettre des BR aux OPTIONS.


Mais comme c'est la même page (ou cadre, c'est pareil) qui sera rechargée à chaque nouveau choix de la distance, il est bon de vérifier quelle est la distance choisie si tel est le cas et la pré-sélectionner.
S'il n'y a pas eu encore de choix, il faudrait en déterminer 1 par défaut, la 1ère en général.
Du coup, créer un tableau Php des différentes distances permettra de gérer ça plus simplement.
Exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Les distances :
$distances = array(
    array('value' => 10, 'text' => '10 Km'),
    array('value' => 20, 'text' => '20 Km'),
    array('value' => 50, 'text' => '50 Km'),
    array('value' => 100, 'text' => '100 Km'),
    array('value' => 200, 'text' => '200 Km')
);
 
// Distance par défaut
if (isset($_GET['catdistance']) && (int)$_GET['catdistance'] > 0) {
    // Distance obtenue en paramètre
    $catdistance = (int)$_GET['catdistance'];
}
else {
    // 1ère valeur par défaut
    $catdistance = $distances[0]['value'];
}
 
 
// Formulaire + menu déroulant catdistance
echo '<form action="index.php" method="get">';
echo '<input type="hidden" name="catpays" value="'.$catpays.'" />';
//
echo '<select name="catdistance" class="test" onchange="this.submit()">';
//
foreach ($distances as $distance) {
    $selected = ($catdistance == $distance['value']) ? 'selected="selected"': '';
    echo '<option value="'.$distance['value'].'" '.$selected.'>'.$distance['text'].'</option>';
}
//
echo '</select>';
//
echo '</form>';
J'ai pas du tout testé, mais théoriquement le principe est correcte.
En supposant avoir compris ce que tu souhaitais faire.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 14h28   #3
Membre habitué
 
Inscription : décembre 2007
Messages : 392
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : décembre 2007
Messages : 392
Points : 118
Points : 118
Merci RunCodePhp pour ces explications, par contre si je dois passer plus d'un variable (catpays, catregions catvilles) comment fait-on?

J'ai fait mais ca ne fonctionne pas

Code :
1
2
3
<input type="hidden" name="catpays" value="<?php echo $catpays; ?>" />
<input type="hidden" name="catregions" value="<?php echo $catregions; ?>" />
<input type="hidden" name="catville" value="<?php echo $catville; ?>" />
Merci
voyageurdumonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 14h33   #4
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
si tu utilises la methode GET,

tu récupéres comme suit :

Code php :
1
2
3
4
 
$_GET['catpays'];
$_GET['catregions'];
...
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 02h34   #5
Membre habitué
 
Inscription : décembre 2007
Messages : 392
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : décembre 2007
Messages : 392
Points : 118
Points : 118
Merci

comme un abruti j'avais place les GET a la mauvaise place dans le fichier
voyageurdumonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h54.


 
 
 
 
Partenaires

Hébergement Web