powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Динамическое меню php
24 сообщений из 24, страница 1 из 1
Динамическое меню php
    #37827270
K.S.A.81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, возник вопрос, есть ли смысл использовать динамическое меню с одним вложением php+MySQL или просто в HTML написать.
В первом варианте я использую две таблицы: в первой таблице основное меню, во второй таблице строка подменю и ключ для первой таблицы. Идея создать ассоциативный массив из двух таблиц и затем выводить на экран результат.

У меня возникли сомнению по поводу нужно ли это все, с одной стороны, я могу менять свою "менюшку" изменив только строки таблицы в базе, но с другой стороны при таком подходе будет задержки. Если использовать HTML то менять "менюшку" нужно в коде.
Если все-таки вариант динамический, может кто посоветует алгоритм.
...
Рейтинг: 0 / 0
Динамическое меню php
    #37827289
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K.S.A.81,

если у тебя будет какая то админка по изменению всего этого делай через базу. А если меню небольшое вынеси в отдельный файл и инклудь где надо.
...
Рейтинг: 0 / 0
Динамическое меню php
    #37827519
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K.S.A.81В первом варианте я использую две таблицы: в первой таблице основное меню, во второй таблице строка подменю и ключ для первой таблицы.
а если появится еще одно подменю опять таблицу добавите ?
Это все можно хранить в одной таблице, смотрите в сторону id parent_id или nested sets
...
Рейтинг: 0 / 0
Динамическое меню php
    #37827555
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K.S.A.81с одной стороны, я могу менять свою "менюшку" изменив только строки таблицы в базе, но с другой стороны при таком подходе будет задержки.Используйте кеш для хранения готового меню. Не каждый же день/час меняете набор пунктов.
...
Рейтинг: 0 / 0
Динамическое меню php
    #37828079
K.S.A.81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
artas,

допустим будет таблица id, title, parent_id
1 Main
2 Parent_1 null
3 Parent_2 null
4 Parent_3 Null
5 Child_1 2
6 Child_2 2
7 Child_3 2
8 Child_4 3

как тогда сделать правильную выборку для создания меню, я так подозреваю, что в результате я должен получит ассоциативный массив, из которого потом получить меню дело техники.
...
Рейтинг: 0 / 0
Динамическое меню php
    #37828094
K.S.A.81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

Я думал над этим, просто хотелось узнать что предпочтительнее.
...
Рейтинг: 0 / 0
Динамическое меню php
    #37828182
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K.S.A.81,

так как меню относительно небольшое (врядли больше 1000 пунктов). Достается "селект * фром таблица_меню".
Далее, преобразовываем на клиенте, например этим алгоритмом в дерево..... Profit
...
Рейтинг: 0 / 0
Динамическое меню php
    #37828197
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K.S.A.81vkle,

Я думал над этим, просто хотелось узнать что предпочтительнее.Вариантов много. Можно при изменениях, связанных с меню, через админку генерить файл. В смысле, при сохранении изменений. Это самый простой способ. Можно проверять дату создания файла, и, если прошло более, скажем, суток, то генерить новый. Еще можно по крону запускать обновление файла, но это, скорее всего, уже излишне сложно.
...
Рейтинг: 0 / 0
Динамическое меню php
    #37830076
K.S.A.81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хочу поделиться тем, что у меня получилось
+----+----------------------+-----------+
| id | title | parent_id |
+----+----------------------+-----------+
| 1 | Гланая | NULL |
| 2 | Офисное ПО | NULL |
| 3 | Системное ПО | NULL |
| 4 | Средства Связи | NULL |
| 5 | Операционные системы | NULL |
| 6 | Браузеры | 4 |
| 7 | Почта | 4 |
| 8 | Торенты | 4 |
| 9 | Общие | 4 |
| 10 | Безопасность | NULL |
| 11 | Антивирусы | 10 |
| 12 | АнтиСпам | 10 |
+----+----------------------+-----------+
...
Рейтинг: 0 / 0
Динамическое меню php
    #37830105
