За последние 24 часа нас посетили 48674 программиста и 6451 робот. Сейчас ищут 1997 программистов ...

Не выводит имя последней таблицы

Тема в разделе "PHP для новичков", создана пользователем Explorer, 18 апр 2017.

Метки:
  1. Explorer

    Explorer Новичок

    С нами с:
    17 апр 2017
    Сообщения:
    17
    Симпатии:
    0
    Последняя таблица 36x45 при тестовом выводе на экран есть, а при выводе в меню отсутствует.
    http://zda.spb.ru/extcat/monitor.php
    посмотрите пожалуйста...

    PHP:
    1. <?php
    2. include "config.php";
    3.  
    4. if (!mysql_connect($hostname, $username, $password)) { echo 'Ошибка подключения к mysql'; exit;}
    5.  
    6. /* СЧИТЫВАЕМ ИМЕНА ТАБЛИЦ */
    7. $sql = "SHOW TABLES FROM $dbName";
    8. $pls = 1;
    9. $result = mysql_query($sql);
    10.  
    11. if (!$result) { echo "Ошибка базы, не удалось получить список таблиц\n"; echo 'Ошибка MySQL: ' . mysql_error(); exit; }
    12.  
    13. while ($row = mysql_fetch_row($result)) { $tab[$pls] = $row[0];
    14. /* ВРЕМЕННЫЙ ВЫВОД НА ЭКРАН ИМЕН ТАБЛИЦ */
    15. echo nl2br("{$tab[$pls]}\n");
    16. $pls++;} mysql_free_result($result);
    17.  
    18. /* ВЫБИРАЕМ РАЗДЕЛЫ */
    19. $t = $pls -1;
    20. for ($i = 0; $i < $t; $i++) {
    21.  
    22. $MySQLConnection = mysql_connect($hostname,$username,$password);
    23. $MySQLSelectedDB = mysql_select_db($dbName, $MySQLConnection);
    24.  
    25. /* ЗАПРОСЫ К ТАБЛИЦАМ ПО ОЧЕРЕДИ */
    26. /* ВЫВОДИМ ИМЯ ТАБЛИЦЫ (ВОТ ЗДЕСЬ ОШИБКА ГДЕ-ТО) */
    27.  
    28. echo nl2br("{$tab[$i]}\n"); $d = $i+1;
    29.  
    30. $sql1 = "SELECT DISTINCT catgroup, pgroup FROM $tab[$d]";
    31. $MySQLRecordSet = mysql_query($sql1);
    32. ?>
    33.  
    34. <table>
    35.  
    36. <? while($Result = mysql_fetch_assoc($MySQLRecordSet)) { ?>
    37. <tr>
    38. <? $bad = 0; foreach($Result as $k => $val) {
    39.  
    40. /* ВЫВОДИМ ТОЛЬКО УНИКАЛЬНЫЕ РАЗДЕЛЫ И ВСЕ ПОДРАЗДЕЛЫ К НИМ */
    41. if ($bad == 0) {$bad = $bad+1; $two = $val;} else {$bad = $bad-1; $one = $val;};
    42. if ($bad == 0) {
    43.  
    44. /* ВЫВОД ПОДРАЗДЕЛОВ */
    45. ?>
    46. <td width = "350px">
    47. <a href="http://zda.spb.ru/cat/26261.php?ddb=26x26&img=<? echo $one;?>&imh=<? echo $two;?>">
    48. <font size="1" color="black" face="Arial"><? echo $val;?></a></font></td>
    49. <? }
    50.  
    51. /* ВЫВОД РАЗДЕЛОВ */
    52. else { if ($pal <> $val) { ?><td width = "150px"><font size="2" color="blue" face="Arial"><b>
    53. <? echo $val; $pal = $val;} else { ?><td width = "150px"><? } ?></b></font></td>
    54. <? }} ?>
    55. </tr>
    56. <? }} ?>
    57. </table>
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    @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

    Если что-то не понятно, то спрашивай
     
    Sergey_Tsarev и Explorer нравится это.
  3. Explorer

    Explorer Новичок

    С нами с:
    17 апр 2017
    Сообщения:
    17
    Симпатии:
    0
    Мне нужно выводить разделы и подразделы из Каждой таблицы. Кроме как запросом из них по очереди как еще можно это сделать?
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    это к подключению не относится, зачем открывать и закрывать кошелёк, держи талончик в руках.

    Как это понять из таблицы? Просто обычно есть такие варианты: нужно вывести разделы для меню, вывести раздел для записи или записей
     
    Explorer нравится это.
  5. Sergey_Tsarev

    Sergey_Tsarev Активный пользователь

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    @denis01, :D очень подходящее видео) Вначале подумал каким боком оно к этой теме, но потом посмотрел и всё понял)
     
  6. Explorer

    Explorer Новичок

    С нами с:
    17 апр 2017
    Сообщения:
    17
    Симпатии:
    0
    Про подключение понял, перенес в самый верх.
    Не понятно почему "запрос по таблице (2)" выполняется раньше "выводим имя таблицы (1)".

    http://zda.spb.ru/extcat/monitor.php

    PHP:
    1. <?php
    2.  
    3. include "config.php";
    4.  
    5. $MySQLConnection = mysql_connect($hostname,$username,$password);
    6. $MySQLSelectedDB = mysql_select_db($dbName, $MySQLConnection);
    7.  
    8. if (!mysql_connect($hostname, $username, $password)) { echo 'Ошибка подключения к mysql'; exit;}
    9.  
    10. /* РЕШАЕМ ПРОБЛЕМЫ С КОДИРОВКОЙ */
    11. mysql_query ("set_client='utf8'");
    12. mysql_query ("set character_set_results='utf8'");
    13. mysql_query ("set collation_connection='utf8_general_ci'");
    14. mysql_query ("SET NAMES utf8");
    15.  
    16. /* СЧИТЫВАЕМ ИМЕНА ТАБЛИЦ */
    17. $sql = "SHOW TABLES FROM $dbName";
    18. $pls = 1;
    19. $result = mysql_query($sql);
    20.  
    21. if (!$result) { echo "Ошибка базы, не удалось получить список таблиц\n"; echo 'Ошибка MySQL: ' . mysql_error(); exit; }
    22.  
    23. while ($row = mysql_fetch_row($result)) { $tab[$pls] = $row[0];
    24.  
    25. /* ВРЕМЕННЫЙ ВЫВОД НА ЭКРАН */
    26.  
    27. echo ("tab["); echo $pls; echo ("] "); echo nl2br("{$tab[$pls]}\n");
    28. $pls++;
    29. } mysql_free_result($result);
    30.  
    31. /* ВЫБИРАЕМ РАЗДЕЛЫ */
    32. $t = $pls -1;
    33. for ($i = 1; $i < $t; $i++) {
    34.  
    35. /* ЗАПРОСЫ К ТАБЛИЦАМ ПО ОЧЕРЕДИ */
    36. /* ВЫВОДИМ ИМЯ ТАБЛИЦЫ (1 ? )*/
    37. ?><font size="5" color="red" face="Arial"><?
    38. echo ("tab["); echo $i; echo ("] "); echo nl2br("{$tab[$i]}");
    39. ?></font>
    40.  
    41.  
    42. <?
    43. /* ЗАПРОС ПО ТАБЛИЦЕ (2 ? )*/
    44. $sql1 = "SELECT DISTINCT catgroup, pgroup FROM $tab[$i]";
    45. $MySQLRecordSet = mysql_query($sql1);
    46. ?>
    47.  
    48. <table>
    49.  
    50. <? while($Result = mysql_fetch_assoc($MySQLRecordSet)) { ?>
    51. <tr>
    52. <? $bad = 0; foreach($Result as $k => $val) {
    53.  
    54. /* ВЫВОДИМ ТОЛЬКО УНИКАЛЬНЫЕ РАЗДЕЛЫ И ВСЕ ПОДРАЗДЕЛЫ К НИМ */
    55. if ($bad == 0) {$bad = $bad+1; $two = $val;} else {$bad = $bad-1; $one = $val;};
    56. if ($bad == 0) {
    57.  
    58. /* ВЫВОД ПОДРАЗДЕЛОВ */
    59. ?>
    60. <td width = "350px">
    61. <a href="http://zda.spb.ru/cat/26261.php?ddb=26x26&img=<? echo $one;?>&imh=<? echo $two;?>">
    62. <font size="1" color="black" face="Arial"><? echo $val;?></a></font></td>
    63. <? }
    64.  
    65. /* ВЫВОД РАЗДЕЛОВ */
    66. else { if ($pal <> $val) { ?><td width = "150px"><font size="2" color="blue" face="Arial"><b>
    67. <? echo $val; $pal = $val;} else { ?><td width = "150px"><? } ?></b></font></td>
    68. <? }} ?>
    69. </tr>
    70. <? }} ?>
    71. </table>
     
    #6 Explorer, 18 апр 2017
    Последнее редактирование модератором: 18 апр 2017
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    думаю проще всего одним или двумя запросами выбрать все данные и в одном цикле их вывести.
    какая там у тебя структура базы данных?
     
    Explorer нравится это.
  8. Explorer

    Explorer Новичок

    С нами с:
    17 апр 2017
    Сообщения:
    17
    Симпатии:
    0
    База. В неё периодически добавляются некие таблицы с различным содержанием, одинаковые поля в них только
    catgroup varchar(25)
    pgroup varchar(255)
    (+ id еще конечно)


    Вот задумал сделать меню в котором
    Наименование таблицы
    группы (catgroup)
    подгруппы (pgroup)

    Сейчас меню руками пишется ( http://zda.spb.ru/cat/tor.php или http://zda.spb.ru/c/)
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    Думаю лучше не смотреть какие в базе есть таблицы, а держать отдельную таблицу со списком для вывода в меню
     
    Explorer нравится это.
  10. Explorer

    Explorer Новичок

    С нами с:
    17 апр 2017
    Сообщения:
    17
    Симпатии:
    0
    Так уже почти получилось. http://zda.spb.ru/extcat/monitor.php
    Только смещение где-то идет. Его найти и всё.
    --- Добавлено ---
    Всё. Спасибо. Разобрался. В <table></table> нужно было заключить вывод наименования таблицы :)