Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过POST通过php从select表单中获取所有选中的选项?_Php_Html - Fatal编程技术网

如何通过POST通过php从select表单中获取所有选中的选项?

如何通过POST通过php从select表单中获取所有选中的选项?,php,html,Php,Html,这让我快发疯了。我知道还有其他的问题可以解决这个问题,我想我已经尝试了我在其中读到的所有东西。 要么我误解了一些非常基本的东西,要么我需要另一双眼睛来观察这个问题 所以,当这个代码遇到登录凭据之类的问题时,已经启动了一个会话。我试图从select表单中获取选中的选项并使用它们 if(isset($_POST['select'])) { if (is_array($_POST['select'])) { foreach ($_POST['select'] as $x

这让我快发疯了。我知道还有其他的问题可以解决这个问题,我想我已经尝试了我在其中读到的所有东西。 要么我误解了一些非常基本的东西,要么我需要另一双眼睛来观察这个问题

所以,当这个代码遇到登录凭据之类的问题时,已经启动了一个会话。我试图从select表单中获取选中的选项并使用它们

if(isset($_POST['select']))
{    
    if (is_array($_POST['select'])) {
        foreach ($_POST['select'] as $x)
            echo "<p>$x</p>";
        }
    else {
        echo "<p> There is no selection </p>";
    }
}
if(设置($\u POST['select']))
{    
if(是数组($\u POST['select'])){
foreach($_POST['select']作为$x)
回声“$x

”; } 否则{ 回声“没有选择”

”; } }


echo这段代码应该清楚地说明发生了什么

如果未单击任何选择选项,则$\u POST数组中不会创建任何条目

“select[]”的名称告诉PHP,如果为该小部件选择了任何输入,则将输入转换为数组

<?php

if(isset($_POST['select']))
{
    if (is_array($_POST['select'])) {
        foreach ($_POST['select'] as $x)
            echo "<p>$x</p>";
        }
    else { // this cannot happen as nothing comes in when not selected
        echo "<p> There is no selection -- cannot happen</p>";
    }
}
else {
    echo "<p> There is no selection </p>";
}

if (isset($_POST['select'])) {
  var_dump($_POST['select'], 'select'); // you can see what comes in!
}
else {
  echo '<strong>no selected options...</strong>';
}


/*
 * do appropriate 'select' action(s)...
 */
if (isset($_POST['select'])) {

  if (in_array('Opt1', $_POST['select'])) {
     echo '<br/>do Opt1 action...<br/>';
  }

  if (in_array('Opt2', $_POST['select'])) {
     echo '<br/>do Opt2 action...<br/>';
  }

   if (in_array('Opt3', $_POST['select'])) {
     echo '<br/>do Opt3 action...<br/>';
  }

    if (in_array('Opt4', $_POST['select'])) {
     echo '<br/>do Opt4 action...<br/>';
    }
    echo '<br/>';
 }


?>
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Show Select</title>
  </head>

  <body>
    <div class="main" id="main">

        <!-- heading -->
        <strong><?php echo 'Select setting...'?></strong><br/>

          <form method='post' action='' enctype='multipart/form-data'>
           <h3>Enter or edit your details </h3>
           <textarea name='text' cols='50' rows='3'>$text</textarea><br />
           <br />
           <span class='fieldname'>YY:</span>
           <select name="select[]"  multiple="multiple" >
           <option value="Opt1"> Choice1</option>
           <option value="Opt2"> Choice2</option>
           <option value="Opt3"> Choice3</option>
           <option value="Opt4"> Choice4</option>
           </select>
           </span><br /><br />

          <input type='submit' value='Save Profile' />
          </form>
    </div><br />
  </body>
</html>

显示选择

输入或编辑您的详细信息 $text

YY: 选择1 选择2 选择3 选择4


您可以使用foreach

if(isset($_POST['select']))
{    
foreach ($_POST['select'] as $x)
        echo "<p>$x</p>";
    }
else {
    echo "<p> There is no selection </p>";
}
}



 <form method='post' action='profile.php' enctype='multipart/form-data'>
 <h3>Enter or edit your details </h3>
 <textarea name='text' cols='50' rows='3'>$text</textarea><br />
 <br />
 <span class='fieldname'>YY:</span>
 <select name="select"  multiple="multiple" > // remove [] from here //
 <option value="Opt1[]"> Choice1</option>     //change your options to have [] //
 <option value="Opt2[]"> Choice2</option>
 <option value="Opt3[]"> Choice3</option>
 <option value="Opt4[]"> Choice4</option>
 </select>
 </span><br /><br />
if(设置($\u POST['select']))
{    
foreach($_POST['select']作为$x)
回声“$x

”; } 否则{ 回声“没有选择”

”; } } 输入或编辑您的详细信息 $text

YY: //从这里删除[]// 选择1//更改您的选项,使其具有[]// 选择2 选择3 选择4


基本上,您需要将[]添加到选择组中的选项中,并从选择名称中删除[]。使用上面的代码

你是说$\u POST[]不是$\u POST{}吗?在实际代码中就是这样。请大家记住,我有一段完全相同的代码,在另一页上有相同的表单,它确实有效。我试过使用空的,is_数组,没有多个值。还是找不到那种形式的东西。POST数据不知怎么丢失了吗?我自己无法测试这一点,但我认为在使用编码“multipart/form data”传输多个select值时存在错误或其他问题。你介意不用它试试吗?我需要它,因为我在同一页上有一个文件输入、图像和其他一些文本表单。你会用任何方法来解决这个问题吗?所以唯一的修改就是删除动作值?不,你可以把你自己的动作放进去,我只想让它回到这个脚本。另一个更改是$\u POST测试上的else子句。代码已经过测试,应该可以在您的系统上运行。没有选择--无法发生字符串(0)“字符串(6)”选择“。。。你在用什么浏览器测试它?我已经按原样尝试了这段代码,它确实有效。那么问题出在哪里呢?我正在编辑的php非常大,所以我必须使用php插值来输出html。它是标题中的信息吗?“没有选择--不能发生字符串(0)”“字符串(6)”选择“…您用什么浏览器来测试它?”如果您没有选择任何小部件选项,则无法访问内部的“else”子句,因为$\u POST数组中没有“select”条目。这都是服务器端处理。我使用firefox和chrome。出于好奇,我用我的php尝试了这一点。它只保留最后一个选择。然而,为什么他们实际上允许这种语法呢?
if(isset($_POST['select']))
{    
foreach ($_POST['select'] as $x)
        echo "<p>$x</p>";
    }
else {
    echo "<p> There is no selection </p>";
}
}



 <form method='post' action='profile.php' enctype='multipart/form-data'>
 <h3>Enter or edit your details </h3>
 <textarea name='text' cols='50' rows='3'>$text</textarea><br />
 <br />
 <span class='fieldname'>YY:</span>
 <select name="select"  multiple="multiple" > // remove [] from here //
 <option value="Opt1[]"> Choice1</option>     //change your options to have [] //
 <option value="Opt2[]"> Choice2</option>
 <option value="Opt3[]"> Choice3</option>
 <option value="Opt4[]"> Choice4</option>
 </select>
 </span><br /><br />