2010-10-29 6 views
0

J'ai quelques problèmes avec cela.remplir la boîte de sélection avec des données mysql

J'ai une base de données avec les tableaux suivants: pays -> Tous les pays du monde sont ajoutés Villes -> Les villes sont également ajoutées user_profile -> Le profil de l'utilisateur avec les champs « pays » & " ville".

Tout fonctionne bien, même le remplissage des boîtes fonctionne. Mais je ne sais pas comment obtenir la valeur SÉLECTIONNÉE de l'utilisateur pour les deux pays & ville.

J'ai le code suivant:

Select Country: <br /> 
<select id="countries"> 
<option value="">--</option> 

<?php 
$sql = "SELECT country, title FROM countries ORDER BY title ASC"; 

$rs = mysql_query($sql); 

while($row = mysql_fetch_array($rs)) 
{ 
    echo "<option value=\"".$row['country']."\">".$row['title']."\n "; 
} 
?> 
</select> 


Select City: <br /> 
<select id="cities"> 
<option value="">Select one</option> 

<?php 
$sql = "SELECT country, title FROM cities ". 
"ORDER BY title ASC"; 

$rs = mysql_query($sql); 

while($row = mysql_fetch_array($rs)) 
{ 
    echo "<option class=\"".$row['country']."\" value=\"".$row['title']."\">".$row['title']."\n "; 
} 
?> 
</select> 

Maintenant je dois vérifier dans le tableau user_profile quel pays & ville et il a choisi de le montrer à lui. J'utilise également jchained (jquery plugin) pour que les deux boîtes de sélection fonctionnent ensemble.

Comment puis-je y parvenir? Si je dois poster autre chose, s'il vous plaît faites le moi savoir.

Merci d'avance.

Répondre

2

Vous avez beaucoup de code manquant ici mais je vais essayer de vous aider.

Je vais commencer en supposant que vous avez déjà stocké les sélections d'utilisateurs dans la table user_profile et qu'elles sont des clés étrangères pour corriger les relations.

Pour obtenir l'ID sélectionné est pour repeupler les boîtes de sélection avec l'utilisation du drapeau sélectionné:

SELECT country, city FROM user_profile where id = $user_id; 

Pour obtenir le texte des valeurs que vous feriez quelque chose comme:

SELECT country.title as country, city.title FROM user_profile LEFT JOIN countries ON user_profile.country = country.id LEFT JOIN cities ON user_profile.city = cities.id WHERE user_profile.id = $user_id; 

Si vous ne stockez pas eux comme des relations de clés étrangères, mais à la place par titre de chaîne dans la table user_profile, vous devrez faire ceci:

SELECT country.title as country, city.title FROM user_profile LEFT JOIN countries ON user_profile.country = country.title LEFT JOIN cities ON user_profile.city = cities.title WHERE user_profile.id = $user_id; 

Vous pouvez ensuite utiliser ces résultats pour afficher à l'utilisateur ou définir le drapeau "SELECTED" dans la boîte d'options.

+0

Salut Harmon, Merci pour votre aide. Je pense que je ferais mieux de vous fournir plus de codes. Les sélections de l'utilisateur sont stockées dans la page user_profile dans les champs "country" et "city". Les deux champs sont également disponibles dans les tableaux "pays" et "villes", donc je pensais les utiliser comme clé étrangère. Je pense que votre deuxième option est proche de la réponse, mais j'ai encore besoin de polir la boîte de sélection et de sélectionner le pays et la ville choisie par l'utilisateur. – moonwalker

+0

Il signifie simplement utiliser cette requête pour obtenir ce que l'utilisateur a sélectionné. Effectuez toujours la requête pour obtenir tous les autres pays et villes possibles. –

+0

Merci Aaron et Harmon! – moonwalker

1

Voulez-vous dire que vous ne savez pas quoi faire après avoir sélectionné les valeurs? Si c'est le cas, vous utiliserez simplement le formulaire pour publier les valeurs sur la nouvelle page. Sur la page de réception, vous pouvez exécuter une requête pour mettre à jour le profil de l'utilisateur.

Désolé si ma réponse est pas assez détaillée> <

modifier Oh, je voir ce que vous voulez dire maintenant. Vous pouvez le stocker correctement mais vous voulez que l'option correcte soit marquée comme sélectionnée si c'est ce que l'utilisateur a précédemment défini? Si c'est le cas, vous pouvez demander la valeur, puis à l'intérieur de la boucle while il suffit d'ajouter une vérification pour voir si $user_country == $row['country'] et si oui echo ' SELECTED '. J'espère que cela pourra aider!

+0

Merci pour votre réponse. Ouais c'est ce que je veux réaliser, mais je ne sais pas comment implémenter la requête SQL pour le faire. ;) – moonwalker

+0

SELECT pays, ville FROM user_profile où id = $ id_utilisateur; –

+0

Oui, comme l'a dit Harmon. –

Questions connexes