我有三张桌子
我正在编辑按钮上的文本框和列表框中显示数据单击所选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;
}
}
}
?>
我做错了什么?
答案 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>