Я хочу создать страницу мастер-детали с помощью PHP. Вместо того, чтобы получать данные из базы данных MYSQL, я хочу получить данные из ассоциативного массива. Это возможно?
Данные сначала будут получены из таблицы базы данных mysql и сохранены внутри ассоциативного массива для некоторой обработки. Теперь я хочу создать страницу основных деталей, основанную на данных внутри только ассоциативного массива. Кто-нибудь с идеями?
Это просто невозможно, из-за природы PHP.
PHP-скрипт выполняется на долю секунды, а затем умирает . Со всеми его переменными и ассоциативными массивами и другими вещами.
Вот почему база данных предназначена для хранения данных между различными HTTP-вызовами.
Таким образом, не притворяйтесь умным, пусть все идет естественным путем:
вот очень простой пример такого приложения, используя шаблоны, чтобы дать вам представление:
<? 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 ?>
это пример страницы администратора, позволяющей добавлять и редактировать записи.
однако, страница tat просто показывает, что данные будут почти одинаковыми.
Если вы, например, показываете список сводных данных, и хотите динамически отображать детали для конкретной записи, вы можете использовать javascript (jQuery – хорошая библиотека, которая упрощает работу с javascript).
В зависимости от количества записей, отображаемых на сводной странице, вы можете
В любом случае вы не будете хранить все свои данные в памяти.