SQL запрос while pdo
Помогите пожалуйста, как я могу сделать вывод циклом информацию из такой таблицы:
id|name|connect|
1 |cat1| 0 |
2 |cat2| 1 |
3 |cat3| 2 |
4 |cat4| 3 |
5 |cat5| 4 |
6 |cat6| 5 |
7 |cat7| 6 |
8 |cat8| 7 |
9 |cat9| 8 |
10|cat10| 9 |
Это таблица категорий.
cat10 является дочерней cat9.
Как сделать цикл до момента пока категория не будет родительской cat1.
Заранее спасибо.
Ответы (2 шт):
Автор решения: Denis640Kb
→ Ссылка
- Подключаемся к БД.
ФайлDbase.php
try {
$dbh = new PDO('mysql:dbname=Base_name;host=base_ip;charset=utf8', 'BDlogin', 'BDpassword');
} catch (PDOException $e) {
die($e->getMessage());
}
- Выводим инфо. файл
ttt.php
<?php
require 'Dbase.php'; // Подключаем БД
$sql = "SELECT * FROM stackover ORDER BY id DESC"; // Запрос
$req = $dbh->prepare($sql);
$req->execute();
$array = $req->fetchAll(PDO::FETCH_ASSOC); // Получаем все данные
if($array){
$i = 0;
while(isset($array[$i+1])){
echo '<br>'.$array[$i]['name'];
foreach ($array as $arr){
if($array[$i]['connect'] == $arr['id']){ // Если поле connect совпадает с id другого элемента - выводим сообщение.
echo ' является дочерней категорией '.$arr['name'];
}
}
$i++;
}
}
Автор решения: Ипатьев
→ Ссылка
Не надо читать то что пишут люди, не имеющие опыта в программировании
Файл pdo.php (возьми за правило именовать файлы только в одном регистре - избежишь множества проблем в будущем)
$host = '127.0.0.1';
$db = 'test';
$user = 'root';
$pass = '';
$port = "3306";
$charset = 'utf8mb4';
$options = [
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
\PDO::ATTR_EMULATE_PREPARES => false,
];
$dsn = "mysql:host=$host;dbname=$db;charset=$charset;port=$port";
try {
$pdo = new \PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
Тут долго всё объяснять, проще дать ссылку
Как сделать цикл до момента пока категория не будет родительской cat1.
Так и сделать. Цикл. Пока родитель не станет нулём.
<?php
require 'pdo.php';
$name = 'cat10';
do {
$stmt = $pdo->prepare("SELECT * from category where name=?");
$stmt->execute([$name]);
$row = $stmt->fetch();
echo $row['name'];
} while($row['parent']);