Последняя таблица 36x45 при тестовом выводе на экран есть, а при выводе в меню отсутствует. http://zda.spb.ru/extcat/monitor.php посмотрите пожалуйста... PHP: <?php include "config.php"; if (!mysql_connect($hostname, $username, $password)) { echo 'Ошибка подключения к mysql'; exit;} /* СЧИТЫВАЕМ ИМЕНА ТАБЛИЦ */ $sql = "SHOW TABLES FROM $dbName"; $pls = 1; $result = mysql_query($sql); if (!$result) { echo "Ошибка базы, не удалось получить список таблиц\n"; echo 'Ошибка MySQL: ' . mysql_error(); exit; } while ($row = mysql_fetch_row($result)) { $tab[$pls] = $row[0]; /* ВРЕМЕННЫЙ ВЫВОД НА ЭКРАН ИМЕН ТАБЛИЦ */ echo nl2br("{$tab[$pls]}\n"); $pls++;} mysql_free_result($result); /* ВЫБИРАЕМ РАЗДЕЛЫ */ $t = $pls -1; for ($i = 0; $i < $t; $i++) { $MySQLConnection = mysql_connect($hostname,$username,$password); $MySQLSelectedDB = mysql_select_db($dbName, $MySQLConnection); /* ЗАПРОСЫ К ТАБЛИЦАМ ПО ОЧЕРЕДИ */ /* ВЫВОДИМ ИМЯ ТАБЛИЦЫ (ВОТ ЗДЕСЬ ОШИБКА ГДЕ-ТО) */ echo nl2br("{$tab[$i]}\n"); $d = $i+1; $sql1 = "SELECT DISTINCT catgroup, pgroup FROM $tab[$d]"; $MySQLRecordSet = mysql_query($sql1); ?> <table> <? while($Result = mysql_fetch_assoc($MySQLRecordSet)) { ?> <tr> <? $bad = 0; foreach($Result as $k => $val) { /* ВЫВОДИМ ТОЛЬКО УНИКАЛЬНЫЕ РАЗДЕЛЫ И ВСЕ ПОДРАЗДЕЛЫ К НИМ */ if ($bad == 0) {$bad = $bad+1; $two = $val;} else {$bad = $bad-1; $one = $val;}; if ($bad == 0) { /* ВЫВОД ПОДРАЗДЕЛОВ */ ?> <td width = "350px"> <a href="http://zda.spb.ru/cat/26261.php?ddb=26x26&img=<? echo $one;?>&imh=<? echo $two;?>"> <font size="1" color="black" face="Arial"><? echo $val;?></a></font></td> <? } /* ВЫВОД РАЗДЕЛОВ */ else { if ($pal <> $val) { ?><td width = "150px"><font size="2" color="blue" face="Arial"><b> <? echo $val; $pal = $val;} else { ?><td width = "150px"><? } ?></b></font></td> <? }} ?> </tr> <? }} ?> </table>
@Explorer зачем ты в цикле подключаешься к базе данных? Если ты осилишь 6 минут видео, то станет понятно почему в цикле не нужно делать подключение к базе данных --- Добавлено --- Остальные ошибки можно с помощью отладки поискать: отладка/debug http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html https://php.ru/forum/threads/howto-...i-po-shagam-i-s-kartinkami.58974/#post-474550 Если что-то не понятно, то спрашивай
Мне нужно выводить разделы и подразделы из Каждой таблицы. Кроме как запросом из них по очереди как еще можно это сделать?
это к подключению не относится, зачем открывать и закрывать кошелёк, держи талончик в руках. Как это понять из таблицы? Просто обычно есть такие варианты: нужно вывести разделы для меню, вывести раздел для записи или записей
@denis01, очень подходящее видео) Вначале подумал каким боком оно к этой теме, но потом посмотрел и всё понял)
Про подключение понял, перенес в самый верх. Не понятно почему "запрос по таблице (2)" выполняется раньше "выводим имя таблицы (1)". http://zda.spb.ru/extcat/monitor.php PHP: <?php include "config.php"; $MySQLConnection = mysql_connect($hostname,$username,$password); $MySQLSelectedDB = mysql_select_db($dbName, $MySQLConnection); if (!mysql_connect($hostname, $username, $password)) { echo 'Ошибка подключения к mysql'; exit;} /* РЕШАЕМ ПРОБЛЕМЫ С КОДИРОВКОЙ */ mysql_query ("set_client='utf8'"); mysql_query ("set character_set_results='utf8'"); mysql_query ("set collation_connection='utf8_general_ci'"); mysql_query ("SET NAMES utf8"); /* СЧИТЫВАЕМ ИМЕНА ТАБЛИЦ */ $sql = "SHOW TABLES FROM $dbName"; $pls = 1; $result = mysql_query($sql); if (!$result) { echo "Ошибка базы, не удалось получить список таблиц\n"; echo 'Ошибка MySQL: ' . mysql_error(); exit; } while ($row = mysql_fetch_row($result)) { $tab[$pls] = $row[0]; /* ВРЕМЕННЫЙ ВЫВОД НА ЭКРАН */ echo ("tab["); echo $pls; echo ("] "); echo nl2br("{$tab[$pls]}\n"); $pls++; } mysql_free_result($result); /* ВЫБИРАЕМ РАЗДЕЛЫ */ $t = $pls -1; for ($i = 1; $i < $t; $i++) { /* ЗАПРОСЫ К ТАБЛИЦАМ ПО ОЧЕРЕДИ */ /* ВЫВОДИМ ИМЯ ТАБЛИЦЫ (1 ? )*/ ?><font size="5" color="red" face="Arial"><? echo ("tab["); echo $i; echo ("] "); echo nl2br("{$tab[$i]}"); ?></font> <? /* ЗАПРОС ПО ТАБЛИЦЕ (2 ? )*/ $sql1 = "SELECT DISTINCT catgroup, pgroup FROM $tab[$i]"; $MySQLRecordSet = mysql_query($sql1); ?> <table> <? while($Result = mysql_fetch_assoc($MySQLRecordSet)) { ?> <tr> <? $bad = 0; foreach($Result as $k => $val) { /* ВЫВОДИМ ТОЛЬКО УНИКАЛЬНЫЕ РАЗДЕЛЫ И ВСЕ ПОДРАЗДЕЛЫ К НИМ */ if ($bad == 0) {$bad = $bad+1; $two = $val;} else {$bad = $bad-1; $one = $val;}; if ($bad == 0) { /* ВЫВОД ПОДРАЗДЕЛОВ */ ?> <td width = "350px"> <a href="http://zda.spb.ru/cat/26261.php?ddb=26x26&img=<? echo $one;?>&imh=<? echo $two;?>"> <font size="1" color="black" face="Arial"><? echo $val;?></a></font></td> <? } /* ВЫВОД РАЗДЕЛОВ */ else { if ($pal <> $val) { ?><td width = "150px"><font size="2" color="blue" face="Arial"><b> <? echo $val; $pal = $val;} else { ?><td width = "150px"><? } ?></b></font></td> <? }} ?> </tr> <? }} ?> </table>
думаю проще всего одним или двумя запросами выбрать все данные и в одном цикле их вывести. какая там у тебя структура базы данных?
База. В неё периодически добавляются некие таблицы с различным содержанием, одинаковые поля в них только catgroup varchar(25) pgroup varchar(255) (+ id еще конечно) Вот задумал сделать меню в котором Наименование таблицы группы (catgroup) подгруппы (pgroup) Сейчас меню руками пишется ( http://zda.spb.ru/cat/tor.php или http://zda.spb.ru/c/)
Думаю лучше не смотреть какие в базе есть таблицы, а держать отдельную таблицу со списком для вывода в меню
Так уже почти получилось. http://zda.spb.ru/extcat/monitor.php Только смещение где-то идет. Его найти и всё. --- Добавлено --- Всё. Спасибо. Разобрался. В <table></table> нужно было заключить вывод наименования таблицы