这让我疯了。我知道还有其他问题可以解决这个问题,我想我已经尝试了所有我在其中阅读过的内容。 要么我误解了一些非常基本的东西,要么需要另外一双眼睛。
因此,当使用登录凭据和诸如此类的代码满足此代码时,已经启动了会话。我正在尝试从选择的表单中获取选中的选项并使用它们。
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>";
}
}
echo <<<_END
<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" >
<option value="Opt1"> Choice1</option>
<option value="Opt2"> Choice2</option>
<option value="Opt3"> Choice3</option>
<option value="Opt4"> Choice4</option>
</select>
</span><br /><br />
_END;
?>
<input type='submit' value='Save Profile' />
</form></div><br /></body></html>
我只粘贴相关位。
当我选择并单击“保存”时,我只会获得其他分支。
编辑:似乎尝试使用表单上的默认编码无法解决此问题。
答案 0 :(得分:1)
此代码应清楚说明发生了什么。
如果没有单击任何选项,则$ _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>
答案 1 :(得分:0)
你可以使用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 />
bassicaly你需要在你的选择组中添加[]到你的选项,并从你的选择名称中删除[]。并使用上面的代码