2011-09-10 3 views
1

Je sais comment créer une liste déroulante, mais si vous deviez créer un formulaire où l'une des entrées est un état (un mot de deux lettres) dans une liste déroulante, est-ce que je entrer l'état un par un ou dois-je stocker l'état dans une base de données?créer une liste déroulante d'état

+0

utiliseriez-vous le db pour autre chose? – kinakuta

+0

Eh bien ... pas vraiment, j'ai une table dans la DB pour remplir une liste déroulante ainsi .. mais cela semble logique que les utilisateurs pourraient ajouter plus d'options à la liste déroulante .. – adit

+0

Je ne voudrais pas déranger avec une table pour les états sauf si vous alliez l'utiliser dans votre db à d'autres fins. C'est exagéré autrement. – kinakuta

Répondre

0

C'est une question un peu étrange. En fonction de votre projet bien sûr.

Si vous avez besoin de performances et de rapidité, lors du chargement de votre liste déroulante (je suppose que vous vouliez dire <select />). Ensuite, vous pourriez vouloir les mettre dans un fichier séparé .php dans un formulaire de tableau. Donc plus tard, vous pouvez simplement les boucler avec foreach(). Cette méthode va sûrement charger plus rapidement, puis charger 50 états de DB.

inc-states.php:

$states = array(
    1 => 'Alabama', 
    2 => 'Indiana', 
    3 => 'Nevada' 
    // etc.. 
); 

Generate forme:

echo '<select name="states">'; 
foreach ($states as $key => $state) { 
    echo '<option value="' . $key . '">' . $state . '</option>'; 
} 
echo '</select>'; 

Donc, après avoir affiché vous n'enregistrer les clés. Plus tard vous pouvez à nouveau obtenir le bon état via la touche:

include('inc-states.php') 

$user['state'] = 2; // Lets make a default for this example 

print $states[$user['state']]; // outputs Indiana 

idée de base reste identique à la méthode DB ainsi. Seulement cela est probablement plus rapide .. À moins bien sûr que vous voulez être en mesure d'éditer les états via une sorte de console d'administration.

REMARQUE: Vous avez en fait uniquement indiqué deux shortcodes de caractères, mais mon exemple de tableau semble plus joli avec des titres complets. De toute façon, comme vous le savez probablement, vous pouvez mettre les états dans n'importe quel format dans le tableau.

1

Une liste d'états n'est vraiment pas mise à jour si souvent, et il semble être trop compliqué d'utiliser une base de données pour les stocker. Je ne sais pas quelle est votre technologie principale, mais je créerais probablement un contrôle déroulant d'état (ou tout ce qui est passé pour un contrôle dans votre environnement) qui peut être utilisé dans plusieurs endroits, donc dans de rares cas, vous devez modifier votre état liste, c'est seulement fait dans un seul endroit. Vous pouvez également stocker les états sous forme de liste dans un système de configuration, mais je ne peux pas donner plus de détails sans en savoir plus sur votre pile.

+0

c'est PHP, et MySQL est dans le db – adit

+0

Dans ce cas, vous pouvez inclure() un fichier qui contient votre liste déroulante d'état. Vous pourriez les mettre dans une boucle comme suggéré par Kalle. –

0

Je mettrais la liste dans une base de données, de cette façon si vous voulez stocker des identifiants pour des références au lieu d'enregistrer le texte d'état, il serait plus facile de gérer une base de données relationnelle de cette façon.

+0

Le stockage d'un état à 2 caractères dans vos tables ne prendra vraisemblablement qu'un octet de plus que si vous avez stocké un tinyint référençant une table de recherche et cela signifie que chaque fois que vous voulez voir quel état quelqu'un a sélectionné, vous devez vous joindre à une table de recherche. Dans ce cas trivial, je ne pense pas que la normalisation soit souhaitable. –

+1

Dans une base de données, deux caractères occupent moins d'espace qu'un ID. Ce serait plus rapide, plus simple, et utiliser moins d'espace pour stocker les deux lettres que de stocker un ID et un lien vers la table qui a deux lettres. –

+0

Très vrai, j'ai une base de données d'états, et dans cette base de données, j'ai des codes d'état, état nom complet, ID, Lat, Long, .... etc.Si vous n'utilisez que les deux lettres, que oui, je suis d'accord, il ne serait pas logique de les stocker dans la base de données, avec un identifiant. – NateB

Questions connexes