在php中获取未发布输入的值

在php中获取未发布输入的值,php,arrays,post,checkbox,isset,Php,Arrays,Post,Checkbox,Isset,使用数据获取post输入类型的值对我们来说非常常见。但是现在我想知道checbox是check还是uncheck。 这是我的密码: while (!$listof_artist->EOF) { $id = $listof_artist->fields['id']; $arr_id[] = $id; echo "<tr><td><input type='checkbox' value='".$id."' name='chkid[]

使用数据获取post输入类型的值对我们来说非常常见。但是现在我想知道checbox是check还是uncheck。 这是我的密码:

while (!$listof_artist->EOF) {
    $id = $listof_artist->fields['id'];
    $arr_id[] = $id;

    echo "<tr><td><input type='checkbox' value='".$id."' name='chkid[]' id='chkid[]' /></td>";
}

if(isset($_POST['submit'])){
    foreach($_POST['chkid'] as $checkbox){
        //code for add
    }

请帮忙。谢谢你

获得一个没有发布到你的url的值就像询问所有尚未发现的行星的名称一样

有一个简单的解决方法来解决你正在做的事情,假设你有10个复选框。您知道名称和值,因为您创建了它们。转到处理表单提交的页面,并将所有名称告知代码。然后代码检查哪个在
$\u POST
中有值,哪个没有值。这就是你的答案


使用简单HTML不会将未选中复选框的值发送到表单处理url。

获取未发布到url的值就像询问所有尚未发现的行星的名称一样

有一个简单的解决方法来解决你正在做的事情,假设你有10个复选框。您知道名称和值,因为您创建了它们。转到处理表单提交的页面,并将所有名称告知代码。然后代码检查哪个在
$\u POST
中有值,哪个没有值。这就是你的答案


使用简单HTML不会将未选中复选框的值发送到表单处理url。

每当提交表单时,只能通过
$\u POST[var]
因此,就如你的问题本身一样简单:

foreach($_POST['chkid'] as $checkbox){
  //code for add
}
但对于未选中的,若其是否已选中,则必须从数据库运行循环以匹配

或者这里有更好的出路

而不是

<input type='checkbox' value='".$id."' name='chkid[]' id='chkid[]' />
注意:如果
$id
包含空格或太大,最好将一些计数变量指定为名称

下面是一个运行它的小测试代码,它将使您更好地理解

<?php
if(!empty($_POST['c']))
    print_r($_POST['c']);
?>
<form action="" method="post">
    <input type="checkbox" name="c[]" value="1" />
    <input type="checkbox" name="c[]" value="2" />
    <input type="checkbox" name="c[]" value="3" />
    <input type="checkbox" name="c[]" value="4" />
    <input type="checkbox" name="c[]" value="5" />
    <input type="submit">
</form>

无论何时提交表单,只有选中的复选框才能通过
$\u POST[var]
因此,就如你的问题本身一样简单:

foreach($_POST['chkid'] as $checkbox){
  //code for add
}
但对于未选中的,若其是否已选中,则必须从数据库运行循环以匹配

或者这里有更好的出路

而不是

<input type='checkbox' value='".$id."' name='chkid[]' id='chkid[]' />
注意:如果
$id
包含空格或太大,最好将一些计数变量指定为名称

下面是一个运行它的小测试代码,它将使您更好地理解

<?php
if(!empty($_POST['c']))
    print_r($_POST['c']);
?>
<form action="" method="post">
    <input type="checkbox" name="c[]" value="1" />
    <input type="checkbox" name="c[]" value="2" />
    <input type="checkbox" name="c[]" value="3" />
    <input type="checkbox" name="c[]" value="4" />
    <input type="checkbox" name="c[]" value="5" />
    <input type="submit">
</form>

正如其他人所说,您无法获取尚未发送的表单元素的名称/值,但是在提交表单之前,使用一点JavaScript,您可以找出哪些复选框未选中,收集它们的名称/值,并手动将其附加到表单数据并发送到服务器

$("input:checkbox:not(:checked)")
作为提示,此代码收集表单中的
未选中的
复选框,然后您可以通过Ajax请求中的
隐藏的
输入字段或参数将其发送到服务器

$("input:checkbox:not(:checked)")

正如其他人所说,您无法获取尚未发送的表单元素的名称/值,但是在提交表单之前,使用一点JavaScript,您可以找出哪些复选框未选中,收集它们的名称/值,并手动将其附加到表单数据并发送到服务器

$("input:checkbox:not(:checked)")
作为提示,此代码收集表单中的
未选中的
复选框,然后您可以通过Ajax请求中的
隐藏的
输入字段或参数将其发送到服务器

$("input:checkbox:not(:checked)")

与其他答案已经指出的类似,这里有一种方法:

while (!$listof_artist->EOF) {
    $id = $listof_artist->fields['id'];
    $arr_id[] = $id;

    echo "<tr><td><input type='checkbox' value='$id' name='$id' id='$id' /></td>";
}

if(isset($_POST['submit'])){
    foreach($arr_id as $checkbox){
        if (isset($_POST[$checkbox])) {
            // Checkbox is checked
            echo 'Artist id ' . $checkbox . ' is checked <br/>';
        }
        else {
            // Checkbox is NOT checked
            echo 'Artist id ' . $checkbox . ' is NOT checked <br/>';
        }
}
while(!$listof_艺术家->EOF){
$id=$listof_艺术家->字段['id'];
$arr_id[]=$id;
回声“;
}
如果(isset($_POST['submit'])){
foreach($arr\u id作为$checkbox){
如果(isset($\u POST[$checkbox])){
//复选框已选中
回显“艺术家id”。$复选框。已选中
; } 否则{ //复选框未选中 回显“艺术家id”。$checkbox.。未选中
; } }
与其他答案所指出的类似,这里有一种方法:

while (!$listof_artist->EOF) {
    $id = $listof_artist->fields['id'];
    $arr_id[] = $id;

    echo "<tr><td><input type='checkbox' value='$id' name='$id' id='$id' /></td>";
}

if(isset($_POST['submit'])){
    foreach($arr_id as $checkbox){
        if (isset($_POST[$checkbox])) {
            // Checkbox is checked
            echo 'Artist id ' . $checkbox . ' is checked <br/>';
        }
        else {
            // Checkbox is NOT checked
            echo 'Artist id ' . $checkbox . ' is NOT checked <br/>';
        }
}
while(!$listof_艺术家->EOF){
$id=$listof_艺术家->字段['id'];
$arr_id[]=$id;
回声“;
}
如果(isset($_POST['submit'])){
foreach($arr\u id作为$checkbox){
如果(isset($\u POST[$checkbox])){
//复选框已选中
回显“艺术家id”。$复选框。已选中
; } 否则{ //复选框未选中 回显“艺术家id”。$checkbox.。未选中
; } }
即使此代码不会发布未选中复选框的名称,尽管它们不会,但它只会发布已选中的名称。短语
或此处是一个更好的解决方法。
建议这样做,但通过
if(isset($\u post[$id]){//its checked}检查其是否已选中会更容易
即使此代码不会发布未选中复选框的名称,尽管它们不会,但它只会发布已选中的名称。短语
或此处是一个更好的解决方法。
建议这样做,但通过
if(isset($\u post[$id]){//its checked}检查其是否已选中会更容易
将所有设置为未选中,然后将$\u POST['chkid']中的所有复选框设置为选中将所有设置为未选中,然后将$\u POST['chkid']中的所有复选框设置为选中