K.S.A.81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из таблицы получил массив:
[0] => Array
(
[id] => 1
[title] => Гланая
[parent_id] =>
)
[1] => Array
(
[id] => 2
[title] => Офисное ПО
[parent_id] =>
)
[2] => Array
(
[id] => 3
[title] => Системное ПО
[parent_id] =>
и т.д. ===========================================
и затем с помощью вот такого цикла
===========================================
foreach($arr as $n => $m)
{
if (!$m['parent_id'])
$arr_menu[$m['id']]['title']=$m['title'];
if ($m['parent_id'])

$arr_menu[$m['parent_id']]['children'][]=$m['title'];
}
===========================================
получил
[1] => Array
(
[title] => Гланая
)

[2] => Array
(
[title] => Офисное ПО
)
[3] => Array
(
[title] => Системное ПО
)
[4] => Array
(
[title] => Средства Связи
[children] => Array
(
[0] => Браузеры
[1] => Почта
[2] => Торенты
[3] => Общие
)
ну, а таким массивом уже можно строить меню, я так понимаю по такому же принципу можно и 3-х уровневое меню строить.
...
Рейтинг: 0 / 0
Динамическое меню php
    #37830688
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K.S.A.81,

я кому кинул ссылку на преобразование в дерево ?????
...
Рейтинг: 0 / 0
Динамическое меню php
    #37849225
Timoha21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток.Возможно ли создать динамическое list\menu в поле динамически построенной таблицы?Если да то как
...
Рейтинг: 0 / 0
Динамическое меню php
    #37849640
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timoha21,

Подробнее опиши с примером желательно
...
Рейтинг: 0 / 0
Динамическое меню php
    #37850370
Timoha21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SharuPoNemnogu,
Создаем динамическую таблицу вот так:
<?php
echo '<table width="555" border="1">';
echo '<tr>
<th width="100" scope="col">ID</th>
<th width="271" scope="col">FIO</th>
<th width="131" scope="col">DR </th>
<th width="100" scope="col">Telefon</th>
<th width="131" scope="col">Adres </th>
<th width="271" scope="col">Doljnost</th>
<th width="100" scope="col">Consultant </th>
<th width="131" scope="col">Dop.Information</th>
</tr>';

include "config.php";
$query= "SELECT IDclient,name_client,DATE_FORMAT(dr,'%d.%m.%Y') AS dr,telefon,adres,work,IDconsul,dopinfo FROM clients";//}
$cat= mysql_query($query);
while ($row = mysql_fetch_assoc($cat))
{

echo "<tr>
<td>".$row ['IDclient']."</td>
<td>".$row ['name_client']."</td>
<td>".$row ['dr']."</td>
<td>".$row ['telefon']."</td>
<td>".$row ['adres']."</td>
<td>".$row ['work']."</td>
<td>".$row ['IDconsul']."</td>
<td>".$row ['dopinfo']."</td>
</tr>";
}
echo "</table>";
?>
Получили табличку, а теперь необходимо сделать эту табличку с дополнительным столбцом? содержащим компонент формы допустим list\menu.
не могу догнать как это сделать(((
...
Рейтинг: 0 / 0
Динамическое меню php
    #37850550
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timoha21,

1. Используйте тег SRC для оформления кода.
2. Не понятно, откуда должен браться этот list\menu.
...
Рейтинг: 0 / 0
Динамическое меню php
    #37850567
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timoha21,

А че сразу в цикле не вариант вставлять? Можно еще яваскриптом попробовать. Но сразу лечше.
...
Рейтинг: 0 / 0
Динамическое меню php
    #37850833
Timoha21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SharuPoNemnogu,

конечно в цикле и сразу, это не вызывает сомнений. проблема в синтаксисе((
вот наш list\menu:
<select name="menu1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>


Вот наш цикл
while ($row = mysql_fetch_assoc($cat))
{

echo "<tr>
<td>".$row ['IDclient']."</td>
<td>".$row ['name_client']."</td>
<td>".$row ['dr']."</td>
<td>".$row ['telefon']."</td>
<td>".$row ['adres']."</td>
<td>".$row ['work']."</td>
<td>".$row ['IDconsul']."</td>
<td>".$row ['dopinfo']."</td>
<td>"КАК СЮДА ВСТАВИТЬ НАШЕ МЕНЮ???</td>
</tr>";
}
всяко пробовал, ну никак не получается
...
Рейтинг: 0 / 0
Динамическое меню php
    #37850851
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timoha21,

А меню одинаковое или отличается чем то?
Если одинаковое то вот так:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<?php


echo '<table width="555" border="1">';
echo '<tr>
<th width="100" scope="col">ID</th>
<th width="271" scope="col">FIO</th>
<th width="131" scope="col">DR </th>
<th width="100" scope="col">Telefon</th>
<th width="131" scope="col">Adres </th>
<th width="271" scope="col">Doljnost</th>
<th width="100" scope="col">Consultant </th>
<th width="131" scope="col">Dop.Information</th>
</tr>';

include "config.php";
$query= "SELECT IDclient,name_client,DATE_FORMAT(dr,'%d.%m.%Y') AS dr,telefon,adres,work,IDconsul,dopinfo FROM clients";//}
$cat= mysql_query($query);
while ($row = mysql_fetch_assoc($cat))
{

echo "<tr>
<td>".$row ['IDclient']."</td>
<td>".$row ['name_client']."</td>
<td>".$row ['dr']."</td>
<td>".$row ['telefon']."</td>
<td>".$row ['adres']."</td>
<td>".$row ['work']."</td>
<td>".$row ['IDconsul']."</td>
<td>".$row ['dopinfo']."</td>
<td><select name=\"menu1\">
<option value=\"1\">1</option>
<option value=\"2\">2</option>
<option value=\"3\">3</option>
<option value=\"4\">4</option>
</select></td>
</tr>";

}
echo "</table>";
?>



в чем проблема то?
...
Рейтинг: 0 / 0
Динамическое меню php
    #37850859
Timoha21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SharuPoNemnogu,)))
с головой вероятно, а насчет меню так не важно отличается или нет.спасибо))
...
Рейтинг: 0 / 0
Динамическое меню php
    #37850861
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timoha21,

Это прикол такой был?) Я ниче не понял. Но пожалуйста)
...
Рейтинг: 0 / 0
Динамическое меню php
    #37876936
