0

以下を実行して、MySQL データベースからタイプ ID と名前を取得しています。2 つの結果が表示されます。選択リストに表示されるオプションは 2 つありますが、ID または名前が存在せず、ページに空白として表示されます。

function get_category_selector($form_name) {
if (isset($_SESSION['loggedin']['cur_category'])) {
    $curr = $_SESSION['loggedin']['cur_category'];
} else {
    $curr = -1;
}
$rtn = "";
$rtn .= '<select id="category" name="category">';
$rtn .= '<option value="-1"';
if ($curr == -1) {
    $rtn .= ' selected';
}
$rtn .= '>Select a Category</option>';
$DB = new mysql_db();
$DB->sql_connect();
$q = "SELECT DISTINCT (categories.categories_id), categories.categories_name FROM categories LEFT JOIN prod2cat ON prod2cat.prod2cat_cat = categories.categories_id LEFT JOIN products ON prod2cat.prod2cat_product = products.products_id LEFT JOIN prod2type ON products_id = prod2_product LEFT JOIN type ON prod2_type = type_id WHERE type.type_id =2 order by categories.categories_name asc";
$DB->query($q);
if ($DB->get_num_rows()) {
    $results = $DB->fetch_all_rows(MYSQL_ASSOC, NULL);
    foreach ($results as $key => $row) {
        $rtn .= '<option value="' . $row['Categories_ID'] . '"';
        if ($curr == $row['Categories_ID']) {
            $rtn .= ' selected';
        }
        $rtn .= '>' . trim($row['Categories_Name']) . '</option>';
    }
}
$rtn .= '</select>';

return $rtn;

}

4

1 に答える 1

0

結果配列にアクセスするときは、列名に同じ大文字と小文字を使用する必要があります。

$rtn .= '<option value="' . $row['categories_id'] . '"';
if ($curr == $row['categories_id']) {
   $rtn .= ' selected';
}
$rtn .= '>' . trim($row['categories_name']) . '</option>';

または、選択クエリを変更できます。

$q = "SELECT DISTINCT (categories.categories_id) Categories_ID,
      categories.categories_name Categories_Name;
于 2012-12-16T22:32:32.750 に答える