我正在使用PHP和MySQL DB(sugarcrm)为HTML表单构建一个动态下拉框来填充所述框。
到目前为止,我已经对其进行了大量硬编码 - 但必须有更好的方法。
编写此代码必须有一种比我正在做的更有效的方法。欢迎任何意见:
function services(){
mysql_connect('myhost', 'myname', 'mypass');
mysql_select_db('spaladon_sugar');
$sqlF = "SELECT id, type, name FROM serv1_services WHERE type LIKE 'facial'";
$resultF = mysql_query($sqlF);
$sqlT = "SELECT id, type, name FROM serv1_services WHERE type LIKE 'treatments'";
$resultT = mysql_query($sqlT);
$sqlS = "SELECT id, type, name FROM serv1_services WHERE type LIKE 'salon'";
$resultS = mysql_query($sqlS);
$sqlWax = "SELECT id, type, name FROM serv1_services WHERE type LIKE 'waxing'";
$resultWax = mysql_query($sqlWax);
$sqlWell = "SELECT id, type, name FROM serv1_services WHERE type LIKE 'wellness'";
$resultWell = mysql_query($sqlWell);
$sqlH = "SELECT id, type, name FROM serv1_services WHERE type LIKE 'haircutting'";
$resultH = mysql_query($sqlH);
$sqlM = "SELECT id, type, name FROM serv1_services WHERE type LIKE 'makeup'";
$resultM = mysql_query($sqlM);
$sqlC = "SELECT id, type, name FROM serv1_services WHERE type LIKE 'color'";
$resultC = mysql_query($sqlC);
echo "<select name='services'>";
echo "<option value=''> - Facials - </option>";
while ($row = mysql_fetch_array($resultF)) {
echo "<option value='" . $row['name'] . "'>". $row['name'] . "</option>";
}
echo "<br /><option value=''> - Medical Spa Treatments - </option>";
while ($row = mysql_fetch_array($resultT)) {
echo "<option value='" . $row['name'] . "'>". $row['name'] . "</option>";
}
echo "<option value=''> - Salon - </option>";
while ($row = mysql_fetch_array($resultS)) {
echo "<option value='" . $row['name'] . "'>". $row['name'] . "</option>";
}
echo "<option value=''> - Waxing - </option>";
while ($row = mysql_fetch_array($resultWax)) {
echo "<option value='" . $row['name'] . "'>". $row['name'] . "</option>";
}
echo "<option value=''> - Wellness - </option>";
while ($row = mysql_fetch_array($resultWell)) {
echo "<option value='" . $row['name'] . "'>". $row['name'] . "</option>";
}
echo "<option value=''> - Haircutting - </option>";
while ($row = mysql_fetch_array($resultH)) {
echo "<option value='" . $row['name'] . "'>". $row['name'] . "</option>";
}
echo "<option value=''> - Makeup - </option>";
while ($row = mysql_fetch_array($resultM)) {
echo "<option value='" . $row['name'] . "'>". $row['name'] . "</option>";
}
echo "<option value=''> - Color and Highlight - </option>";
while ($row = mysql_fetch_array($resultC)) {
echo "<option value='" . $row['name'] . "'>". $row['name'] . "</option>";
}
echo "</select>";
}
答案 0 :(得分:5)
粗略改进:
function services(){
mysql_connect('myhost', 'myname', 'mypass');
mysql_select_db('spaladon_sugar');
$types = array(
'facial' => 'Facials',
'treatments' => 'Treatments',
// and more typename => Type Label
);
echo "<select name='services'>";
foreach($types as $name => $label){
$sql = sprintf('SELECT id, type, name FROM serv1_services WHERE type LIKE \'%s\'', $name);
$result = mysql_query($sq;);
echo '<option value=""> - ' . $label . ' - </option>';
while ($row = mysql_fetch_array($result)) {
echo "<option value='" . $row['name'] . "'>". $row['name'] . "</option>";
}
}
echo "</select>";
}
答案 1 :(得分:4)
只需查询一次。
function services(){
mysql_connect('myhost', 'myname', 'mypass');
mysql_select_db('spaladon_sugar');
$sql = "SELECT id, type, name FROM serv1_services WHERE type IN ('facial', 'treatment', 'salon') ORDER BY type"; //you can add another filter on WHERE type IN (...)
$result = mysql_query($sql);
$type = '';
echo "<select name='services'>";
while ($row = mysql_fetch_array($result)) {
if($type!=$row['type'])
{
if($type!='')
echo "</optgroup>";
switch($row['type'])
{
case 'facials':
echo "<optgroup label=' - Facials - '>";
break;
// etc for another case...
}
$type=$row['type'];
}
echo "<option value='" . $row['name'] . "'>". $row['name'] . "</option>";
}
echo "</select>";
}