1

PHP と MySQL DB (sugarrcm) を使用して 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>";
}
4

2 に答える 2

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>";
}
于 2012-05-15T02:30:08.417 に答える