【问题标题】:unable to pass multiple listbox items to php [duplicate]无法将多个列表框项目传递给 php [重复]
【发布时间】:2014-03-30 06:23:00
【问题描述】:

我需要将列表框项的多个元素存储到数据库中,但我无法将元素从 html 表单传递到 php。请帮忙

<html>
<head>
</head>
<body>
<form method="post" action="Save.php">
    <select name="country[]" multiple="multiple">
        <option value="Belgium">Belgium</option>
        <option value="France">France</option>
        <option value="Germany">Germany</option>
        <option value="Holland">Holland</option>
        <option value="Greece">Greece</option>
    </select>
    <input type="Submit" value="Submit" />
</form>
</body>
</html>

    <?php

    if(isset($_POST['submit']))
    {
    $con = $_POST['country'];
    foreach($con as $selected)
    {
    echo 'selected'.$selected;

    }
    ?>

【问题讨论】:

    标签: php html listbox


    【解决方案1】:

    此代码将解决您的问题

        <?php
    
    if(isset($_POST['submit']))
    {
    
        if (isset($_POST['country'])){
            $con = $_POST['country'];
            foreach($con as $selected)
                echo 'selected'.$selected;
        }
    }
    ?>
    
    <html>
    <head>
    </head>
    <body>
    <form method="post" action="Save.php">
        <select name="country[]" multiple="multiple">
            <option value="Belgium">Belgium</option>
            <option value="France">France</option>
            <option value="Germany">Germany</option>
            <option value="Holland">Holland</option>
            <option value="Greece">Greece</option>
        </select>
        <input type="Submit" value="Submit" name="submit" />
    </form>
    </body>
    </html>
    

    【讨论】:

    • 它没有显示任何错误,但我仍然无法打印元素
    • 您需要选择列表中的值,以便显示结果。没有选择会有空的 POST['country'] 值。
    【解决方案2】:

    您没有submitPOST 索引,因此您的isset() 失败。您还缺少代码示例中 if 语句的右大括号。我已经修改了您的示例,将$_POST['country'] 用于isset()。就返回选定的值而言,这一点对我有用:

    <html>
    <head>
    </head>
    <body>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
        <select name="country[]" multiple="multiple">
            <option value="Belgium">Belgium</option>
            <option value="France">France</option>
            <option value="Germany">Germany</option>
            <option value="Holland">Holland</option>
            <option value="Greece">Greece</option>
        </select>
        <input type="Submit" value="Submit" />
    </form>
    </body>
    </html>
    
    <?php
    
        if(isset($_POST['country']))
        {
            $con = $_POST['country'];
            foreach($con as $selected)
            {
                echo 'selected'.$selected;
            }
        }
    ?>
    

    【讨论】:

    • 它不再显示任何错误,但我仍然无法回显列表框元素。
    • 您是否将表单提交传递回运行此测试代码的同一页面?当我运行代码时,加上对print_r($_POST['country'] 的调用,我在浏览器窗口中得到selectedFranceselectedGermanyArray ( [0] =&gt; France [1] =&gt; Germany ) 的输出。
    • 是的,html和php代码在同一个页面。
    • 嗯...奇怪。就像我说的,我从上面的代码中得到了输出,所以你看到的就是我在列表中选择的国家。
    【解决方案3】:
    //the post request takes the Tag NAMES only
    <input type="Submit" value="Submit" name="submit"/>
    

    see this phpfiddle it is working fine only

    【讨论】:

    • 如果名称是一个数组,它将从多选中获取所有值。
    • 是的,他错过了“name=submit”,所以 if 条件返回 false
    • 啊,明白了。我以为你在谈论多选。
    • 做到了,但它的抛出错误是愚蠢的:
    • 其显示:注意:未定义索引:C:\wamp\www\Project_1\Save.php 中的国家/地区在第 4 行
    猜你喜欢
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 2013-09-06
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    相关资源
    最近更新 更多