0

チェックボックスを使用して SQL クエリを変更しています。

HTML:

        <input type="checkbox" name="chapter" value="7"  /><label>ch. 7</label><br />
        <input type="checkbox" name="chapter" value="13"  /><label>ch. 13</label>

PHP:

   //adjust query for chapter
   $chap = $_POST['chapter'];
   $chapter = "";
   if(!empty($chap)){
        $N = count($chap);
        if($N == 1){
         $chapter .= " AND chapter = '".$chap[0]."'";
        }else{
         $chapter .= " AND (chapter = '".$chap[0]."' OR chapter = '".$chap[1]."')";
        }
   }    

       $zquery = "SELECT * FROM records WHERE ".$zipcodes.$chapter;

チェックボックスをオフのままにすると、正常に機能します。チャプター 7 ボックスがチェックされている場合、正常に動作します。問題はその 13 ボックスにあります。それを確認すると、の代わりに の$chap[]値のみが返されます。たとえば、私が得たとき。"1""13"var_dump $zquerystring(3384) "SELECT * FROM records WHERE (party_zip='34683' OR party_zip='34682' ) AND chapter = '1'"

また、両方のチェックボックスをオンにしても、$N常に が返されます。配列ではありませんか1$_POST['chapter']文字列の最初の文字だけを返すのはなぜですか?

ナマステ

4

5 に答える 5

2

$_POST['chapter']は配列ではありません。入力の名前内に角括弧を使用します。

<input type="checkbox" name="chapter[]" value="7"  /><label>ch. 7</label><br />
<input type="checkbox" name="chapter[]" value="13"  /><label>ch. 13</label>
于 2012-11-17T06:46:40.217 に答える
2

[0]フォームから値を 1 つだけ返したい場合は、 を削除してみてください

$chapter .= " AND chapter = '".$chap."'";

あるいは(そしておそらくあなたが望むもの)、入力を配列に変更するとうまくいくはずです

<input type="checkbox" name="chapter[]" value="7"  /><label>ch. 7</label><br />
<input type="checkbox" name="chapter[]" value="13"  /><label>ch. 13</label>
于 2012-11-17T06:48:43.357 に答える
1

モール博士とダグラスはどちらも正しいですが、彼らの答えを少し広げたいと思います。

$_POST 配列ですkey => value構造体または数値でインデックス付けされた一連の値のいずれかで、さまざまな値を含めることができます。各値は、他のタイプのデータにすることができます。この場合、変数:

$_POST['chapter']

ほとんどの場合、文字列です。PHP は、文字列に対して (または整数や浮動小数点数など、文字列に簡単にキャストできる変数に対して) 使用すると、配列インデックス ([0]など) を文字インデックスとして解釈します。最初の値の代わりに最初の文字を取り出します。取得する値は 1 つだけです。

もちろん、配列の値自体が配列である状況に遭遇する可能性があります。その場合、入力するなどして値にアクセスできますが$array[0]['candles']、配列ではそうはなりません$_POST(これは常に配列です)。文字列の。)

于 2012-11-17T06:53:43.197 に答える
0

$_POST配列として機能し、フォームを介して投稿されたアイテムのすべての値を出力して、投稿の値を知る

echo"<pre>";
 print_r($_POST);

$_POSTフォームから投稿したすべての値を含む配列として機能します。

各値を取得するためにも使用できます

foreach ($_POST as $value ) 
{
   echo $values."</br>";
}
于 2012-11-17T06:50:57.937 に答える
0

$_POST['chapter'] は配列ではありません。$chap が配列ではないため、$N は 1 を返します。変数が配列でない場合、count() 関数は常に 1 を返します。

のように使用できます

名前="チャプター[]"  

$_POST['chapter'] は配列でなければなりません。

于 2012-11-17T06:59:37.893 に答える