使用isset验证选项[]

时间:2013-02-28 12:49:14

标签: php arrays validation isset

嘿,我在使用选项[]数组工作时遇到一些麻烦,如果有人可以提供帮助那就太棒了 表格

<form method="post" action="array2.php">
<select name="options[]">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<input name="submit" type="submit" value="submit">
</form>

array2.php

<?php
session_start();
if(isset($_POST['submit'])){
    if($_POST['options[]'] == "" ){
        header("Location: error.html");
        exit; 
    }else{
        $checked = $_POST['options'];
        $_SESSION['checked'] = $checked;
    }
}
?>

任何帮助都会很棒,即使它是一个空的场地,也会发生什么事情,事情进展到脚本的其余部分

脚本的其余部分

    <?php
    for($i=0; $i < count($checked); $i++){
        echo "You have selected to recive " . $checked[$i] . " tickets<br/>";
    }
    for($i=0; $i < count($checked2); $i++){
        echo "And you have selected to recive " . $checked2[$i] . " for accommodation are you sure? <br/>";
    }
?>

对不起我现在无法回复人,因为我发布课程来到空房间所以需要等一个小时:/

5 个答案:

答案 0 :(得分:3)

您需要将options[]更改为option,因为这意味着您要提交多个具有相同名称的选项

<form method="post" action="array2.php">
<select name="options">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<input name="submit" type="submit" value="submit">
</form>

在您的array2.php文件中

<?php
session_start();
if(isset($_POST['submit'])){
    if($_POST['options'] == "" ){
        header("Location: error.html");
        exit; 
    }else{
        $checked = $_POST['options'];
        $_SESSION['checked'] = $checked;
    }
}
?>

如果您确实需要发送options[]

<?php
session_start();
if(isset($_POST['submit'])){
  if(is_array($_POST['options']){
    if($_POST['options'][0] == "" ){
        header("Location: error.html");
        exit; 
    }else{
        $checked = $_POST['options'][0];
        $_SESSION['checked'] = $checked;
    }
  }else{
    if($_POST['options'] == "" ){
        header("Location: error.html");
        exit; 
    }else{
        $checked = $_POST['options'];
        $_SESSION['checked'] = $checked;
    }
  }
}
?>

如果你愿意,你可以清理这个

答案 1 :(得分:1)

您可以使用此示例代码

<?php 
    if($_POST) { 
        if(isset($_POST['state'])) { 
            if($_POST['state'] == 'NULL') { 
                echo '<p>Please select an option from the select box.</p>'; 
            } 
            else { 
                echo '<p>You have selected: <strong>', $_POST['state'], '</strong>.</p>'; 
            } 
        } 
    } 
?> 

和您的HTML代码

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <fieldset> 
        <legend>Please select a state</legend> 
        <select name="state"> 
            <option value="NULL">-- Please select a state --</option> 
            <option value="AK">AK - Alaska</option> 
            <option value="AL">AL - Alabama</option> 
            <option value="WY">WY - Wyoming</option> 
        </select> 
        <input type="submit" name="submit"> 
    </fieldset> 
</form>

答案 2 :(得分:1)

在你的情况下,options []可用于将多个字段作为数组发送,索引以0开头,例如:

<input name="test[]"> : index 0

<input name="test[]"> : index 1

然后,您可以在$ _POST ['test']中获取这些值,如下所示:

$input_one = $_POST['test'][0];
$input_one = $_POST['test'][1];

如果你在$ _POST里看这个,它会是这样的:

$_POST = array (
...,
'test' => array(0=> ..., 1 => ...)
)

对于你的表单,如果你只有一个选项[],则值为$ _POST将是

if(isset($_POST['options'][0])){

}

答案 3 :(得分:0)

所以让我们把它清理干净

<select name="options">

您不需要选项[]。

然后$_POST['options']的结果将是选项的值。然后添加<option value="0">Select</option>,然后检查POSTed数据是否高于0

答案 4 :(得分:0)

in html

<select name="options">
<option value="0"></option>
<option value="1">1</option>
.
.

在php中

    if(isset($_POST['options']) && !empty($_POST['options'])) {
      $checked = $_POST['options'];
    }