Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600

PHP и MS SQL Динамическое дерево Treeview

29.03.2025, 20:27. Показов 1150. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня ребята. Изучаю, мне надо делать динамическое дерево Treeview, Я нашёл пример интернете https://www.phpflow.com/php/dy... and-mysql/ но на этом примере применяется субд: MySQL я работаю на MS SQL начинаю все как там рассказывают и у меня не получается

1) Создаю такой таблицу и заполняю как там рассказывают
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
create table treeview_items(id int identity ,
                            name nvarchar(70) not null,
                            [text] nvarchar(70) not null,
                            parent_id int not null
                            )
 
--------------------------
insert into treeview_items (name, [text], parent_id)
output inserted.* values
(N'task1',N'task1title',2),
(N'task2',N'task1title',0),
(N'task3',N'task1title3',0),
(N'task4',N'task1title4',3),
(N'task4',N'task1title4',3),
(N'task6',N'task1title5',3);
2) Потом подключаю MS SQL Server и начинаю реализовать
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
42
43
44
45
46
<?php
// -----------------------------------
$uid = "sa";
$pwd = "***********";
$DB = "DB_Test";
$serverName = "LENOVO";
$connectionInfo = array(
    "UID" => $uid,
    "PWD" => $pwd,
    "Database" => $DB,
    "ReturnDatesAsStrings" => true,
    "CharacterSet" => "UTF-8"
);
$conn = sqlsrv_connect($serverName, $connectionInfo);
 
if ($conn === false) {
    die(print_r(sqlsrv_errors(), true));
}
 
//-----------Делаем запрос к БД---------------
$sql = "SELECT * FROM treeview_items";
$stmt = sqlsrv_query($conn, $sql);
 
if ($stmt === false) {
    die(print_r(sqlsrv_errors(), true));
}
 //-\\-------------------------
 
 while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))  { 
    $data[] = $row;
}
$itemsByReference = array();
 // Построить массив ссылок на элементы:
foreach($data as $key = &gt; &amp;$item) {
    $itemsByReference[$item['id']] = &amp;$item;
    // Children array:
    $itemsByReference[$item['id']]['children'] = array();
    // Empty data class (so that json_encode adds "data: {}" ) 
    $itemsByReference[$item['id']]['data'] = new StdClass();
 }
// Закрываем соединение с БД
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
 //-----!!---------------------
 
?>
У меня ошибка Parse error: syntax error, unexpected '=', expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in C:\xampp\htdocs\T_2\conn.php on line 38
на этого
PHP
1
foreach($data as $key = &gt; &amp;$item) {
Я PHP изучаю - не знаю, несколько дня назад установил xampp-portable-win32-7.3.2-0-VC15-installer.exe и настроил для подключения MS SQL
Если не трудно что было понятно для меня , показать на моего таблице . на этих
T-SQL
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
create database DB_Test;
--------------------
use DB_Test ;
-------------родительская на пример-------
create table Product (p_id int identity(1,1) primary key,
                      p_Name nvarchar(50)
                      )
 
-----------Добавляю даных---------------
insert into Product(p_Name) 
output  inserted.*
values(N'Чай'),
      (N'Сигарет')
 
 
------На пример создаю дочерней таблица ! Чай ест разние и сигарет тоже ;)
create table Tip_Tovar(id int identity,
                       tipName nvarchar(40),
                       ProductID int constraint FK_Prod foreign key(ProductID)
                                     references Product(p_id)
                                     on delete cascade)
-------------Добавляю дочерней таблице---------------
insert into Tip_Tovar(tipName, ProductID)
output  inserted.*
values(N'Чёрный чай',1),
      (N'Зелёный чай',1),
      (N'Жёлтый чай',1),
      (N'Marlboro',2),
      (N'Winston',2)
Вот такой динамическое дерево Treeview на этих таблице ( Product и Tip_Tovar) на Delphi я разобрался и сделал самому . А на PHP не хватает знание и опит, покажите пожалуйста как делать такого
Миниатюры
PHP  и MS SQL  Динамическое дерево Treeview   PHP  и MS SQL  Динамическое дерево Treeview  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.03.2025, 20:27
Ответы с готовыми решениями:

Как передать переменную php из 1.php в 2.php без include
Всем добрый день, как передать в подобном примере переменную без include, require? Есть 1.php с данными: &lt;h1&gt;Введите ваше...

