J'ai une liste déroulante que je construis avec PHP. Voici le code:PHP définir la valeur sélectionnée de la liste déroulante
$region_result = mysql_query("SELECT * FROM region ORDER BY region");
$dropdown = "<select name='region'>";
while($row = mysql_fetch_assoc($region_result)) {
$rid = $row["id"];
$region = $row["region"];
$dropdown .= "\r\n<option value='{$row['rid']}'>{$region}</option>";
}
$dropdown .= "\r\n</select>";
je dois définir la valeur sélectionnée de la liste déroulante après le code ci-dessus est traité. Y a-t-il un moyen facile de faire cela?
Quelqu'un a-t-il des suggestions? Merci!
EDIT:
Merci à tous pour vos réponses. Laissez-moi vous expliquer ce que je fais. Je configurais une page "Modifier les utilisateurs", dans laquelle vous pouvez rechercher un utilisateur selon plusieurs critères, puis les résultats sont répertoriés dans un "mode d'édition", c'est-à-dire dans des zones de texte et des listes déroulantes. Ainsi, vous pouvez ensuite modifier et mettre à jour un utilisateur. Pour deux champs d'utilisateur, j'ai besoin de lister les données dans des listes déroulantes (pour assurer l'intégrité des données et les contraintes). Donc, je veux montrer ces boîtes déroulantes avec toutes les valeurs possibles que vous pouvez changer, sauf que je veux que la valeur sélectionnée de la liste déroulante soit celle actuellement associée à l'utilisateur. Donc, j'ai été capable de faire fonctionner cela avec la suggestion de deceze - Dans ma boucle while qui a mes valeurs PHP avec les résultats de la base de données, j'ai inséré une boucle while imbriquée qui construira $ dropdown, et dans ce , une if-loop imbriquée. Je ne suis pas fou de toutes ces boucles imbriquées. Voici le segment de code pour que:
if (@mysql_num_rows($result)) {
while ([email protected]_fetch_assoc($result)) {
$fname = $r["fname"];
$lname = $r["lname"];
$region = $r["region"];
$role = $r["role"];
$extension = $r["extension"];
$username = $r["username"];
$building = $r["building"];
$room = $r["room"];?>
<?php
$dropdown = "<select name='region'>";
while($row = mysql_fetch_assoc($region_result)) {
$rid = $row["id"];
$region2 = $row["region"];
if($region == $region2){
$dropdown .= "\r\n<option selected='selected' value='{$row['rid']}'>{$region}</option>";
}else{
$dropdown .= "\r\n<option value='{$row['rid']}'>{$region2}</option>";
}
}
$dropdown .= "\r\n</select>";
?>
Cependant, je songe à modifier ce au remplacement du texte (proposé par soulscratch et zombat), car je pense qu'il serait mieux sur la performance.
... Cela ne semble pas fonctionner lorsque plus d'un jeu de résultats remplit les critères de recherche, cependant (comme les listes déroulantes pour les résultats 2 et 3 et etc. sont vides).
Qu'en pensez-vous?
Vous devez analyser la chaîne et trouver la bonne valeur = "" avec regex. Pourquoi ne pouvez-vous pas le faire avant qu'il ne soit traité? –
Merci pour votre aide, s'il vous plaît voir mon Edit. – littleK
Je suis tombé sur un problème similaire récemment http://stackoverflow.com/questions/8856207/creating-a-select-menu-in-php-with-default-selected-from-mysql-db/8856255# 8856255 – Ethan