2008-10-14 4 views
5

J'ai une table («lieux») qui stocke tous les lieux possibles où un bénévole peut travailler, chaque bénévole est affecté à un lieu de travail. Je veux créer une sélection déroulante à partir de la table des lieux.Remplir la liste déroulante d'une table de base de données

À l'heure actuelle, je peux afficher le lieu où chaque bénévole est affecté, mais je veux qu'il affiche la liste déroulante, avec le lieu déjà sélectionné dans la liste.

<form action="upd.php?id=7"> 
<select name="venue_id"> 
<?php //some sort of loop goes here 
print '<option value="'.$row['venue_id'].'">'.$row['venue_name'].'</option>'; 
//end loop here ?> 
</select> 
<input type="submit" value="submit" name="submit"> 
</form> 

Par exemple, bénévole avec l'id de 7, est affecté à venue_id 4

<form action="upd.php?id=7"> 
<select name="venue_id"> 
    <option value="1">Bagpipe Competition</option> 
    <option value="2">Band Assistance</option> 
    <option value="3">Beer/Wine Pouring</option> 
    <option value="4" selected>Brochure Distribution</option> 
    <option value="5">Childrens Area</option> 
    <option value="6">Cleanup</option> 
    <option value="7">Cultural Center Display</option> 
    <option value="8">Festival Merch</option> 
</select> 
<input type="submit" value="submit" name="submit"> 
</form> 

Brochure Distribution option will already be selected when it displays the drop down list, because in the volunteers_2009 table, column venue_id is 4. 

Je sais que cela prendra la forme d'une boucle for ou while pour tirer la liste des lieux de la table de lieux

Ma requête est:

$query = "SELECT volunteers_2009.id, volunteers_2009.comments, volunteers_2009.choice1, volunteers_2009.choice2, volunteers_2009.choice3, volunteers_2009.lname, volunteers_2009.fname, volunteers_2009.venue_id, venues.venue_name FROM volunteers_2009 AS volunteers_2009 LEFT OUTER JOIN venues ON (volunteers_2009.venue_id = venues.id) ORDER by $order $sort"; 

Comment puis-je remplir la liste déroulante, sélectionnez l'esprit de boîte h les lieux (volunteers_2009.venue_id, lieux.id) de la table des lieux et qu'il présélectionne le lieu de la liste?

Répondre

17
$query = "SELECT volunteers_2009.id, volunteers_2009.comments, volunteers_2009.choice1, volunteers_2009.choice2, volunteers_2009.choice3, volunteers_2009.lname, volunteers_2009.fname, volunteers_2009.venue_id, venues.venue_name FROM volunteers_2009 AS volunteers_2009 LEFT OUTER JOIN venues ON (volunteers_2009.venue_id = venues.id) ORDER by $order $sort"; 

$res = mysql_query($query); 
echo "<select name = 'venue'>"; 
while (($row = mysql_fetch_row($res)) != null) 
{ 
    echo "<option value = '{$row['venue_id']}'"; 
    if ($selected_venue_id == $row['venue_id']) 
     echo "selected = 'selected'"; 
    echo ">{$row['venue_name']}</option>"; 
} 
echo "</select>"; 

:)

4

supposant que vous avez un éventail de lieux ... Personnellement, je n'aime pas mélanger avec d'autres sql magie.

function displayDropDown($items, $name, $label, $default='') { 
    if (count($items)) { 
    echo '<select name="' . $name . '">'; 
    echo '<option value="">' . $label . '</option>'; 
    echo '<option value="">----------</option>'; 
    foreach($items as $item) { 
     $selected = ($item['id'] == $default) ? ' selected="selected" : ''; 
     echo <option value="' . $item['id'] . '"' . $selected . '>' . $item['name'] . '</option>'; 
    } 
    echo '</select>'; 
    } else { 
    echo 'There are no venues'; 
    } 
} 
+0

I ont une table (lieux) qui stockent tous les lieux (id, venue_name) Le venues.id est stocké dans la table de volunteers_2009 (volunteers_2009.venue_id) – Brad

2
 <?php 
     $query = "SELECT * from blogcategory"; 
     //$res = mysql_query($query); 
     $rows = $db->query($query); 
     echo "<select name = 'venue'>"; 
     // while (($row = mysql_fetch_row($res)) != null) 
     while ($record = $db->fetch_array($rows)) 
     { 
      echo "<option value = '{$record['CategoryId']}'"; 
      if ($CategoryId == $record['CategoryId']) 
       echo "selected = 'selected'"; 
      echo ">{$record['CategoryName']}</option>"; 
     } 
     echo "</select>"; 
     ?> 
0
<!DOCTYPE html> 
<html> 
<head> 
    <title>table binding</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 

</head> 
<body> 
    <div id="mydiv" style="width:100px;height:100px;background-color:yellow"> 

     <select id="myselect"></select> 
    </div> 

</body> 
</html> 


<?php 
include('dbconnection.php'); 

$sql = "SHOW TABLES FROM $dbname"; 
$result = mysqli_query($conn,$sql); 

if (!$result) { 
    echo "DB Error, could not list tables\n"; 
    echo 'MySQL Error: ' . mysqli_error(); 
    exit; 
} 

while ($row = mysqli_fetch_row($result)) { 
    echo "<script> 
    var z = document.createElement('option'); 
    z.setAttribute('value', '".$row[0]."'); 
    var t = document.createTextNode('".$row[0]."'); 
    z.appendChild(t); 
    document.getElementById('myselect').appendChild(z);</script>"; 

} 



?> 
Questions connexes