2015-04-23 33 views
0

我正在一個小型應用程序中,我需要使用數組作爲數據庫。我有一個名爲index.php的php文件中包含名稱和年齡字段的表單。我的index.php看起來是這樣的:我想使用數組作爲數據庫

<pre><code> 
<?php 
session_start(); 
$_SESSION['var'] = 0; 
?> 

<html>  
<body> 
<form action="weloome.php" method="post"> 
    Name : <input type="text" name="name"/><br/> 
    Age : <input type="text" name="age"/><br/> 
    <input type="submit" name="submit" value="Submit" onsubmit= 
    "<?php $_SESSION['var'] += 1; ?>/>"> 
</form> 
</body> 
</html> 
</code> 

在這段代碼中我使用的會話變量var這沾到形式的onsubmit事件增量。它獲得增量,因爲我希望所有值都存儲在名爲db_array()的數組中。

這是第二個文件的welcome.php

<?php 
    session_start(); 
    $db_array[$_SESSION['var']][0] = $_POST['name']; 
    $db_array[$_SESSION['var']][1] = $_POST['age']; 
    print_r($db_array); 
?> 
<a href="index.php">Want to Add more Record? Click Here</a> 

但問題是,$_SESSION['var'] = 0;零每次 初始化時對上述頁面鏈接用戶點擊。這就是爲什麼只顯示最後一條記錄,因爲數組被覆蓋。任何解決這個問題的方法?

在此先感謝。

+0

驗證如果你的$ _SESSION已經有一個值,如果是,請不要'$ _SESSION ['var'] = 0;' –

回答

1

添加一個條件:

if (!isset($_SESSION["var"]) { 
    $_SESSION["var"] = 0; 
} 

這隻會初始化,只有當它尚未初始化之前的會話。

+0

我們遇到了競爭條件:)並提出了確切的答案。 – nilobarp

+0

我想這意味着是正確的! :) – serenhopy

0

在這裏你去:如果你的變量是空的,它會與零初始化,否則將保持不變;-)

<?php 
if(!$_SESSION['var']) 
    $_SESSION['var'] = 0; 
?> 
0

您可以使用此檢查,

if(session_id()=="") 
{ 
    session_start(); 
    $_SESSION['var']=0; 
} 

這隻會在未找到會話時執行。

1

是weloome正確的名字?是一個錯字?

+0

不錯... ;-)哈哈哈+1對於那個伴侶 –

0

在PHP版本5.4 *及更高版本中,這是查看會話是否已啓動的最有效方式。

if(session_status() !== PHP_SESSION_ACTIVE) 
{ 
    // session is not started yet 
    session_start(); 
} 
0

,如果你想進一步發展這一點,你可以使用序列化功能,將其轉換成東西,你可以存儲在一個cookie或許,或者文件或數據庫..

的連載函數將數組轉換爲可以存儲的字符串。有點像json。

如果您還有其他問題,有沒有辦法通知我?我可以關注像facebook/twitter上的人嗎?

相關問題