【问题标题】:keep value in textbox after page reload to itself in php?页面在php中重新加载到自身后在文本框中保留值?
【发布时间】:2015-06-03 09:51:26
【问题描述】:

我在一个表单中有两个文本框和两个下拉菜单。在文本框中填充值并从下拉列表中选择值后,页面会重新加载,并根据下拉列表中选择的值填充其他下拉列表。但是文本框中的值不存在。如何保留这些文本框的值。

<html>
<head>

</head>
<body>
<form action="selectmultiplepost.php" method="post" name="myform">

First Name<input type="text" name="firstname" value=""><br>
Last Name<input type="text" name="lastname" value=""><br>


Industry Name <select name="industryid" id="industrySelect" onchange="document.location.href = 'selectmultiple.php?industryid=' + this.value">
<option>SELECT</option>
<?php
include('config.php');

$query = "select IndustryId, IndustryName from industrytable";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0)
{
    while($fetch = mysql_fetch_array($result))
    {
        ?>
        <option value="<?php echo $fetch['IndustryId'];?>"><?php echo $fetch['IndustryName'];?></option>
        <?php
    }
}


?>
</select><br>
Skills <select name="skillname">
<option>SELECT</option>
<?php
include('config.php');

if(isset($_GET['industryid']))
{
$industryID = $_GET['industryid'];
}
else
{
$industryID = "";
}

$skillQuery = "select SkillId, SkillName from skilltable where Industryid='".$industryID."'";
$resultSkill = mysql_query($skillQuery);
if(mysql_num_rows($resultSkill) > 0)
{
    while($fetch = mysql_fetch_array($resultSkill))
    {
        ?>
        <option value="<?php echo $fetch['SkillId'];?>"><?php echo $fetch['SkillName'];?></option>
        <?php
    }
}

?>

</select><br>
<input type="submit" name="submitform" value="submit"/>
</form>

<script>

document.getElementById('industrySelect').value = "<?php echo $_GET['industryid'];?>";
</script>

</body>
</html>

【问题讨论】:

    标签: php forms drop-down-menu onchange retain


    【解决方案1】:

    是的,我认为您需要了解一些有关工作原理的基础知识,因此我将忽略您正在使用 mysql_* 扩展名这一事实,因为它已被弃用,因此您不应再使用它。

    好的,所以首先要记住的是,每次您 a) 从浏览器启动页面和/或 b) 按提交按钮时,php 脚本/页面都会从上到下执行。

    关于您的实际问题,这意味着您的表单中创建 First NameLast Name 输入字段的两行将在您每次执行时对其进行编码。

    所以如果你想重新加载用户输入的内容,你必须自己做,恐怕不是魔术。

    <form action="selectmultiplepost.php" method="post" name="myform">
    
    First Name<input type="text" name="firstname" value=""><br>
    Last Name<input type="text" name="lastname" value=""><br>
    

    因此,您需要检查用户是否输入了任何内容,就像您在页面后面为industryid 所做的那样,如果是,则将该值放入value="" 属性中。像这样的

    <?php
        $fn = !empty($_POST['firstname']) ? $_POST['firstname'] : '';
        $ln = !empty($_POST['lastname']) ? $_POST['lastname'] : '';
    ?>
        First Name<input type="text" name="firstname" value="<?php echo $fn;?>"><br>
        Last Name<input type="text" name="lastname" value="<?php echo $ln;?>"><br>
    

    我还注意到后面的代码使用了$_GET,但你的&lt;form标签告诉浏览器使用method="post",所以你应该一直使用$_POST数组而不是$_GET数组。代码。

    我还在您的代码中看到了许多其他错误,但由于它们不是您问题的主题,我将把这些留给您询问其他有关的问题

    【讨论】:

    • 谢谢您,先生,我非常感谢您的帮助,但它仍然无法正常工作。页面刷新后文本字段为空。但是使用 ajax 可以正常工作
    • 当您按下提交按钮时,他们是否填写了用户输入的内容? 页面刷新后不太清楚你的意思
    • 没有。在按下提交按钮时,页面被重定向到服务器端脚本,比如 xyz.php。当我从行业下拉列表中选择一个行业时,填充文本输入后,请求被发送到服务器上的 php 脚本(此处页面刷新),该脚本返回与该行业对应的技能数组。现在,在访问服务器之后,我在文本字段中输入的值不再是它们的值。
    【解决方案2】:

    我认为简单的方法是这样的:

    <form action="selectmultiplepost.php" method="post" name="myform">  
    First Name<input type="text" name="firstname" value="<?php if(isset($_POST['firstname'])){
    echo $_POST['firstname'];} ?>">
    
    <br>
    Last Name<input type="text" name="lastname" value="<?php if(isset($_POST['lastname'])){
    echo $_POST['lastname'];} ?>">
    
    <!-- begin snippet: js hide: false console: true babel: false -->
    <br>
    
    <input type="submit" name="submitform" value="submit"/>
    </form>
    

    顺便说一句,对于 SQL 查询,使用 PDO 类来处理安全问题!

    【讨论】:

      【解决方案3】:

      这样放,

      First Name<input type="text" name="firstname" value=isset($_GET['firstname'])? $_GET['firstname']:""><br>
      
      Last Name<input type="text" name="lastname" value=isset($_GET['lastname'])? $_GET['lastname'] :""><br>
      

      【讨论】:

      • 为什么我们在这里使用 $_GET?
      • 提交后设置值
      • 我没有提交表单,而是在更改下拉列表值时重新加载页面,以便填充第二个下拉列表。表单方法也是post。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      • 2021-04-05
      • 1970-01-01
      相关资源
      最近更新 更多