<?php
$conn = new mysqli("localhost", "user", "pass", "bd");
if ($conn->connect_error) {
die("Не удалось подключиться к базе данных: " . $conn->connect_error);
}
$conn->query("DROP TABLE IF EXISTS tree"); //что бы индексы чистились
$tableName = "tree";
$conn->query("CREATE TABLE IF NOT EXISTS $tableName (
id INT NOT NULL AUTO_INCREMENT,
parent_id VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
)");
$treeText = file_get_contents("tree.txt");
$lines = explode("\n", $treeText);
$conn->begin_transaction();
$rootId = null;
$parentId = 0;
$level = 0;
$stmt = $conn->prepare("INSERT INTO tree (parent_id, name) VALUES (?, ?)");
foreach ($lines as $line) {
// Подсчет уровня отступов
$level = substr_count($line, "\t");
// Обработка главного раздела
if ($level == 0) {
$parentId = 0;
$name = trim($line);
if ($parentId == 0) {
$rootId = $conn->insert_id;
}
}
// Обработка дочерних элементов и подподразделов
else {
$parentId = $conn->insert_id;
$name = trim($line);
}
$stmt->bind_param("ss", $parentId, $name);
$stmt->execute();
}
$stmt->close();
$conn->commit();
$conn->close();
?>