使用PHP创建主详细信息页面

时间:2011-03-24 15:54:30

标签: php arrays master-detail associative

我想使用PHP创建一个主详细信息页面。我想从关联数组中获取数据,而不是从MYSQL数据库获取数据。这可能吗?

首先从mysql数据库表中获取数据并将其存储在关联数组中以进行某些处理。现在我想基于关联数组中的数据创建一个主详细信息页面。谁有想法?

2 个答案:

答案 0 :(得分:2)

由于PHP性质,这是不可能的 PHP脚本运行的第二个,然后死亡。随着它的所有变量和关联数组和其他东西。

这就是为什么数据库意图是不同HTTP调用之间的数据存储。

因此,不要假装是一个聪明的人,让事情自然而然:

  • 查询数据库以获取数据列表的一个页面,其中包含指向详细信息页面的链接,通过HTTP GET查询字符串传递唯一记录ID
  • 一个详细信息页面,根据传递的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 ?>

这是管理页面的示例,可让您添加和编辑记录 但是,页面只显示数据几乎相同。

答案 1 :(得分:0)

例如,如果您要显示摘要数据列表,并且想要动态显示特定记录的详细信息,则可以使用javascript(jQuery是一个很好的库,可以更轻松地处理javascript)。

根据您在摘要页面上显示的记录数量,您可以

  1. 从数据库中提取所有数据(主数据和详细信息),使用PHP输出,然后使用javascript隐藏详细信息
  2. 仅从数据库中提取主数据,使用PHP输出,然后在用户请求时对详细数据执行AJAX请求。
  3. 在任何情况下,您都不会将所有数据保存在内存中。