2012-08-02 48 views
0

检查了我的最后一个问题是没有相当不错,所以我很抱歉“打开”新的。变化选择框与MySQL和PHP

重要提示数据:

表1

  • ID:1
  • ID:2
  • ID:3

表2

  • ID:1
  • ID:3

查询1(ID结果)

  • 1,2,3

QUERY2(ID结果):

  • 1,3

所以,我需要被改为“检查”,如果每次我取这两个表(用适当的查询OFC)和一些ID,从表2中存在一个复选框在table1上。

Im做这样的:

<?php 
while($row = mysql_fetch_array($Query1)) 
{ 
while($row2 = mysql_fetch_array($Query2)) 
{ 
$checkit = ''; 
if($row['id'] == $row2['id']) 
$checkit = 'checked="checked"'; 
} 
?> 
<input type="checkbox" name = "checkbox-1" class="checkbox" value ="" <?php echo $checkit ?> /> 
<?php 
} 
} 
?> 

问题:我能有 “选中” 的第一个结果,当1 = 1。

,虽然只有一次取。我需要的结果应该是这样的(编号):11-13 | 21-23 | 31-33和选中的复选框应出现11只在33

我希望你明白这一点..

+0

需要检查=“检查”否是 – 2012-08-02 16:39:32

+0

可能重复的[如何比较两个表在mysql和php?](http://stackoverflow.com/questions/11770264/how-to-compare-two- tables-in-mysql-and-php) – 2012-08-02 16:40:00

+0

我最后一个问题不太好,所以很抱歉打开一个新的。 – user1148875 2012-08-02 16:43:18

回答

1

你必须使用

$checkit = 'checked="yes"'; 

应该

$checkit = 'checked="checked"'; 

试试这个: -

<?php 

    $arr_one = ''; 
    while($row = mysql_fetch_array($Query1)) 
    { 

     $arr_one[]= $row['id']; 

    } 


    while($row2 = mysql_fetch_array($Query2)) 
    { 
      $checkit = ''; 

      $id = $row2['id']; 
      if (in_array($id,$arr_one)) 
      { 
       $checkit = 'checked="checked"'; 
      } 



    ?> 
      <input type="checkbox" name= "checkbox-1" class="checkbox" value ="" <?php echo $checkit ?> /> 
    <?php 
     } 

    ?> 
+0

好,但没有主要问题。虽然只获取一次。我需要的结果应该是这样的(编号):11-13 | 21-23 | 31-33 – user1148875 2012-08-02 16:42:12

+0

我有更新我的答案。看看,让我知道如果不工作。 – 2012-08-02 16:56:44

+0

哇,我认为它的工作:D – user1148875 2012-08-02 17:08:33

1

您将需要在内部while块之后重置内部结果指针。

while($row = mysql_fetch_array($Query1)) 
    { 
     while($row2 = mysql_fetch_array($Query2)) 
     { 
       // Your code 
     } 
     mysql_data_seek($Query2,0); 
    } 
1

我会做:

$t2data = array(); 
while($row2 = mysql_fetch_assoc($Query2)) { 
    $t2data[] = $row2[0]; 
} 

while($row1 = mysql_fetch_assoc($Query1)) { 
    if(in_array($row1[0], $t2data)) { 
    $checked = 'checked'; 
    } 
} 

话虽这么说,如果两个表都在同一个数据库,这是最好的外部解决JOIN查询:

select t1.id, (t2.t1_id IS NOT NULL) as checked 
    from t1 
    left join t2 on (t1.id = t2.t1_id) 

然后遍历结果并仅检查查询中checked = true的方框。

+0

感谢您的帮助:)我也试过 – user1148875 2012-08-02 17:10:41