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 $zquery我得到string(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]如果您只想从表单返回一个值,请尝试删除

$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

Molle 博士和 Douglas 都是正确的,但我想扩展一下他们的答案。

$_POST 一个数组。它可以包含各种值,无论是在一个key => value结构中,还是在一系列数字索引的值中。每个值都可以是任何其他类型的数据。在这种情况下,您的变量:

$_POST['chapter']

是一个字符串,最有可能 - PHP 将数组索引([0]等)解释为一个字符索引,当用于字符串时(或针对可以简单地转换为字符串的变量,如整数或浮点数。)这就是为什么你'重新获取第一个字母而不是第一个值:只有一个值可以得到!

当然,您可能会遇到数组的值本身就是一个数组的情况——在这种情况下,您可以通过键入等方式访问该值$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'] 不是数组。$N 返回 1 因为 $chap 不是数组,如果变量不是数组,则 count() 函数总是返回 1。

你可以使用喜欢

名称="章节[]"  

那么 $_POST['chapter'] 应该是一个数组。

于 2012-11-17T06:59:37.893 回答