我创建了一个名为edit.php
的网页。我使用编辑按钮从action.php
移动了此页面。我已成功检索相应文本框和其他表单项中的值。我有问题,如果错误地刷新edit.php
页面,则所有值都消失了。维持价值观的其他方法是什么?如果页面没有刷新,事情进展顺利。如果创建会话变量而不是如何从会话变量和数据库中检索值?
我对问题做了什么..我在action.php
页面上请求了“albumid”..
session_start();
$aid = mysql_real_escape_string($_REQUEST['albumid']);
现在,如果使用编辑按钮通过action.php
页面请求edit.php
页面。比我创建了一个会话变量。在成功更新查询后销毁它。
if (isset($_POST["edit"])) {
$_SESSION["aid"]=$aid;
$result= mysql_query("SELECT * FROM table WHERE a_id =".$_SESSION["aid"]) or die(mysql_error());
$row=mysql_fetch_array($result); }
这意味着现在会话已创建..如果刷新页面,则会话值保持不变,因此从此变量中选择值。
if($_POST['update']!="") {
Update query
session destroyed }
我的问题还没解决,如果在点击更新按钮之前页面被刷新我会丢失所有值。
答案 0 :(得分:0)
会话变量只是您放入$_SESSION
超全局的数据。访问它们与访问任何其他数组没有什么不同,除了会话数组是自动保存的。您需要记住的是在对会话做任何事情之前先做session_start()
。
$_SESSION['formfield1'] = $_POST['formfield1'];
$_SESSION['formfield2'] = $_POST['formfield2'];
etc...
<input type="text" name="formfield1" value="<?php echo htmlspecialchars($_SESSION['formfield1']) ?>" />
默认情况下,PHP使用基于文件的会话。要将它放入数据库,您必须编写自己的会话处理程序并使用session_set_save_handler()
将PHP指向它们。
答案 1 :(得分:0)
提交时,将值保存在适当命名的$ _SESSION成员中。然后在你的页面上,如果你在$ _GET / $ _ POST中找不到成员,你可以选择在$ _SESSION中查找它们。或相反亦然。每次用户提交表单时,您应该始终更新$ _SESSION以使值最新。 (如果他们回溯,或重新提交,或等等)。
答案 2 :(得分:0)
session_start();
if (!empty($_POST)) {
$_SESSION['post'] = $_POST;
}
elseif (empty($_POST) && !empty($_SESSION['post'])) {
$_POST = $_SESSION['post'];
}
当你完成它时,不要忘记unset($_SESSION['post']);
。
答案 3 :(得分:0)
如果我正确理解了你的问题,我认为你需要来自数据库和会话的一些变量。
只需将数据库元组的键(或多个值的键)与其他内容一起放入。页面,加载时将检查会话变量,当它找到密钥时,它可以使用它从数据库中检索数据。
在上一页中,代码如下所示:
$_SESSION["player_key"] = 56;
$_SESSION["tournament_key"] = 100;
当前页面,开始处理如下:
<?php
session_start();
$player = $_SESSION["player_key"];
$tournament = $_SESSION["tournament_key"];
/*
* your database connection steps
*/
$query = "select * from player where pid=".$player;
$res = mysql_query($query);
/*
Now assign values for your forms/components here or anywhere in the page. You don't have to read anything from the querystring.
*/
?>