Timoha21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SharuPoNemnogu, а если нам надо сделать это меню с заполнением из базы пусть например будет консультант(IDcon,namecon)
то как в данной ситуации поступить?
...
Рейтинг: 0 / 0
Динамическое меню php
    #37877126
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timoha21,

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
echo "<tr>
<td>".$row ['IDclient']."</td>
<td>".$row ['name_client']."</td>
<td>".$row ['dr']."</td>
<td>".$row ['telefon']."</td>
<td>".$row ['adres']."</td>
<td>".$row ['work']."</td>
<td>".$row ['IDconsul']."</td>
<td>".$row ['dopinfo']."</td>
<td><select name=\"menu".$row ['IDclient']."\">";
$q= "SELECT IDcon,namecon FROM consultant";//}
$a= mysql_query($q);
while ($a = mysql_fetch_assoc($q))
{
echo "<option value=\"".$a['IDcon']."\">".$a['namecon']."</option>";
}
echo "</select></td>
</tr>";

}




к примеру так, если правильно понял. Но если они одинаковые, сразу вытащи всех консультантов чтобы запросов кучу не плодить.
...
Рейтинг: 0 / 0
Динамическое меню php
    #37877133
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SharuPoNemnogu,

Код: php
1.
2.
3.
4.
while ($f = mysql_fetch_assoc($a))
{
echo "<option value=\"".$f['IDcon']."\">".$f['namecon']."</option>";
}


ошибочка
...
Рейтинг: 0 / 0
Динамическое меню php
    #37877709
Timoha21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SharuPoNemnogu,спасибо, а то я в этих знаках препинания все время путаюсь)
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Динамическое меню php
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]