За последние 24 часа нас посетили 21628 программистов и 1029 роботов. Сейчас ищут 789 программистов ...

Помогите с выводом.

Тема в разделе "PHP и базы данных", создана пользователем Cast200, 29 июл 2016.

  1. Cast200

    Cast200 Новичок

    С нами с:
    29 июл 2016
    Сообщения:
    4
    Симпатии:
    0
    Всем привет. Есть код, который вывод из базы данных по очереди данные в таблицу
    Код (Text):
    1. while ($row = $stmt->fetch()){
    2. $classes_arr = array(
    3.     $row["Day"] => array(
    4.             $row["time"] => array(
    5.                 "html" => "<b>".$row["name"]."</b><br>Room 404", // Display 'Phsychology: Room 404'
    6.                 "style" => "background-color: #66CCCC", // use style property to change the background color
    7.                 "interval" => $row["inter"] // set the interval for 2hrs
    8.             )
    9.             )
    10. );
    11. };
    Проблема в том, что после вывод первой строчки из базы данных, последующие вообще не отображаются в таблице.[​IMG][​IMG]
    Где может быть ошибка? Помогите!
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
  3. Cast200

    Cast200 Новичок

    С нами с:
    29 июл 2016
    Сообщения:
    4
    Симпатии:
    0
    вроде поступают. Изначально код выглядел так
    PHP:
    1. $classes_arr = array(
    2.     // Classes for monday (day 1)
    3.     1 => array(
    4.             // Adds a class at 12pm (1200 hours)
    5.             1100 => array(
    6.                 "html" => "<b>Psychology</b><br>Room 404", // Display 'Phsychology: Room 404'
    7.                 "style" => "background-color: #66CCCC", // use style property to change the background color
    8.                 "interval" => 120 // set the interval for 2hrs
    9.             )
    10.     ),
    11.    
    12.     // Classes for wednesday (day 3)
    13.     3 => array(
    14.             // Adds a class at 11am (1100 hours)
    15.             1100 => array(
    16.                 "html" => "<b>English 101</b><br>Room 235", // Display 'English 101: Room 235'
    17.                  "interval" => 120 // set the interval for 2hrs
    18.             )
    19.     )
    20. );
    Но я решил сделать через БД, чтобы какждый раз в файле не редактировать и не добавлять новое событие
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @Cast200 отладка помогла? Только ты видишь код и у тебя есть база, значит самостоятельно можешь найти проблему. Всё что ты показал, мало чем может помочь на подсказать в чём проблема.
     
  5. Cast200

    Cast200 Новичок

    С нами с:
    29 июл 2016
    Сообщения:
    4
    Симпатии:
    0
    Понял в чем ошибка, но теперь не знаю как сделать правильно. Вообщем в этом коде
    PHP:
    1. while ($row = $stmt->fetch()){
    2. $classes_arr = array(
    3.     $row["Day"] => array(
    4.             $row["time"] => array(
    5.                 "html" => "<b></b><br>Room 404", // Display 'Phsychology: Room 404'
    6.                 "style" => "background-color: #66CCCC", // use style property to change the background color
    7.                 "interval" =>120 // set the interval for 2hrs
    8.             )
    9.             )
    10.  
    11. );
    12. };
    Эта строка
    PHP:
    1. while ($row = $stmt->fetch()){
    должна быть после
    PHP:
    1. $classes_arr = array(
    , но если я меняю местами, как нужно, то вылезает ошибка Parse error: syntax error, unexpected 'while' (T_WHILE), expecting ')' Подскажите как можно решить?
     
  6. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    PHP:
    1. $classes_arr=array(
    замена на
    PHP:
    1. $classes_arr[] = array(
    если я правильно угадал
     
  7. Cast200

    Cast200 Новичок

    С нами с:
    29 июл 2016
    Сообщения:
    4
    Симпатии:
    0
    немного не то. Мне нужно чтобы цикл начинался после
    PHP:
    1. $classes_arr = array(
    ,а не перед. Как это сделать:?
     
  8. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Что значит начинался? У тебя есть инструмент по манипулированию многомерными массивами.
    Просто вручную создай нужный массив, который ты хочешь получить в результате.
    Сразу станет понятно как его создавать уже с помощью программы динамически.
     
  9. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Не знаю, правильно ли понял, но вот:
    PHP:
    1. $classes_arr = array();
    2. while($row = $stmt->fetch()) {
    3.     $classes_arr[$row["Day"]] = array(
    4.         $row["time"] => array(
    5.             "html" => "<b>{$row["name"]}</b><br>Room 404", // Display 'Phsychology: Room 404'
    6.             "style" => "background-color: #66CCCC", // use style property to change the background color
    7.             "interval" => $row["inter"] // set the interval for 2hrs
    8.         )
    9.     );
    10. }
    и не нужно ставить в конце цикла while{}; <---точку с запятой. Избыток. Ошибок не будет если сделаешь даже так ;;;;;;;; - но не нужно так делать и не нужно в конце зарезервированных конструкций, пользовательских функций, структур (классов) в конце ставить точку с запятой.
    А тут так сразу скажет ошибка: если не поставить, ну а почему так, думаю догадаешься.
    PHP:
    1. $f = function() {
    2.  
    3. }
     
    #9 rodent90, 30 июл 2016
    Последнее редактирование: 30 июл 2016
    denis01 нравится это.