2011-06-28 103 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