2011-03-24 95 views
0

我想使用PHP創建主 - 細節頁面。我想從一個關聯數組中獲取數據,而不是從MYSQL數據庫獲取數據。這可能嗎?使用PHP創建主 - 細節頁面

的數據將首先從MySQL數據庫表獲得並存儲一些處理關聯數組內。現在我想根據關聯數組內的數據創建主詳細信息頁面。任何人有想法?

+0

什麼....你需要解釋有關數據,它在哪兒當前存儲更多的,是靜態數據或動態? – RobertPitt 2011-03-24 16:04:10

+0

數據首先從mysql數據庫中獲取並存儲在關聯數組中。所以現在我想讓主詳細信息頁面從關聯數組中收集數據,這可能會被視爲靜態數據。 – user331859 2011-03-24 16:11:02

回答

2

由於PHP的本質,這是不可能的。
PHP腳本被運行的第二一個餾分,然後模具。所有它的變量和關聯數組和其他東西。

這就是爲什麼數據庫意圖將作爲不同的HTTP調用之間的數據存儲。

因此,不要假裝自己是smartmass,讓事情自然的方式:

  • 一個頁面,查詢數據庫中的數據的列表,typerlinks到詳細信息頁面,通過傳遞獨特的記錄ID HTTP GET查詢字符串
  • 根據傳遞的ID查詢數據庫的詳細信息的一個詳細信息頁面。

這裏是此類應用的一個非常簡單的例子,使用模板,給你一個想法:

<? 
mysql_connect(); 
mysql_select_db("new"); 
$table = "test"; 
if($_SERVER['REQUEST_METHOD']=='POST') { //form handler part: 
    $name = mysql_real_escape_string($_POST['name']); 
    if ($id = intval($_POST['id'])) { 
    $query="UPDATE $table SET name='$name' WHERE id=$id"; 
    } else { 
    $query="INSERT INTO $table SET name='$name'"; 
    } 
    mysql_query($query) or trigger_error(mysql_error()." in ".$query); 
    header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']); 
    exit; 
} 
if (!isset($_GET['id'])) { //listing part: 
    $LIST=array(); 
    $query="SELECT * FROM $table"; 
    $res=mysql_query($query); 
    while($row=mysql_fetch_assoc($res)) $LIST[]=$row; 
    include 'list.php'; 
} else { // form displaying part: 
    if ($id=intval($_GET['id'])) { 
    $query="SELECT * FROM $table WHERE id=$id"; 
    $res=mysql_query($query); 
    $row=mysql_fetch_assoc($res); 
    foreach ($row as $k => $v) $row[$k]=htmlspecialchars($v); 
    } else { 
    $row['name']=''; 
    $row['id']=0; 
    } 
    include 'form.php'; 
} 
?> 

詳情頁面模板稱爲form.php的

<form method="POST"> 
<input type="text" name="name" value="<?=$row['name']?>"><br> 
<input type="hidden" name="id" value="<?=$row['id']?>"> 
<input type="submit"><br> 
<a href="?">Return to the list</a> 
</form> 

和主要頁面模板叫做list.php

<a href="?id=0">Add item</a> 
<? foreach ($LIST as $row): ?> 
<li><a href="?id=<?=$row['id']?>"><?=$row['name']?></a> 
<? endforeach ?> 

這是一個例子dmin頁面,讓您添加和編輯記錄。
但是,頁面tat只顯示數據將幾乎相同。

0

如果你有,例如,顯示彙總數據的列表,並要動態顯示某個特定記錄的詳細信息,您可以使用JavaScript(jQuery的是使處理更容易的JavaScript一個不錯的庫)。

取決於您在摘要頁面上顯示的記錄數,您可以

  1. 從數據庫中獲取的所有數據(主機和細節),用PHP輸出,然後隱藏與JavaScript的細節
  2. 從數據庫拉只有主數據,將其輸出用PHP,然後當用戶要求它做詳細數據AJAX請求。

在兩種情況下會保持你在內存中的所有數據。