1

以下は、SQLデータベースからドロップダウンボックスに特定の値を取得しようとしている私のコードです。また、ドロップダウン ボックスにロードする前に、一部のデータを除外しようとしています。

私のコード$excld[]では正常に動作し、ドロップダウンにデータが入力されたときに予想されるゼロ値は表示されませんが、除外することを期待する値が$exclude=$rec['chkNum'];機能しないか、ドロップダウンに入れたくない値がまだ表示されます。誰かがアプローチに何か問題があると教えてもらえますか? ありがとう。

$exclude = array();
$query = "SELECT * FROM invoentry WHERE dist_inv='$distUsr'";
$runx=mysqli_query($db,$query) or die ("SQL Error");
$norx=mysqli_num_rows($runx);

while ($rec = mysqli_fetch_array($runx))
{
    $exclude[] = $rec['chkNum']; $excld[] = '0';
}

$SQLx="SELECT * FROM newchk WHERE dist_chk='$distUsr'";
$runx=mysqli_query($db,$SQLx) or die ("SQL Error");
$norx=mysqli_num_rows($runx);

while ($rec = mysqli_fetch_array($runx))
    {
        if($rec['sbstart'] != '0' & $rec['sbend'] != '0') {
        for($i=$rec['sbstart']; $i<=$rec['sbend']; $i++)
        {
            if (!in_array($i, $exclude, $excld))
            {
                echo "<option id='options' value='$i'>$i<br></option>";
            }
        } }

         if($rec['gwstart'] != '0' & $rec['gwend'] != '0') {
        for($i=$rec['gwstart']; $i<=$rec['gwend']; $i++)
        {
            if (!in_array($i, $exclude, $excld))
            {
                echo "<option id='options' value='$i'>$i<br></option>";
            }
        } }
    }   

編集 :

データベースの構造は次のとおりです。データベース名 :regional_data 同じデータベース内の 2 つのテーブル invoentry と newchk

請求書:

usr_inv dist_inv chkNum InvoNum
---------------------------------
John     Guardian   300455   457gXT

新しいチェック:

usr_chk  dist_chk sbstart sbend totsb gwstart gwend totgw
----------------------------------------------------------
John     Guardian 300400  300550 151   300     310   10
4

1 に答える 1

1

それがどのように機能するかわかりませんいずれにせよ(わかりました、最初の反復では、$iまだ文字列であるため、機能します)。パラメータがin_array受け入れるものを見てください

bool in_array (混合$needle , 配列$haystack [, bool $strict = FALSE ] )

あなたの場合、次を渡しています:整数$i、文字列の配列(自分でキャストしない限り、データベースからフェッチされたものはすべて文字列です)、および文字列「0」で満たされた$exclude空でない配列。$excld最後の引数はTRUE(配列が空ではない) と評価されるため、php は値だけでなく型もチェックします。整数と文字列の配列を渡すため、php は同じ型と値を持つ要素を内部で見つけられないため、すべての要素を出力します。

機能させるために何を変更するか:

while ($rec = mysqli_fetch_array($runx))
{
    $exclude[] = $rec['chkNum']; //remove $excld[] = '0';
}
// add 0 to $exclude
$exclude[] = '0';

if (!in_array($i, $exclude)) //remove , $excl
于 2012-12-09T09:24:16.340 に答える