php - 从多个类别中获取数据

标签 php html mysql

我的数据库中有 3 个表,结构是

 advertisement 
 +--+-----+------------+
 |id|name |description | 
 +--+-----+------------+
 | 1| Name| some text  |
 +--+-----+------------+


Categories
+---+-------------+
|id |category_name|
+---+-------------+ 
|2  |category 1   | 
|3  |category 2   | 
|4  |category 3   | 
+---+-------------+

最后一张表是存放我的广告的地方,我想做多个分类选择表结构是

+---------+------+
|advert_id|cat_id|
+---------+------+
|    1    |   2  |
|    1    |   3  |
+---------+------+

我将数据插入到我的数据库中,但我无法在这样的功能中获取数据进行编辑

<select>
<select name="cat[]" multiple>
<option value="id" selected>Category 2</option>
<option value="id" selected>Category 3</option>
<option value="id" selected>Category 3</option>
</select>

我写这段代码是为了只显示一个选定的类别

<?php
function advert_select($advert_id){
    $data = array();
    $query = mysql_query("SELECT *FROM `advert_to_area` WHERE `advert_id`=$advert_id");
    while($row = mysql_fetch_assoc($query)){
        $data[] = array(
        'area_id'   => $row['area_id']
        );

    }   
    return $data;
}

function get_advert_cat(){
    $data = array();
    $query = mysql_query("SELECT *FROM `areas`");
    while($row = mysql_fetch_assoc($query)){
        $data[] = array(
        'id'        => $row['id'],
        'name'      => $row['area_name']
        );
    }
    return $data;
}
?>
<?php
echo '<select name="areas[]" multiple>';
$data = advert_select($advert_data['id']);
$areas = get_advert_cat();
foreach($data as $d){
    $area_id = $d['area_id'];

}
foreach ($areas as $area){

    if($area['id']==$area_id){
        echo '<option value="' . $area['id'] .'" selected>' . $area['name'] . '</option>';
    }else{
        echo '<option value="' . $area['id'] .'" >' . $area['name'] . '</option>';
    }
}

echo "</select>";
?>

你能告诉我我做错了什么或者我能做些什么来展示我给出的例子吗?谢谢

最佳答案

如果我没理解错的话,这应该可行。

<?php
echo '<select name="areas[]" multiple>';
$data = advert_select($advert_data['id']);
$areas = get_advert_cat();
$area_id = array();
foreach($data as $d){
    $area_id[] = $d['area_id'];

}
foreach ($areas as $area){

    if(in_array($area['id'],$area_id)){
        echo '<option value="' . $area['id'] .'" selected>' . $area['name'] . '</option>';
    }else{
        echo '<option value="' . $area['id'] .'" >' . $area['name'] . '</option>';
    }
}

echo "</select>";
?>

关于php - 从多个类别中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17120620/

相关文章:

mysql - 按位运算是否适合解决以下问题?

php - 如何将 Laravel 用户名添加到 nginx 的访问日志中?

python - 如何将网站上的图片保存到本地文件夹

html - 视口(viewport)设置的移动问题

mysql - 在 php mysql 中获取现在和现在 + 5 天之间的值

mysql - mysql中表与表之间如何传输数据

javascript - CSS 未加载到动态生成的 Laravel View 中

php - WordPress - 通过并发 AJAX 调用更新帖子元时主键的重复条目

php - Symfony EventListener 到底是如何工作的

html - 在网站上,加载图像更快还是 css 代码?