Создать мастер-страницу с помощью PHP - PullRequest
0 голосов
/ 24 марта 2011

Я хочу создать главную страницу с использованием PHP. Вместо того, чтобы получать данные из базы данных MYSQL, я хочу получить данные из ассоциативного массива. Возможно ли это?

Данные сначала будут получены из таблицы базы данных mysql и сохранены в ассоциативном массиве для некоторой обработки. Теперь я хочу создать главную страницу сведений на основе данных внутри одного ассоциативного массива. Кто-нибудь с идеями?

Ответы [ 2 ]

2 голосов
/ 24 марта 2011

Это просто невозможно из-за природы PHP.
PHP-скрипт запускается в течение доли секунды , а затем умирает .Со всеми переменными, ассоциативными массивами и прочим.

Именно поэтому база данных предназначалась для хранения данных между различными вызовами HTTP.

Таким образом, не притворяйтесь умной массой, позвольте вещам идти естественным путем:

  • одна страница, которая запрашивает базу данных для списка данных, с типографскими ссылками на страницу сведений,Передача уникального идентификатора записи через строку запроса HTTP GET
  • одна страница сведений, которая запрашивает детали в базе данных, на основе переданного идентификатора.

вот очень простой пример такого приложения, использующегошаблоны, чтобы дать вам представление:

<?  
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 ?>

это пример страницы администратора, позволяющей вам добавлять и редактировать записи.
однако страница показывает, что данные будут почти такими же.

0 голосов
/ 24 марта 2011

Если вы, например, отображаете список сводных данных и хотите динамически отображать детали для определенной записи, вы можете использовать javascript (jQuery - хорошая библиотека, которая облегчает работу с javascript).

В зависимости от количества записей, отображаемых на сводной странице, вы можете либо

  1. вытащить все данные (основные и подробные данные) из базы данных, вывести их с помощью PHP, а затем скрыть детали с помощью javascript
  2. извлекает только основные данные из базы данных, выводит их с помощью PHP, а затем выполняет запрос AJAX для подробных данных, когда пользователь запрашивает их.

Ни в том, ни в другом случае вы не сохраните все свои данные в памяти.

...