在php中页面重新加载到自身后保留文本框中的值吗?

问题描述 投票:0回答:3

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

<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
3个回答
0
投票

正确,我认为您需要了解有关工作原理的一些基础知识,因此,我将忽略您正在使用的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,但是您的<form标记告诉浏览器使用method="post",因此在整个代码中,您应该一直使用$ _POST数组而不是$ _GET数组。

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

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

<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类作为安全性内容!

像这样放,

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>

0
投票

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


-1
投票

像这样放,

© www.soinside.com 2019 - 2024. All rights reserved.