9 表单

1 处理表单输入

获取从表单输入的数据

<?php if($_SERVER['REQUEST_METHOD'] == 'GET') { ?>
<form action="<?php echo $_SERVER['SCRIPT_NAME'] ?>" method="post">
    What is your first name?
    <input type="text" name="first_name" />
    <input type="submit" value="Say Hello" />
</form>
<?php } else {
    echo 'Hello, '.$_POST['first_name'].'|';
}

2 处理多页表单

在最后一个页面中显示前几个页面所保存的数据,用_SESSION保存每个页面的信息

<?php
session_start();
if(($_SERVER['REQUEST_METHOD'] == 'GET') || (!isset($_POST['stage'])))
{
    $stage = 1;
}
else
{
    $stage = (int)$_POST['stage'];
}
if($stage > 1)
{
    foreach($_POST as $key => $value)
    {
        $_SESSION[$key] = $value;
    }
}
if($stage == 1){ ?>

<form action='<?php echo $_SERVER['SCRIPT_NAME'] ?>' method='post'>
    Name: <input type='text' name='name'/></br>
    Age: <input type='text' name='age'/></br>
    <input type='hidden' name='stage' value='<?php echo $stage + 1 ?>'/>
    <input type='submit' value='Next'/>
</form>
<?php } else if($stage == 2){ ?>
<form action='<?php echo $_SERVER['SCRIPT_NAME'] ?>' method='post'>
    Favorite Color: <input type='text' name='color'/><br>
    Favorite Food: <input type='text' name='food'/><br>
    <input type='hidden' name='stage' value='<?php echo $stage + 1 ?>'/>
    <input type='submit' value='Done' />
</form>
<?php } else if($stage == 3){ ?>
    Hello <?php echo $_SESSION['name'] ?>.
    You are <?php echo $_SESSION['age']?> years old.
    and your favorite food is <?php echo $_SESSION['food'] ?>
<?php } ?>

3 重新显示带有内置错误的表单

<?php
$flavors = array('Vanilla', 'Chocolate', 'Rhinoceros');

if($_SERVER['REQUEST_METHOD'] == 'GET')
{
    display_form(array());
}
else
{
    $errors = validate_form();
    if(count($errors)) {
        display_form($errors);
    }
    else {
        print 'The form is submitted!';
    }
}
function display_form($errors)
{
    global $flavors;
    global $defaults;
    $defaults['name'] = isset($_POST['name']) ? htmlentities($_POST['name']): '';
    $defaults['age'] = isset($_POST['age']) ? "checked='checked'" : '';
    foreach ($flavors as $flavor) {
        if(isset($_POST['flavor']) && ($_POST['flavor'] == $flavor)) {
            $defaults['flavor'][$flavor] = "selected='selected'";
        }
        else {
            $defaults['flavor'][$flavor] = '';
        }
    }
}
?>

<form action="<?php echo $_SERVER['SCRIPT_NAME']?>" method="post">
    <dl>
        <dt>Your Name:</dt>

        <div>
            <dd><input type="text" name="name" value='<?php echo $defaults['name'] ?>' /></dd>
            <?php print_error('name', $errors) ?>
        </div>
        <div>
            </dd><dt>Are you over 18 yeas old?</dt>
            <dd>
                <input type="checkbox" name="age" value="1" <?php echo $defaults['age']?>/>
                Yes
            </dd>
            <?php print_error('age', $errors)?>
        </div>
        <dt>Your favorite ice cream flavor:</dt>
        <?php print_error('flavor', $errors) ?>
        <dd>
            <select name='flavor'>
                <?php foreach($flavors as $flavor)
                {
                    echo "<option {$defaults['flavor'][$flavor]}>$flavor</option>";
                }?>
            </select>
        </dd>
    </dl>
    <input type="submit" value="Send Info"/>
</form>

<?php
function print_error($key, $errors){
    if(isset($errors[$key]))
    {
        /**print "<dd class='error'> {$errors[$key]} </dd>";**/
        print "<font class='error' color='#FF0000'>{$errors[$key]}</font>";

    }
}

function validate_form()
{
    global $flavors;
    $errors = array();
    if(!(isset($_POST['name']) && (strlen($_POST['name']) > 3))) {
        $errors['name'] = 'Enter a name of at least 3 letters';
    }
    if(! isset($_POST['age']) || ($_POST['age'] != '1')) {
        $errors['age'] = 'Invalid age checkbox value';
    }
    if(!(isset($_POST['flavor']) && (in_array($_POST['flavor'], $flavors))))
    {
        $errors['flavor'] = 'Choose a valid flavor';
    }
    return $errors;
}
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值