如果“选择”验证失败,则回发数据

时间:2012-07-17 02:43:27

标签: php

提交选定选项后,不会存储数据。 只想知道如果验证失败,如何回发数据

以下行对我来说真的不起作用。

    <select id="numbers" name="numbers" value="<?php echo (isset($_POST['numbers'])) ? $_POST['numbers'] : " "; ?>"/>

如果有人可以帮助我?

非常感谢,这是我的代码

<?php

if(isset($_POST['numbers']) &&($_POST['fruits']) && $_POST['numbers'] != "null" && $_POST['fruits'] !== "null")
{
  echo "Thank you!";
} elseif  (isset($_POST['numbers']) && $_POST['numbers'] = "null") {
    echo "you forgot to choose a number";
    }
    elseif(isset($_POST['fruits']) && $_POST['fruits'] = "null")
{
    echo "you forgot to choose fruit name";
    }

?>



  <form id="form" name="form"  method="post" action="">

      <label for="expiry">Select</label>
                <select id="numbers" name="numbers" value="<?php echo (isset($_POST['numbers'])) ? $_POST['numbers'] : " "; ?>"/>
                <option value="null" selected="selected">-</option>
                <option  value="01">01</option>
                <option value="02">02</option>
                <option value="03">03</option>
              </select>

                <select id="fruits" name="fruits" value="<?php echo (isset($_POST['fruits']))? $_POST['fruits'] : ''; ?>"/>
                <option value="null" selected="selected">-</option>
                <option value="Apple">Apple</option>
                <option value="Banana">Banana</option>
                <option value="Pear">Pear</option>

              </select>

   <input type="submit" value="Send"  />
  </form>

解决了它,也许不是最好的方法,但至少把它排序了:

<?php
$item = null; # 
$itemyear = null; 

if(isset($_POST['numbers'])){
$item = $_POST['numbers'];
}
if(isset($_POST['fruits'])){
$itemyear = $_POST['fruits'];
}



if(isset($item) && isset($itemyear) && $item != "null" && $itemyear !== "null")
{
  echo "Thank you!";
} elseif  ($item == "null") {
    echo "you forgot to choose a number";
    }
    elseif($itemyear == "null")
{
echo "you forgot to choose fruit name";
}



?>



  <form id="form" name="form"  method="post" action="">

      <label for="expiry">Select</label>
            <select id="numbers" name="numbers" />
                <option value="null" selected="selected">-</option>
                <option  value="01" <?php if($item == '01'): echo "selected='selected'"; endif; ?>>01</option>
                <option value="02" <?php if($item == '02'): echo "selected='selected'"; endif; ?>>02</option>
                <option value="03" <?php if($item == '03'): echo "selected='selected'"; endif; ?>>03</option>
              </select>

              <select id="fruits" name="fruits" />
                <option value="null" selected="selected">-</option>
                <option value="Apple"<?php if($itemyear == 'Apple'): echo "selected='selected'"; endif; ?> >Apple</option>
                <option value="Banana"<?php if($itemyear == 'Banana'): echo "selected='selected'"; endif; ?>>Banana</option>
                <option value="Pear"<?php if($itemyear == 'Pear'): echo "selected='selected'"; endif; ?>>Pear</option>

              </select>

   <input type="submit" value="Send"  />
  </form>


<?php 
echo $item ."-". $itemyear;
?>

3 个答案:

答案 0 :(得分:0)

PHP isset()函数返回true或false(取决于输入是否为...... well ... set。

您可能想要使用此: value='<?php echo (isset($_POST['numbers'])) ? $_POST['numbers'] : ""; ?>

答案 1 :(得分:0)

您无法在value上设置<select>属性。您必须找到正确的<option>并设置其selected属性。就个人而言,我在data-default上添加了<select>属性,然后使用JavaScript循环选项并找到正确的选项。

答案 2 :(得分:0)

哦,现在我明白了。

我不知道通常要做什么只是一种方法是在重定向用户时将所有数据作为查询字符串。之所以没有留在$ _POST全局,是因为它只保留在你发布的页面上然后就消失了。

所以当你重新定向用户时

if(validationFailed)
{
    header("Location: page.php?data=example");
}

然后可以使用

在page.php中检索数据
$data = $_GET['data']; // contains "example"