2011-03-24 97 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请求。

在两种情况下会保持你在内存中的所有数据。