0

私の最後の質問はあまり良くなかったので、新しい質問を「開いて」申し訳ありません。

重要なデータ:

表1

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

表2

  • ID:1
  • id:3

Query1 (id 結果) :

  • 1,2,3

クエリ 2 (id 結果):

  • 1,3

したがって、これらの 2 つのテーブルを (適切なクエリ ofc を使用して) フェッチするたびに、table2 の ID が table1 に存在する場合は、チェックボックスを「チェック済み」に変更する必要があります。

私はこのようにやっています:

<?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 の場合、最初の結果を「チェック」できました。

That While フェッチは 1 回だけです。結果が次のようになる必要があります (id): 11-13 | 21-23 |31-33 とチェックされたチェックボックスは、11 と 33 の場合にのみ表示されます

これを理解していただければ幸いです..

4

3 に答える 3

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
        }

    ?>
于 2012-08-02T16:40:46.947 に答える
1

内部 while ブロックの後に内部結果ポインタをリセットする必要があります。

    while($row = mysql_fetch_array($Query1))
    {
        while($row2 = mysql_fetch_array($Query2))
        {
              // Your code
        }
        mysql_data_seek($Query2,0);
    }
于 2012-08-02T16:53:44.583 に答える
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';
  }
}

そうは言っても、両方のテーブルが同じデータベースにある場合、これは OUTER 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 のボックスのみをチェックします。

于 2012-08-02T17:00:24.793 に答える