Intereting Posts
json_encode () сбрасывание косых черт Как перетасовать мой массив или список строк более читабельным способом? Переменные переменной PHP с ключом массива Регулярное выражение для соответствия датам в формате ГГГГ-ММ-ДД Regex соответствует имени класса CSS Как обрабатывать сложную форму с несколькими моделями и табличный ввод в yii Заголовок не работает с сеансами Использовать модель изнутри cakephp библиотеки nginx показывает пустые страницы PHP Генерация галереи динамических изображений с использованием PHP и jQuery Как динамически генерировать ключ клиента openvpn с помощью php и передавать переменные команде shell? Как преобразовать список параметров функции PHP в ассоциативный массив? определять пользовательские переменные и прямое обращение к переменным в виде части Как вызывать 2 функции одновременно с использованием Twig AJAX Form? Получение синтаксической ошибки mysql с использованием codeigniter LIKE активная запись

Создание страницы мастер-детали с помощью PHP

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

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

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

Вот почему база данных предназначена для хранения данных между различными HTTP-вызовами.

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

  • одна страница, которая запрашивает базу данных для списка данных, с typerlinks на страницу подробностей, передает уникальный идентификатор записи через 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 ?> 

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

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

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

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

В любом случае вы не будете хранить все свои данные в памяти.