2011-04-16 107 views
0

我从数据库中获取一些值。并希望更新数据库表尊重他们的ID。如何插入多个复选框值尊重他们的ID

这里是我的代码:

<?php 
$sql = "SELECT * FROM tbl_ads ORDER BY ads_id DESC LIMIT $START, $LIMIT"; 
$result = mysql_query($sql); 
$num = mysql_num_rows($result); 
if($num > 0){ 
    while($row = mysql_fetch_array($result)){ ?> 
<tr bgcolor="#E1E1E1"> 
    <td align="left" valign="top" bgcolor="#F1F1F1" class="BlackText2"> 
    <?php echo $row['title'];?> 
    </td> 
    <td align="left" valign="top" bgcolor="#F1F1F1" class="BlackText2"> 
    <?php echo substr($row['description'], 0, 40);?> 
    </td> 
    <td align="left" valign="top" bgcolor="#F1F1F1"> 
    <?php echo $row['mywebsite'];?> 
    </td> 
    <td align="center" valign="top" bgcolor="#F1F1F1"> 
    <input type="hidden" name="ads_id[]" value="<?php echo $row['ads_id'];?>"> 
    <input type="checkbox" name="feature[]" value="feature"> 
    </td> 
<?php 
    if(isset($_REQUEST['submit'])){ 
     $feature = $_POST['feature']; 
     $ads_id = $_REQUEST['ads_id']; 
     if(empty($feature)){ 
     echo("You didn't select any buildings."); 
     }else{ 
     $N = count($feature); 
     $M = count($ads_id); 
     echo("You selected $N door(s): "); 
     for($i=0 ; $i < $N ; $i++){ 
      for($j=0 ; $j < $M ; $j++){ 
      echo ($feature[$i] . " "); 
      echo $update_feature = "UPDATE tbl_ads SET `featureads` = '".$feature[$i]."' WHERE ads_id ='".$ads_id[$j]."'"; 
      $result_feaure = mysql_query($update_feature); 
      } 
     } 
     } 
    } 
?> 

但我的问题是,当我更新featureads列尊重ads_id列,那么所有列都被选中。

如何解决这个问题?

+0

不要使用'bgcolor'或'align'属性,而使用CSS风格你的输出。我建议不要使用'mysql_'函数,最好使用[PDO](http://php.net/manual/en/book.pdo.php)或者至少[MySQLi](http://php.net) /manual/en/book.mysqli.php)。另外,$ START和$ END变量来自哪里?您的代码很少有其他问题... – Cobby 2011-04-16 09:49:33

+0

@Cobby感谢您的建议,$ START和$ END变量来自其他sql。其实我的问题是,当我检查1或2复选框和“$ update_feature”sql运行所有功能组件行更新,而不是那2个选定的字段 – Moumita 2011-04-16 10:03:35

回答

0

它看起来像是有一张表格,可以存储所有ID的东西,并且您希望有人能够将每条记录定义为精选“广告”并一次完成。

我的建议是修改代码:

<input type="checkbox" name="feature[]" value="feature"> 

为了反映所选功能原路返回你的功能,以适应。 例如:

<input type="checkbox" name="feature[]" value="<?php echo $row['ads_id']; ?>"> 

复选框值设置当复选框被选中,上面的代码将意味着功能复选框的值将始终是“功能”,但它不会涉及了对“ads_id”领域。

通过改变上面的例子然后你可以:

  • 更新表说,没有增加了通过功能[]表单变量更新表功能

  • 环将所选列的特征列设置为true。

我已经做了类似的事情,但使用radiogroups,因为检查只有给你一个值,如果他们被检查。

E.g:

<label><input type="radio" name="feature[$id]" value="yes"/>yes</label> 
    <label><input type="radio" name="feature[$id]" value="no"/>no</label> 

HTH :)

+0

我希望当我检查复选框只有该行将被提及为特色。 – Moumita 2011-04-16 10:39:21