基本上我有一个简单的用户页面,我通过登录页面登录后访问。在用户页面中,我之前的注册中显示了我的个人数据。还有一个表格,我可以输入新的信息,如我最喜欢的颜色和爱好(我可以插入多次)。所有记录都成功进入数据库。问题是,每次我从用户页面的表单提交新数据时,我在同一页面显示的个人数据都会消失。当我检查数据库时,没有任何东西丢失,一切都在那里。唯一的问题是,每次我提交数据时,我在同一页面上显示的个人数据都会消失。当我登录时,它会再次出现。我怀疑每次按下提交按钮插入新信息时,循环都可能是非无限的。
如果这是问题,如何创建无限循环。请帮助。如果这不是问题,请帮助我。 tq这么多。以下是我脚本的一部分。 TQ
<?php
//useracc-test.php
//start session
session_start();
// require 'lib/password.php';
require 'connect-test.php';
//retrieving part below
$userName= isset($_POST['username']) ? $_POST['username'] : '';
//$id= isset($_POST['id']);
$query = "SELECT id, name, username, telno FROM users WHERE username = ?";
$stmt = $conn->prepare($query);
$stmt->bind_param('s', $userName);
$stmt->execute();
$res = $stmt->get_result();
?>
<html>
<head>
<style type="text/css">
#apDiv2 {
position: absolute;
left: 272px;
top: 148px;
width: 350px;
height: 338px;
z-index: 1;
}
#apDiv3 {
position: absolute;
left: 37px;
top: 379px;
width: 320px;
height: 157px;
z-index: 2;
}
</style>
<link href="SpryAssets/SpryTabbedPanels.css" rel="stylesheet" type="text/css">
<script src="SpryAssets/SpryTabbedPanels.js" type="text/javascript"></script>
</head>
<body>
<div id="apDiv3">
<div id="TabbedPanels1" class="TabbedPanels">
<ul class="TabbedPanelsTabGroup">
<li class="TabbedPanelsTab" tabindex="0">Tab 1</li>
<li class="TabbedPanelsTab" tabindex="0">Tab 2</li>
</ul>
<div class="TabbedPanelsContentGroup">
<div class="TabbedPanelsContent">
<p>
</p>
<?php while($row = $res->fetch_array()): ?>
<p><?php echo $row['id']; ?></p>
<p><?php echo $row['name']; ?></p>
<p><?php echo $row['username']; ?></p>
<p><?php echo $row['telno']; ?>
<?php endwhile; ?>
<?php
if(isset($_POST['submit']))
{
$id = $_POST['id'];
$name2 = $_POST['name2'];
$color2 = $_POST['color2'];
$hobby2 = $_POST['hobby2'];
$stmt = $conn->prepare("INSERT INTO useradvert (id,name2,color2,hobby2) VALUES (?,?,?,?)");
$stmt->bind_param("isss",$id,$name2,$color2,$hobby2);
$stmt->execute();
// $stmt->close();
// $conn->close();
}
?>
</p>
</div>
<div class="TabbedPanelsContent">
<form name="form2" method="post" action="useracc-test.php">
<p> </p>
<p>id :
<input type="text" name="id" id="id">
</p>
<p>name :
<input type="text" name="name2" id="name2">
</p>
<p>color2 :
<input type="text" name="color2" id="color2">
</p>
<p>hobby2 :
<input type="text" name="hobby2" id="hobby2">
</p>
<p>
<input type="submit" name="submit" id="submit" value="submit">
</p>
</form>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</div>
</div>
</div>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>
<script type="text/javascript">
var TabbedPanels1 = new Spry.Widget.TabbedPanels("TabbedPanels1");
</script>
</body>
</html>
答案 0 :(得分:1)
当您提交表单时,浏览器会使用提交表单返回的内容刷新页面。因此,在脚本更新数据库之后,它需要显示配置文件的新内容,就像原始配置文件页面一样。
执行此操作的一种简单方法是让脚本将重定向发送回显示配置文件表单的页面。完成后,它可以:
header("Location: profile.php");
另一个选择是使用AJAX提交更改,而不是正常的HTTP表单提交。您需要为此学习Javascript。
答案 1 :(得分:0)
代码将是:
while (true) {
//loop body
}
但是,max_execution_time
到期后ini_set('max_execution_time', 300);
,PHP代码停止执行。你不想在PHP中有一个无限循环,因为你想要从PHP输出,而这只会在脚本完成后才会发生。
无限循环适用于嵌入式代码,其中机器必须像机器人或时钟无线电一样运行代码。
答案 2 :(得分:0)