怀疑检索值

时间:2011-06-28 17:43:40

标签: php

我创建了一个名为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 }

我的问题还没解决,如果在点击更新按钮之前页面被刷新我会丢失所有值。

4 个答案:

答案 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.
        */
    ?>