【问题标题】:Can't get value from POST无法从 POST 中获取价值
【发布时间】:2020-10-21 21:09:33
【问题描述】:

这是我创建的更新页面的一部分,如果勾选,我可以将某些图像设为私有。 这是我的表格:

/* MYSQL rows - Photo ID & Privacy */

$photo_id = $row['id'];
$photo_private = $row['private'];

    
/* Privacy setting for photo(s) */

if ($photo_private == "1") {

    echo '<input type="checkbox" name="private_photo['.$photo_id.']" value="1" checked>';

       } else {

     echo '<input type="checkbox" name="private_photo['.$photo_id.']" value="0">';

 }

下面是我的表单提交到的页面。我可以很好地获取照片 ID,但我不知道如何将 value="x" 保存到 $value 中

foreach ($_POST['private_photo'] as $plz_pvt) {

        $value = $_POST['private_photo'];
        
        $sql = "UPDATE photos SET private='$value' WHERE id='$plz_pvt'";
        $result = mysqli_query($con, $sql);

    }

【问题讨论】:

    标签: php mysql arrays forms foreach


    【解决方案1】:

    首先,去掉value="0" 的复选框。这并不像您期望的那样工作。如果未选中复选框,则根本不会将其发送到服务器。这意味着如果它被选中,它将发送值0,所以它永远不会被正确设置。

    接下来,添加一个具有相同名称和value="0" 的隐藏输入。如果此输入放置在复选框之前,则如果未选中该复选框,则会将其发送到服务器。如果复选框被选中,它会覆盖这个隐藏的输入。

    //ternary - variable holds 'checked' if `$photo_private == 1`, or an empty string if not.
    $is_checked = $photo_private == "1" ? 'checked' : '';
    
    //hidden input - Submitted if checkbox is not checked.
    echo '<input type="hidden" name="private_photo['.$photo_id.']" value="0">';
    
    //checkbox - overwrites previous hidden input if checked. 
    //Utilizes `$is_checked` to check the checkbox by default when appropriate
    echo '<input type="checkbox" name="private_photo['.$photo_id.']" value="1" '.$is_checked.'>';
    

    这应该有效,因为如果选中该复选框,它将覆盖隐藏输入中的值。不勾选则提交隐藏的输入值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 2017-09-07
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      相关资源
      最近更新 更多