如果在php中的编辑模式中没有选择,则listbox值在数据库中为0

时间:2014-12-11 15:35:11

标签: php mysql

我有三张桌子

  • 城市:city_id,city_name
  • 状态:State_id,State_name
  • 新闻:City_id,State_id,标题,故事,作者等。

我正在编辑按钮上的文本框和列表框中显示数据单击所选ID。

数据正在列表框中正确显示所选ID但是当我单击保存按钮而不更改列表框值时,它在数据库中变为0。

如果我没有更改列表框值并单击“保存”,则会从列表框中插入0。

<?php 
$data = 0;
if(isset($_GET['edit']))
{
$id = clean($_GET['edit']);
mysql_set_charset('utf8'); 
$sql="SELECT city_name,state_name,category_name,headline,author,story,source,photo,date from news left join
 city on news.city_id=city.city_id left join state on news.state_id=state.state_id left join category on news.cat_id=category.category_id where id = '$id'";
$result=mysql_query($sql);
$data=mysql_fetch_array($result);
}
?>

<?php 
$cat = $Admin->select($Admin->cat_table,'','','');  
?>

<select name="cat_id" class="select"  required="">
    <option value="<?php if(isset($_GET['edit'])){ echo $data['category_name']; }?>"><?php if(isset($_GET['edit'])){echo $data['category_name'];}?></option>      
    <?php                  
    foreach($cat as $load_category)
    {                       
    ?>  
    <option value="<?php echo $load_category["category_id"]; ?>"><?php echo $load_category["category_name"]; ?></option>
    <?php }?>
</select>

<?php           
        $errors = array();      
        $Admin = new admins;                
        if(isset($_POST['save']))
        {   
                $table = $Admin->news_table;
                    if(isset ($_GET['edit']))           
                    {                   
                            $id = clean($_GET['edit']);
                            $cond = "id = '$id'";                       
                            if($Admin->save_advance($table,$_POST,'',$cond))
                            {
                                $_SESSION['message'] = "News Updated Successfully";                 
                                header("Location:add_news.php");
                                exit;       
                            }               

                    }                                               

        }
?>  

我做错了什么?

1 个答案:

答案 0 :(得分:0)

告诉我,如果我错了,但这一行

<option value="<?php if(isset($_GET['edit'])){ echo $data['category_name']; }?>">
    <?php if(isset($_GET['edit'])){echo $data['category_name'];}?>
</option> 

对我来说似乎很奇怪,它将类别名称设置为select中第一个选项的值。基本上,如果您不更改列表框,则尝试更新category_id为category_name的行。 这应该是:

<option value="0">
    <?php if(isset($_GET['edit'])){echo $data['category_name'];}?>
</option> 

但是如果你必须更新某些内容,那么没有价值就无法做到。因此,添加某种验证禁止单击保存按钮而不在选择中设置值,或者只是执行此类操作(将默认类别添加到列表框中)

<select name="cat_id" class="select" required>  
    <?php   
    $counter = 0;                        
    foreach($cat as $load_category){ ?>  
    <option <?php echo ($counter == 0) ? 'selected' : ''; ?> value="<?php echo $load_category["category_id"]; ?>"><?php echo $load_category["category_name"]; ?></option>
    <?php
    //increments counter
    $counter++; }?>
</select>