За последние 24 часа нас посетили 18159 программистов и 1606 роботов. Сейчас ищут 930 программистов ...

вывод таблицы из БД MySQL

Тема в разделе "Прочие вопросы по PHP", создана пользователем 1inkin, 5 авг 2013.

  1. 1inkin

    1inkin Новичок

    С нами с:
    5 авг 2013
    Сообщения:
    12
    Симпатии:
    0
    здравствуйте. только начал программировать на PHP. нужно вывести таблицу из БД на страницу и сделать для нее различные фильтры. столкнулся с двумя проблемами:
    1. фильтры задаются чекбоксами и текстовыми полями и значения принимаются кнопкой submit. всё работает и таблица принимает фильтры, но после нажатия кнопки все элементы фильтров принимают начальные значения, а не остаются в тех, которые я задал перед нажатием. как сделать, чтобы таблица на странице обновлялась, а все остальное нет?
    2. таблицу вывести у меня получилось только задавая прорисовку каждого столбца и шапки в отдельности. можно ли сделать, чтобы и столбцы и строки из выборки сами прорисовывались вместе с шапкой заголовков таблицы?

    заранее спасибо.
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты же имеешь о них представление. как сделать чекбокс зачеканым? http://htmlbook.ru/html/input/checked

    Добавлено спустя 28 секунд:
    шапку до цикла отрисуй само собой
     
  3. 1inkin

    1inkin Новичок

    С нами с:
    5 авг 2013
    Сообщения:
    12
    Симпатии:
    0
    с выставлением начального состояния чекбоксов я разобрался, но когда я вручную на странице изменяю их начальное состояние и нажимаю submit, то они снова возвращаются в начальное состояние, а не остаются в том, которое я задал вручную. а нужно, чтобы они не сбрасывались а дефолт.
    по поводу таблицы, я имел в виду, что не могу сделать сам и не получается найти рабочий код, как сделать, чтобы и шапка и вся таблица рисовались сами циклами. сейчас у меня только строки так прорисовываются, а шапку и столбцы я рисую вручную, прописывая отдельно каждый столбец и шапку для него.
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    новая страница - новые чекбоксы. если тебе прислали параметры, ты должен сам нужные чекбоксы сделать активными
     
  5. 1inkin

    1inkin Новичок

    С нами с:
    5 авг 2013
    Сообщения:
    12
    Симпатии:
    0
    начальные состояния текстовых полей и чекбоксов у меня прописаны в <form>, а как из PHP передать им передать новые состояния, которые они должны принять после обновления страницы?
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Обычно за формирование html страницы отвечает php.
    Ничего не передается, php создает страницу.
     
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну впиши в него checked при отрисовке, если прислали его
     
  8. 1inkin

    1inkin Новичок

    С нами с:
    5 авг 2013
    Сообщения:
    12
    Симпатии:
    0
    такой вот у меня код. что нужно сделать, чтобы состояния чекбоксов сохранялись после обновления страницы, а не возвращались в исходное положение? никак не получается...
    Код (Text):
    1. <html>
    2. <body>
    3. <form method = "post">
    4.     Отображаемые столбцы:<br/>
    5.     <input type = "checkbox" name = "cb1" checked="true" value="DATE_FORMAT(ubi_datvu,'%d.%m.%Y') as 'Дата выявления уязвимости',">Дата выявления уязвимости<br/>
    6.     <input type = "checkbox" name = "cb2" checked="true" value="ubi_link as 'Ссылки на другие описания уязвимости, приведенные в альтернативных открытых источниках',">Ссылки на другие описания уязвимости, приведенные в альтернативных открытых источниках<br/>
    7.     <input type = "checkbox" name = "cb3" checked="true" value="sltpo_name as 'Тип ПО',">Тип ПО<br/>
    8.     <input type = "checkbox" name = "cb4" checked="true" value="ubi_namepo as 'Название ПО',">Название ПО<br/>
    9.     <input type = "checkbox" name = "cb5" checked="true" value="ubi_verpo as 'Версия ПО',">Версия ПО<br/>
    10.     <input type = "checkbox" name = "cb6" checked="true" value="slsub_name as 'Источник угроз БИ, способный эксплуатировать уязвимость',">Источник угроз БИ, способный эксплуатировать уязвимость<br/>
    11.     <input type = "checkbox" name = "cb7" checked="true" value="slrug_name as 'Способ реализации угрозы БИ',">Способ реализации угрозы БИ<br/>
    12.     <input type = "checkbox" name = "cb8" checked="true" value="slobv_name as 'Объект воздействия при реализации угрозы БИ',">Объект воздействия при реализации угрозы БИ<br/>
    13.     <input type = "checkbox" name = "cb9" checked="true" value="ubi_prel as 'Вероятность реализации',">Вероятность реализации<br/>
    14.     <input type = "checkbox" name = "cb10" checked="true" value="ubi_srel as 'Сложность реализации',">Сложность реализации<br/>
    15.     <input type = "checkbox" name = "cb11" checked="true" value="slrub_name as 'Результаты реализации угрозы БИ',">Результаты реализации угрозы БИ<br/>
    16.     <input type = "checkbox" name = "cb12" checked="true" value="ubi_opisrek as 'Описание возможных последствий от эксплуатации описываемой уязвимости',">Описание возможных последствий от эксплуатации описываемой уязвимости<br/>
    17.     <input type = "checkbox" name = "cb13" checked="true" value="DATE_FORMAT(ubi_postz,'%d.%m.%Y') as 'Дата поступления заявления о выявлении угрозы БИ',">Дата поступления заявления о выявлении угрозы БИ<br/>
    18.     <input type = "checkbox" name = "cb14" checked="true" value="ubi_srcz as 'Источник поступления заявления о выявлении угрозы БИ'">Источник поступления заявления о выявлении угрозы БИ<br/>
    19.  
    20. <br/>
    21.     <input type = "submit" value = "Применить">
    22.     <input type = "reset" value = "Сбросить">
    23. <br/>
    24. <hr/>
    25. </form>
    26.  
    27. <?php
    28. $conn=mysql_connect("localhost", "root", "linkin");
    29. mysql_select_db("localhost", $conn);
    30. mysql_query("SET NAMES cp1251");
    31. $query="select ".$cb1." ".$cb2." ".$cb3." ".$cb4." ".$cb5." ".$cb6." ".$cb7." ".$cb8." ".$cb9." ".$cb10." ".$cb11." ".$cb12." ".$cb13." ".$cb14." from get_ubi";
    32. $data=mysql_query($query, $conn);
    33. print "<table><tr>";
    34. while($field=mysql_fetch_field($data)){
    35.     print "<th>$field->name</th>";
    36. }
    37. print "</tr>";
    38. while($row=mysql_fetch_assoc($data)){
    39.     print "<tr>";
    40.    
    41.     foreach($row as $row){
    42.         print "<td>".$row."</td>";
    43.     }
    44.     print "</tr>";
    45. }
    46. ?>
    47. </body>
    48. </html>
     
  9. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Вперед! Дерзай! Мы с тобой. В чем затык? =)
     
  10. 1inkin

    1inkin Новичок

    С нами с:
    5 авг 2013
    Сообщения:
    12
    Симпатии:
    0
    вот и обращаюсь за помощью к знающим людям, так как у меня уже второй день не получается это реализовать. видимо, я чего-то не понимаю...

    Добавлено спустя 2 минуты 14 секунд:
    сейчас в чекеде стоит конкретное значение тру, но я подозреваю, что туда надо ставить переменную, но все мои попытки ни к чему не привели....
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    пример:
    Код (PHP):
    1.  <input type = "checkbox" name = "cb1" <?php echo $_POST['cb1'] ? 'checked' : ''; ?> value="DATE_FORMAT(ubi_datvu,'%d.%m.%Y') as 'Дата выявления уязвимости',">
     
  12. 1inkin

    1inkin Новичок

    С нами с:
    5 авг 2013
    Сообщения:
    12
    Симпатии:
    0
    ух ты, это потрясающе! всего одна строчка)) а я там заморочился с if условиями и даже получилось в итоге, а на самом деле как всё просто. а не подскажете еще для списка решение полегче, чтобы тоже выбранное значение запоминалось, а то у меня там тоже через заднее место сделано:
    Код (Text):
    1. <select name = "sort">
    2.     <?php if ($sort == ubi_namepo) {?>
    3.     <option value = "ubi_namepo" selected="true">Название ПО</option>
    4.     <?php } else {?>
    5.     <option value = "ubi_namepo">Название ПО</option>
    6.     <?php } ?>
    7.     <option value = "ubi_verpo">Версия ПО</option>
    8.     <option value = "slsub_name">Источник угроз БИ, способный эксплуатировать уязвимость</option>
    9.     <option value = "slrug_name">Способ реализации угрозы БИ</option>
    10.     <option value = "slobv_name">Объект воздействия при реализации угрозы БИ</option>
    11.     <option value = "ubi_prel">Вероятность реализации</option>
    12.     </select>
     
  13. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    такие вещи лучше делать через массив, иначе придется такую конструкцию в каждый опшн вкрячить
     
  14. 1inkin

    1inkin Новичок

    С нами с:
    5 авг 2013
    Сообщения:
    12
    Симпатии:
    0
    ну я на лучший код и не претендую)) главное, чтобы работало, а потом по мере изучения языка можно будет оптимизировать. кстати, вот теперь вопрос какой, после того как я сделал везде запоминание последнего состояния, а как теперь задать нужное начальное состояние? например, все чекбоксы сначала в false, а если начинаю задавать им true, то это true навсегда и остается...
     
  15. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну все в фалс они полюбас встанут. =) пост-то не пришел. нотисы правда будут.

    но можно делать так:
    наделать кучу переменных, или один массив с начальными состояниями
    потом приравнять к присланным данным те, которые прислали (проверять isset() или empty()) и потом уже по той конструкции проверять именно эти переменные или члены массива.
     
  16. 1inkin

    1inkin Новичок

    С нами с:
    5 авг 2013
    Сообщения:
    12
    Симпатии:
    0
    я понял суть)) в принципе, я тоже об этом думал-думаю, больших проблем не возникнет. общие принципы работы мне становятся всё понятнее. спасибо вам большое за помощь, извините за беспокойство))
     
  17. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Пиши, спрашивай если чо
     
  18. 1inkin

    1inkin Новичок

    С нами с:
    5 авг 2013
    Сообщения:
    12
    Симпатии:
    0
    хорошо, спасибо. я тогда сюда буду писать, чтобы не засорять форум
     
  19. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    под каждый вопрос отдельный лучше отдельный топик =)