繁体   English   中英

PHP和HTML选择标签

[英]PHP and HTML select tag

我已经开始使用PHP和HTML,并希望通过三个下拉列表(选择标记)执行简单的代码。 但是当我从其中一个进行选择时,其他两个选择的值就会消失。 提交值时应保存值,然后回显。 如果是,我该怎么办。 示例代码将不胜感激。

    <?php // formtest_2.php 

$name_vid = $name_type = $name_model = "";

if (isset($_POST['vid']))$name_vid=($_POST['vid']);
else $name_vid="no";

if (isset($_POST['type']))$name_type=sanitizeString($_POST['type']);
else $name_type="no";

if (isset($_POST['model']))$name_model=sanitizeString($_POST['model']);
else $name_model="no";

echo <<<_END
<html>
    <head>
        <title>Form Test Two</title>
    </head>
    <body>

    Make your selection:

<form action="formtest_2.php" method="post">

    <select name="vid" size="1">

    <option value="" selected>Product</option>

    <option value = "apple">apple</option>
    <option value = "cherry">cherry</option>
    <option value = "orange">orange</option>

    </select>

<input type="submit"/><br />        

    <select name="type" size="1">

    <option value="" selected>Color</option>

    <option value = "green">green</option>
    <option value = "red">red</option>
    <option value = "orange">orange</option>

    </select>

<input type="submit"/><br />        

    <select name="model" size="1">

    <option value="" selected>Model</option>

    <option value = "1-a">1-a</option>
    <option value = "2-b">2-b</option>
    <option value = "3-c">3-c</option>

    </select>

<input type="submit"/><br />

    </form>
    </body>
</html>
_END;

echo "Your selection is: $name_vid and $name_type and $name_model"; 

function sanitizeString($var)
{
    $var = stripslashes($var);
    $var = htmlentities($var);
    $var = strip_tags($var);

    return $var;
}
?>

我认为您需要在提交后重新选择下拉菜单的值。 以下代码将解决。

<?php // formtest_2.php 
$name_vid = $name_type = $name_model = "(nothing)";

if (isset($_POST['vid']) && $_POST['vid']) $name_vid=($_POST['vid']);

if (isset($_POST['type']) && $_POST['type']) $name_type=sanitizeString($_POST['type']);

if (isset($_POST['model']) && $_POST['model']) $name_model=sanitizeString($_POST['model']); 
?>
<html>
    <head>
        <title>Form Test Two</title>
    </head>
    <body>

    Make your selection:
    <form action="formtest_2.php" method="post">
        <select name="vid" size="1">    
            <option value="">Product</option>        
            <option value = "apple" <?php if($name_vid == 'apple') echo 'selected="selected"'; ?>>apple</option>
            <option value = "cherry" <?php if($name_vid == 'cherry') echo 'selected="selected"'; ?>>cherry</option>
            <option value = "orange" <?php if($name_vid == 'orange') echo 'selected="selected"'; ?>>orange</option>    
        </select>

        <br />

        <select name="type" size="1">
            <option value="">Color</option>    
            <option value = "green" <?php if($name_type == 'green') echo 'selected="selected"'; ?>>green</option>
            <option value = "red" <?php if($name_type == 'red') echo 'selected="selected"'; ?>>red</option>
            <option value = "orange" <?php if($name_type == 'orange') echo 'selected="selected"'; ?>>orange</option>    
        </select>

        <br />        

        <select name="model" size="1">    
            <option value="">Model</option>    
            <option value = "1-a" <?php if($name_model == '1-a') echo 'selected="selected"'; ?>>1-a</option>
            <option value = "2-b" <?php if($name_model == '2-b') echo 'selected="selected"'; ?>>2-b</option>
            <option value = "3-c" <?php if($name_model == '3-c') echo 'selected="selected"'; ?>>3-c</option>    
        </select>

        <input type="submit"/><br />
    </form>
    </body>
</html>
<?php
echo "Your selection is: $name_vid and $name_type and $name_model"; 

function sanitizeString($var)
{
    $var = stripslashes($var);
    $var = htmlentities($var);
    $var = strip_tags($var);

    return $var;
}
?>

我不会使用heredoc语法(“ <<<”)来打印HTML。

试试看,我做了一个提交按钮,并在提交后重新选择了值:

<?php
// formtest_2.php

$name_vid = $name_type = $name_model = "";

if (isset($_POST['vid']))
    $name_vid = ($_POST['vid']);
else
    $name_vid = "no";

if (isset($_POST['type']))
    $name_type = sanitizeString($_POST['type']);
else
    $name_type = "no";

if (isset($_POST['model']))
    $name_model = sanitizeString($_POST['model']);
else
    $name_model = "no";


///////////////////
if($name_vid == 'apple')
{
    $v1 = 'selected';
}
elseif($name_vid == 'cherry')
{
    $v2 = 'selected';
}
elseif($name_vid == 'orange')
{
    $v3='selected';
}
 ////////////////////////
if($name_type == 'green')
{
    $t1 = 'selected';
}
elseif($name_type == 'red')
{
    $t2 = 'selected';
}
elseif($name_type == 'orange')
{
    $t3='selected';
}


///////////////////////
if($name_model == '1-a')
{
    $m1 = 'selected';
}
elseif($name_model == '2-b')
{
    $m2 = 'selected';
}
elseif($name_model == '3-c')
{
    $m3='selected';
}

?>
<html>
    <head>
        <title>Form Test Two</title>
    </head>
    <body>

        Make your selection:

        <form name="fruite_form" action="formtest_2.php" method="post">

            <select name="vid" size="1">

                <option value="" selected>Product</option>

                <option <?=$v1?> value = "apple">apple</option>
                <option <?=$v2?> value = "cherry">cherry</option>
                <option <?=$v3?> value = "orange">orange</option>

            </select>



            <select name="type" size="1">

                <option value="" selected>Color</option>

                <option <?=$t1?> value = "green">green</option>
                <option <?=$t2?>value = "red">red</option>
                <option <?=$t3?>value = "orange">orange</option>

            </select>



            <select name="model" size="1">

                <option value="" selected>Model</option>

                <option <?=$m1?> value = "1-a">1-a</option>
                <option <?=$m2?>value = "2-b">2-b</option>
                <option <?=$m3?>value = "3-c">3-c</option>

            </select>

            <input name="submitButtom" id="submitButton" type="submit"/><br />

        </form>
    </body>
</html>


<?
echo "Your selection is: $name_vid and $name_type and $name_model";

function sanitizeString($var)
{
    $var = stripslashes($var);
    $var = htmlentities($var);
    $var = strip_tags($var);

    return $var;
}
?>

随意的顶部添加回您的提交按钮。 但是,给每个人一个唯一的名称,也不要忘记命名您的表单,作为一种好的做法,也请给一个ID,该ID与name属性相同。

更新:为了确保您确实得到了帖子,因为这是您的第一个问题,所以请在代码末尾打印

echo $_POST['vid'] . ' ' . $_POST['type'] . ' ' . $_POST['model'] . '<br/><br/>';

并查看post在提交后是否真正拥有该值,如果您从post那里获得了一个值,但没有从分配的变量中得到一个值,则检查顶部使用的条件来分配您的值。

//您需要检查post isset是否具有实际值,仅比应分配的变量要大。 就像西胡所说的那样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM