php - sugerencias - Rellene el menú desplegable de selección de una tabla de base de datos
lista desplegable excel (4)
Tengo una mesa ("lugares") que almacena todos los lugares posibles que un voluntario puede trabajar, cada voluntario está asignado a trabajar en un lugar cada uno.
Quiero crear un menú desplegable de selección de la tabla de lugares.
Ahora mismo puedo mostrar el lugar donde se asigna cada voluntario, pero quiero que muestre el cuadro desplegable, con el lugar ya seleccionado en la lista.
<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>
Por ejemplo, voluntario con el id de 7, se asigna a 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.
Sé que tomará la forma de un ciclo for o while para sacar la lista de lugares de la tabla de lugares
Mi consulta es:
$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";
¿Cómo llene el cuadro desplegable de selección con las sedes ( volunteers_2009.venue_id , venues.id ) de la tabla de lugares y hago que preseleccione el lugar de la lista?
asumiendo que tienes una variedad de lugares ... personalmente no me gusta mezclar el sql con otra magia.
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'';
}
}
<!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>";
}
?>
<?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>";
?>
$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>";
:)