2009-02-22 4 views
0

Je sais que c'est une question similaire à celle déjà posée, mais j'espérais une réponse différente à un problème. J'ai un formulaire où vous pouvez télécharger de nouveaux articles à une base de données tous les bons travaux, merveilleux, brill. Le formulaire utilise un menu déroulant pour le type d'article, j'ai des nouvelles, potins, voyages, performances et autres dans ma liste déroulante. Lorsque vous téléchargez sur la base de données, il suffit d'ajouter l'élément sélectionné disons, dans ce cas, Nouvelles.Comment remplir un bouton radio ou une liste déroulante lors de la modification à partir d'une base de données?

J'ai besoin de l'utilisateur pour pouvoir éditer leurs articles, donc j'ai besoin de remplir la liste déroulante avec l'élément sélectionné. Je pense que c'est un peu pénible dans le BUM de mettre en place une table de base de données avec chacun des objets drop et un ID pour eux. Est-il absent de la définition de l'élément sélectionné en tant que valeur dans la base de données, puis en utilisant simplement une instruction if ou quelque chose pour remplir le reste de la liste déroulante?

Espérons que cela a du sens. Je pensais également que l'utilisation d'un bouton radio pourrait être une solution mais je ne peux pas obtenir cela pour définir le bouton sélectionné avec la valeur dans le db.

Répondre

2

Vous pourriez faire quelque chose comme ceci:

// array of available options 
$available = array('news'=>'News', 'gosip'=>'Gosip', 'travel'=>'Travel', 'performances'=>'Performance'); 
// selected option value 
$selected = 'news'; 
echo '<select name="article-type">'; 
foreach ($available as $val => $label) { 
    echo '<option value="'.htmlspecialchars($val).'"'; 
    if ($val == $selected) { 
     echo ' selected="selected"'; 
    } 
    echo '>'.htmlspecialchars($label).'</option>'; 
} 
echo '</select>'; 
1

Semble que vous voulez mettre les types d'article dans une table ou quelque chose du genre.

Ensuite, vous pouvez charger la liste déroulante de la table, et simplement stocker une référence à l'ID de type d'article dans la table article. Sur le plus, il devrait rendre la récupération de tous les articles d'un type donné un peu plus rapide que la recherche sur l'ID.

+0

Oui, semble logique. – Cerebrus

0
$options = array(,); 
$selection = filter_input(INPUT_POST, 'what'); 
$blah = true; //i don't know what to name this. 
foreach($options as $option) { 
    echo '....'; 
    if(isset($blah) && $option === $selection) { 
     echo 'selected="selected"'; 
     unset($blah); 
    } 
} 

Ceci est probablement le moyen le plus rapide. Aussi si vous allez pour la vitesse assurez-vous de profiter de echo's multiple parameters.

1

Il me semble que c'est plus un problème de conception de base de données qu'autre chose. Votre conception de base semble défectueuse. J'essaie de déduire le problème de votre question, alors, si je ne suis pas sur la bonne voie.

est ici une partie pertinente de la conception, comme il devrait être, l'OMI:

Tableau: Articles


ArticleID 
ArticleContent 
ArticleSubject (FK from Subjects) 
.. 
.. 
.. Other columns. 

Tableau: Matières


SubjectID 
SubjectDescription 
.. 
.. 
.. Other columns. 

Notez que j'ai appelé la deuxième table Sujets pour mieux illustrer mon implication. De cette façon, chaque article a une référence à un type d'article (sujet). Maintenant, lorsque vous récupérez des données pour la liste déroulante "Types d'articles", vous récupérez simplement toutes les lignes de la deuxième table, puis définissez l'élément sélectionné en fonction de la sélection en cours (à partir de la première table.)

Questions connexes