比较两个表数据并选中具有相同数据的复选框

时间:2016-01-20 10:27:32

标签: php

我的数据库中有两个表。结构如下:

Comparitive_st_sup

================
id | item_name
================
486 | Item1
487 | Item2
488 | Item3
489 | Item4
=================

quotation_items

=====================
item_id | item_name
=====================
487     | Item2
489     | Item4
=====================

我想要实现的是首先我需要显示table1中的所有记录,即" comparitive_st_sup'。其次,显示的记录前面有一个复选框。然后我需要比较表2中的数据" quotation_items'。也就是说,如果id = item_id,则应选中复选框。下面是我试图检查记录但不检查所有记录的代码。我有任何错误吗?

<?php
include('config.php');

$sql = "SELECT item_id FROM quotation_items WHERE tender_id=150002";
$query_resource = mysql_query($sql);
$quotation = mysql_fetch_assoc($query_resource);

$quotation_rec = explode(',', $quotation['item_id']);

$sql = "SELECT id from comparitive_st_sup where tender_id=150002";
$query_resource = mysql_query($sql);
$comparitive = Array(); 
  while($name = mysql_fetch_assoc($query_resource))
  {
      ?>
      <span><?php echo $name['id']; ?></span>
      <input type="checkbox" name="comparitive[]" value="<?php echo $name['id']; ?>" <?php if(in_array($name['id'], $quotation_rec)): ?> checked='checked' <?php endif; ?>/><br />

  <?php } ?>

@ Stefen,在我试图尝试你的代码的脚本之后:

<?php
include('config.php');

$sql = "SELECT c.id FROM comparitive_st_sup c LEFT JOIN quotation_items q ON c.id = q.item_id WHERE c.tender_id=150002";

//$sql = "SELECT id from comparitive_st_sup where tender_id=150002";
$query_resource = mysql_query($sql);
$comparitive = Array(); 
  while($name = mysql_fetch_assoc($query_resource))
  {
      ?>
      <span><?php echo $name['id']; ?></span>
<input type="checkbox" name="comparitive[]" value="<?php echo $name['id']; ?>" <?php if(null !== $name['item_id']): ?> checked='checked' <?php endif; ?>/><br />  <?php } ?>

1 个答案:

答案 0 :(得分:1)

在您的select语句中,您引用的是您在数据库结构中未提及的字段tender_id。假设它存在于两个表中,您应该检查与该字段匹配的行是否实际上具有值150002

您还可以使用以下单个查询优化代码:

$sql = "SELECT c.id FROM comparitive_st_sup c LEFT JOIN quotation_items q ON c.id = q.item_id WHERE c.tender_id=150002";

<input type="checkbox" name="comparitive[]" value="<?php echo $name['id']; ?>" <?php if(null !== $name['item_id']): ?> checked='checked' <?php endif; ?>/><br />

作为你的输出。