Передать значение из php в php и из php в js
Здравствуйте! У меня есть php файл (назовем тест1), содержащий: while (true) { $test1 = &quot;Привет&quot;; ...

Вывод данных из базы данных MySQL в PHP в виде дерева.
У нас в сети решили сделать портал-базу по рефератам. Все я сделал остались две траблы, про первую я здесь и пишу. Итак, имеется база с...

2
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
30.03.2025, 22:43  [ТС]
Может кому то пригодится - рабочий пример

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CREATE TABLE MyTab (
  id INT IDENTITY PRIMARY KEY ,
  name NVARCHAR(80) NOT NULL,
  parentid INT NOT NULL
)  
 
 
INSERT INTO MyTab (name, parentid) OUTPUT INSERTED.* VALUES
(N'Чай', 0),
(N'Сигарет', 0),
(N'Чёрный чай', 1),
(N'Зелёный чай', 1),
(N'Жёлтый чай', 1),
(N'Marlboro', 2),
(N'Winston', 2),
(N'Космос', 2),
(N'Крепких спиртных напитков', 0),
(N'Водка', 9),
(N'Виски;', 9),
(N'Джин', 9),
(N'Самбука', 9),
(N'Коньяк', 9);
Config.php Файл для подключения MS SQL Server
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
 
// -----------------------------------
$uid = "sa";
$pwd = "Pass";
$DB = "DB_Test";
$serverName = "LENOVO";
$connectionInfo = array(
    "UID" => $uid,
    "PWD" => $pwd,
    "Database" => $DB,
    "ReturnDatesAsStrings" => true,
    "CharacterSet" => "UTF-8"
);
$conn = sqlsrv_connect($serverName, $connectionInfo);
 
if ($conn === false) {
    die(print_r(sqlsrv_errors(), true));
}
 
?>
Потом index.php
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php 
 include "config.php";
?>
 
<!DOCTYPE html>
<html>
<head>
    <title>Create treeview with jsTree plugin and PHP</title>
 
    <link rel="stylesheet" type="text/css" href="jstree/dist/themes/default/style.min.css">
    <script src="jquery-3.4.1.min.js"></script>
 
    <script type="text/javascript" src="jstree/dist/jstree.min.js"></script>
</head>
 
 
<body>
    <?php 
    $sql = "SELECT * FROM MyTab";
    $stmt = sqlsrv_query($conn, $sql);
    //------------------
    $folders_arr = array();
    //-----------
 
 
    while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) 
    {
        $parentid = $row['parentid'];
        if($parentid == '0') $parentid = "#";
        $selected = false;$opened = false;
    
        if($row['id'] == 2)
        {
            $selected = true;$opened = true;
        }
        $folders_arr[] = array
        (
            "id"=>$row['id'],
            "parent"=>$parentid,
            "text"=>$row['name'],
            "state" => array
            (
                "selected" => $selected,
                "opened"=>$opened
            ) 
        );
    }
 
    ?>
 
    <!-- Initialize jsTree -->
    <div id="folder_jstree"></div>
 
    <!-- Store folder list in JSON format -->
    <textarea id='txt_folderjsondata'><?= json_encode($folders_arr) ?></textarea>
 
    <!-- Script -->
    <script type="text/javascript">
    $(document).ready(function(){
        var folder_jsondata = JSON.parse($('#txt_folderjsondata').val());
 
        $('#folder_jstree').jstree({ 'core' : {
            'data' : folder_jsondata,
            'multiple': false
        }, });
      
    });
    </script>
</body>
</html>
остальные JS буду изучать , на данный момент работает и не трогаю
Миниатюры
PHP  и MS SQL  Динамическое дерево Treeview  
Вложения
Тип файла: rar treeview.rar (335.9 Кб, 0 просмотров)
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
31.03.2025, 10:50  [ТС]
Скажите пожалуйста ребята: Если есть "родительский и дочерний таблица" так на пример
T-SQL
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
-------------родительский на пример-------
create table Product (p_id int identity(1,1) primary key,
                      p_Name nvarchar(50)
                      )
 
-----------Добавляю даных---------------
insert into Product(p_Name) 
output  inserted.*
values(N'Чай'),
      (N'Сигарет')
 
 
------На пример создаю дочерней таблица ! Чай ест разние и сигарет тоже ;)
create table Tip_Tovar(id int identity,
                       tipName nvarchar(40),
                       ProductID int constraint FK_Prod foreign key(ProductID)
                                     references Product(p_id)
                                     on delete cascade)
-------------Добавляю дочерней таблице---------------
insert into Tip_Tovar(tipName, ProductID)
output  inserted.*
values(N'Чёрный чай',1),
      (N'Зелёный чай',1),
      (N'Жёлтый чай',1),
      (N'Marlboro',2),
      (N'Winston',2)
Как здесь отредактировать ?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    //--- Первы родителски Таблица 
    $sql = "SELECT * FROM Product";
    //--- Второе дочерние таблицы ???
    $sql = "SELECT tipName, ProductID FROM Tip_Tovar";
    //----  
    $stmt = sqlsrv_query($conn, $sql);
    //------------------
    $folders_arr = array();
    //-----------
 
 
    while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) 
    {
        $parentid = $row['p_id']===$row['ProductID'];
        if($parentid == '0') $parentid = "#";
        $selected = false;$opened = false;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.03.2025, 10:50
Помогаю со студенческими работами здесь

Дерево на php
Всем привет! Придумал себе геморрой опять))) Хотелось бы знать возможно это или нет на php? Заранее благодарен! Допустим: Мы имеем...

PHP и деревья
Здравствуйте. Уважаемые коллеги, подскажите, пожалуйста, решение задачи. Необходимо создать взвешенное дерево(т.е. каждая связь будет...

Как вывести дерево из двух таблиц MySQL PHP
Привет всем! У меня есть 2 таблицы, одна с названиями подразделений и отделов(department_table D), вторая с сотрудниками(users_table U)...

Дерево PHP
Дана сущность документа: идентификатор, комментарий, ссылка на файловую систему. Задача организовать взаимосвязь документов по принципу...

Импорт XLS файла в PHP/MYSQL с возможностью выбора файла из окна дерева каталогов
Здрасьте! В проекте подключена библиотека PHPExcel. Имеется файл XLS, экспортированный из БД Mysql (подготовленный для будущего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru