|
|
|
| Для получения данных из базы используется вот такой запрос:
<?php
$query = "SET @STR_ID = 141"; /* Начальные уловия */
$result = mysql_query($query);
$query = "SELECT
STR_ID, STR_DES_TEXT, DESCENDANTS и далее длинное тело запроса";
$result = mysql_query($query);
//Обработка и вывод результатов SQL-запроса
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
$STR_ID = $row["STR_ID"];
$STR_DES_TEXT = $row["STR_DES_TEXT"];
$DESCENDANTS = $row["DESCENDANTS"];
}
?>
|
Здесь параметр DESCENDANTS может принимать только два значения: либо отсутвовать, либо единица.
Нужно составить код, работающий следующим образом: если DESCENDANTS существует, то параметр STR_ID подставляется взамен начальных условий и запрос выполняется еще раз.
И так до тех пор, пока не будут извлечены все данные.
Соответственно, результат каждого запроса нужно выводить в браузер.
(И как-то защитить от бесконечного повторения. Сто запросов достаточно, но тогда нужно сообщение о том, что исчерпан лимит).
Как все это можно сделать? | |
|
|
|
|
|
|
|
для: Владимир55
(06.07.2012 в 17:07)
| | Можно начать отталкиваться от какого-то такого скрипта
<?php
function sql_print($str_id, $count)
{
if($count >= 100) exit("Превышено ограничение на рекурсивные вызовы (100)");
$query = "SET @STR_ID = $str_id";
$result = mysql_query($query);
$query = "SELECT
STR_ID,
STR_DES_TEXT,
DESCENDANTS и далее длинное тело запроса";
$result = mysql_query($query);
//Обработка и вывод результатов SQL-запроса
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
// Выводим содержимое результирующей таблицы
print_r($row);
if(!empty($row["DESCENDANTS"]))
{
sql_print($row["STR_ID"], $count++);
}
}
}
?>
|
| |
|
|
|