2010-10-08 12 views
-1

Je dessinerai les options pour la seconde balise de sélection d'une base de données.Comment utiliser PHP pour remplir une seconde balise select avec des options basées sur l'option sélectionnée dans la première balise select?

Merci.

+0

Ceci est souvent fait en utilisant JavaScript, donc l'utilisateur n'a pas besoin de recharger la page. Est-ce que ça doit être PHP? –

+0

Je pense qu'il faut le PHP back-end pour un appel AJAX – stevendesu

+0

Je suis d'accord avec steven_desu – ITroubs

Répondre

0

vous devez utiliser ajax pour effectuer cela sans soumettre de page.

Ou simplement soumettre la page faire soi-même l'action (le même php).

chèque s'il y a $ _POST [select1value]

remplir puis de db dans la deuxième sélectionnez

<select2> 
<?php 
if(($_POST['submit']) && ($_POST['select1'])) 
{ 
?> 

<option1> of select2</option> 

<? 
} 
?> 

Thats it.

Mais AJAX est bien si vous wan à utiliser

+0

merci. Je soumets le formulaire à l'événement onchange du premier select avec l'action pointant vers le même fichier et avec un code PHP similaire. – systemovich

+0

Bien. Quoi qu'il en soit, vous essayez un peu d'ajax quand vous avez le temps. Cette population dropdown est le meilleur exemple pour ajax. Essayer. http://www.w3schools.com/ajax/ajax_database.asp – zod

0

En général, vous avez une table pour chaque boîte de sélection. Voici un exemple:

table1: 
    id | item | extra_info 
    1 | 1 | ... 
    2 | 2 | ... 
    ...  ...  ... 

table2: 
    id | prev_choice | item 
    1 |  1  | 1_a 
    2 |  1  | 1_b 
    3 |  2  | 2_a 
    4 |  2  | 2_b 
    ...  ...   ... 

De cette façon, vous recherchez juste pour tout élément table2 avec un « prev_choice » basé sur tout ce qui a été sélectionné auparavant. Par exemple, si la première table contenait une liste de continents, la table deux pourrait contenir une liste de pays où "prev_choice" fait référence au continent dans lequel se trouve ce pays.

La requête SQL ressemblerait à quelque chose comme:

SELECT * FROM table2 WHERE prev_choice LIKE {$_GET["selected"]} 
1

solution non-javascript:

Demandez à l'utilisateur soumettre le formulaire que la sélection est, donc les valeurs serait GET/POST. Lorsque la page réapparaît, PHP peut accéder aux variables pour assembler la deuxième étiquette de sélection.

Quelque chose comme ceci:

<form action='' method='post'> 
<select name='select1'> 
    <option value='blah'>blah</option> 
</select> 

<?PHP if(isset($_POST['select1']) { 
/* call DB and get infos */ 
echo "<select>"; 

/* FOR loop echoing <option>info</option> */ 

echo "</select>"; ?> 
</form> 

ai pas testé, mais devrait être OK ish.

1

Il n'y a pas besoin d'utiliser Ajax du tout si les tables sont petites. Vous pouvez simplement construire chaque deuxième case de sélection possible et la cacher sur la page et afficher celle qui convient en fonction de la sélection de l'utilisateur. Ceci est encore plus rapide que Ajax et ne nécessite aucun rechargement de page ou requête http.

Si les tables sont trop grandes, ou si la deuxième zone de sélection peut contenir des données dépendantes de l'utilisateur, cela n'est évidemment pas possible.

Questions connexes