2011-06-28 108 views
1

我创建了一个名为edit.php的页面。我使用编辑按钮从action.php移至此页上。我已成功检索各个文本框和其他表单项中的值。我有问题,如果错误地这个edit.php页面刷新所有值都没有了。什么是维护价值的其他方式?如果页面没有刷新,虽然事情进展顺利。如果创建会话变量而不是如何从会话变量和数据库中检索值?怀疑检索值

我有问题..我已要求对action.php页“ALBUMID”做..

session_start(); 
$aid = mysql_real_escape_string($_REQUEST['albumid']); 

现在,如果通过edit.php页面使用编辑按钮请求action.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

会话变量只是您放入超全球的$_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指向它们。

0

当您提交时,将值保存在适当命名的$ _SESSION成员中。然后在你的页面上,如果你找不到$ _GET/$ _ POST中的成员,你可以选择在$ _SESSION中查找它们。或相反亦然。每次用户提交表单时,都应该更新$ _SESSION,以使值最新。 (以防他们回溯,或重新提交,或者其他)。

0
session_start(); 
if (!empty($_POST)) { 
    $_SESSION['post'] = $_POST; 
} 
elseif (empty($_POST) && !empty($_SESSION['post'])) { 
    $_POST = $_SESSION['post']; 
} 

只是不要忘记到unset($_SESSION['post']);当你完成它。

+0

,最好使用比isset在这种情况下,空的!我认为 – Sourav

+0

'!isset'和'!空'是相反的概念;) - 但就你而言,这应该不重要。如果键不存在,empty()'不会产生警告,并且如果'$ _SESSION ['post'] == array()''将阻止赋值。然而,'isset()'将允许它分配一个空数组,并且达到相同的净效果。 – Dereleased

+0

我很抱歉,我试图使用** isset **而不是**!empty ** – Sourav

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. 
     */ 
    ?> 
+0

是的,用一个简短的例子来解释这个.. – Aditii

+0

@Aditii检查了这一点 – mihsathe

+0

查看我编辑的代码。 – Aditii