【问题标题】:How to Select PHP Multidimensional Array items with Checkbox Form如何使用复选框形式选择 PHP 多维数组项
【发布时间】:2022-01-13 02:52:21
【问题描述】:

我对 PHP 很陌生,而且只是一般的代码,所以如果我的代码看起来一团糟,我深表歉意。

我创建了一个多维数组,当某些复选框被选中并通过表单提交时,我只希望显示选定的数组项。例如,John Smith 的信息和图像只有当他被选中时。

这是我的多维数组:

<?php
$characters = array (

  'john' => 
  array (
    'first_name' => 'John',
    'last_name' => 'Smith',
    'age' => '40',
    'image_url' => 'images/john.png',
  ),
  'jane' => 
  array (
    'first_name' => 'Jane',
    'last_name' => 'Doe',
    'age' => '30',
    'image_url' => 'images/jane.png',
  ),
  'sara' => 
  array (
    'first_name' => 'Sara',
    'last_name' => 'Johnson',
    'age' => '10',
    'image_url' => 'images/sara.png',
  )
)
?>

这是我的 html 表单:

<h3 class="form__heading"> Select characters to show </h3>
<form method="post">
<ul class="form__items">

<!--John-->
<li class="form__item">
<label for="john">John Smith </label>
<input id="john" type="checkbox" name="john">
</li>
                                        
<!--Jane-->
<li class="form__item">
<label for="jane">Jane Doe </label>
 <input id="jane" type="checkbox" name="jane">
 </li>
                                        
<!--Sara-->
<li class="form__item">
<label for="sara">Sara Johnson </label>
<input id="sara" type="checkbox" name="sara">                           
</li>
</ul>
                                    
<!--Button-->
<input class="form__button" type="submit" value="Show Characters">
</form>

我尝试过 foreach 和 for 循环,但我认为我做错了。非常感谢任何帮助!

【问题讨论】:

  • 那么如果你选择两个列表项,应该只显示这两个的信息?
  • 是的!这就是我希望做的。
  • 那么您面临的问题是什么?
  • 我无法弄清楚 PHP 以在提交表单时显示所选列表项。
  • 请发布您的 PHP 脚本(除了数组) - 至少显示您尝试过的内容 - 您提到您已经尝试过 foreach /looping

标签: php html arrays forms


【解决方案1】:

我解决了你的问题,请查看我在下面给你的脚本

html代码会是这样的

<form action="index.php" method="post">
<ul class="form_items">
<!--John-->
<li class="form_item">
<label for="john">John Smith </label>
<input id="john" type="checkbox" name="characters[]" value="john">
</li>                               
<!--Jane-->
<li class="form__item">
<label for="jane">Jane Doe </label>
 <input id="jane" type="checkbox" name="characters[]" value="jane">
 </li>                            
<!--Sara-->
<li class="form_item">
<label for="sara">Sara Johnson </label>
<input id="sara" type="checkbox" name="characters[]" value="sara">                           
</li>
</ul>

php脚本会是这样的

    <?php
$characters = array (
    'john' => 
    array (
      'first_name' => 'John',
      'last_name' => 'Smith',
      'age' => '40',
      'image_url' => 'images/john.png',
    ),
    'jane' => 
    array (
      'first_name' => 'Jane',
      'last_name' => 'Doe',
      'age' => '30',
      'image_url' => 'images/jane.png',
    ),
    'sara' => 
    array (
      'first_name' => 'Sara',
      'last_name' => 'Johnson',
      'age' => '10',
      'image_url' => 'images/sara.png',
    )
    );

if(isset($_POST['submit'])){
    $selectedCharacter = $_POST['characters'];
    foreach ($selectedCharacter as $Character) {
        echo "first_name:- ".$characters[$Character]['first_name'].'<br>';
        echo "last_name:- ".$characters[$Character]['last_name'].'<br>';
        echo "age:- ".$characters[$Character]['age'].'<br>';
        echo "image_url:- ".$characters[$Character]['image_url'].'<br><br>';
    }
}
?>

参考本频道https://www.youtube.com/channel/UCnqWFcMpFA_dsxEzt7lKxJA

【讨论】:

  • 嘿,这是一个很好的答案!由于 OP 通常是编码新手,我想我会解释一下您所做的事情。复选框的名称已更改为“characters[]”,这意味着发布的数据将被视为一个数组。 CodeAlgo 然后将字符名称设置为该数组中的一个值。在 PHP 脚本中,foreach 循环遍历该数组,使用该值作为键从您现有的 $characters 数组中选择数据。
  • 非常感谢你们!这对我有用,我很感激帮助我朝着正确的方向前进。我的小项目可能看起来不是最好的,但至少现在它可以工作了! :)
  • @n1021 如果这对您有用,请标记为已接受
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2018-11-11
相关资源
最近更新 更多