За последние 24 часа нас посетили 143025 программистов и 6160 роботов. Сейчас ищут 2118 программистов ...

Содержимое div - сохранить в переменную

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

  1. andreyatake

    andreyatake Новичок

    С нами с:
    30 янв 2017
    Сообщения:
    23
    Симпатии:
    0
    Есть
    Код (Text):
    1. <div id="div">
    2. тут всякие инпуты textarea и т.д.
    3. </div>
    Мне нужно сохранить html код дива, включая его самого в переменную средствами php.
    $div=...??

    Потом эту переменную я сохраню в ячейку базы данных. Что нужно по безопасности предусмотреть?

    Заранее спасибо
     
  2. denis01

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

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

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    PHP:
    1. $div = '<div id="div">
    2. тут всякие инпуты textarea и т.д.
    3. </div>';
    1) Использование mysqli_real_escape
    2) Соблюдение правила четырех кодировок: кодировка скрипта, данных, соединения с БД и столбца в БД должны совпадать.
     
  4. andreyatake

    andreyatake Новичок

    С нами с:
    30 янв 2017
    Сообщения:
    23
    Симпатии:
    0
    Мне нужно сохранить кусок кода html(таблица с данными) чтобы потом ее вывести в тело документа. Отдельно данные сохранять нет необходимости. Нужно просто кусок кода из div получить и сохранить
     
  5. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @andreyatake клон темы?
    Код (Text):
    1. $div='<div id="div">
    2. тут какая-то таблица
    3. </div>';
    сохранить
    Код (Text):
    1. $val=$_POST['колонка1_Строка1'].$_POST[колонка1_строка2]................
    или циклом а если нет других $_POST то implode();
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    1) Почему просто не хранить данные и не генерировать таблицу на лету?
    2) Почему просто не хранить HTML-фрагмент в виде подключаемого HTML-файла?
     
  7. andreyatake

    andreyatake Новичок

    С нами с:
    30 янв 2017
    Сообщения:
    23
    Симпатии:
    0
    Я специально кратко описал, чтобы проблема была ясна. В диве есть текстовые поля, которые заполняет пользователь, их нужно сохранить в базу данных. Т.к. структура может поменяться, то сохранять отдельно данные каждой ячейки я не хочу, поэтому нужно весь див с данными зафигарить в базу данных. И выводить, когда понадобится.
     
  8. andreyatake

    andreyatake Новичок

    С нами с:
    30 янв 2017
    Сообщения:
    23
    Симпатии:
    0
    Я так понимаю тут сохраняется значение каждой ячейки, мне же нужно получить весь html код конкретного дива. там не только таблица.
     
  9. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @andreyatake тоесть тебе нужен грабер?
     
  10. andreyatake

    andreyatake Новичок

    С нами с:
    30 янв 2017
    Сообщения:
    23
    Симпатии:
    0
    Грабер скачивает инфу с чужих сайтов. Мне же нужно что-то типа как в JS inner.HTML
    Просто взять кусок кода и приравнять его к переменной, и все.
     
  11. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.151
    Симпатии:
    108
    Адрес:
    Украина
    Можно через JQuery (var div_inner = $("#id_блока").html ();). Как через чистый js - не знаю.
     
  12. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.151
    Симпатии:
    108
    Адрес:
    Украина
    var divInner*
     
  13. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Так, а теперь опишите еще на уровень выше. Тут явно какая-то лютая "проблема X-Y". Сдается мне, решение может быть гораздо проще.
     
  14. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    Так если структура поменяется, то в любом случае сохраненный код будет неактуален. Разве нет?
     
  15. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    @andreyatake, погоди-ка. Т.е. у тебя есть что-то вроде:
    Код (HTML5):
    1. <div id='a'><input name='b' type=text><input name='c' type=text><input name='d' type=text></div>
    и теперь ты хочешь, чтобы вот именно этот html сохранился в базу, при этом также введённые данные стали бы атрибутами value? Так что-ли?

    Может это и можно решить, только что ты с этой хренью в базе потом намерен делать?
    --- Добавлено ---
    Хотя, вот сейчас попробовал document.getElementById("a").innerHTML, он тоже введённые данные не подставляет никуда. Так что это надо какое-то сочинение на тему городить
     
  16. andreyatake

    andreyatake Новичок

    С нами с:
    30 янв 2017
    Сообщения:
    23
    Симпатии:
    0
    Все правильно. Дело в том что пользователь должен составить на сайте отчет в виде таблицы. Там у меня инпуты текстовые. Если пользователю нужно, он добавляет новую строку с инпутами. Т.е. колтчество инпутов каждый раз разное. Количество строк будет примерно 10-20 и в каждой строке 6 столбцов. Данные эти потом нужно будет выводить из базы данных. А пользователей несколько и отчетов много.
    Сохранять все инпуты отдельно - дичайший геморой. Я хз как это сделать просто. Я думал что можно спарсить кусок html и его в базу закинуть. Как вывести из базы и использовать этот кусок html я знаю, но как засунуть с введенными значениями хз. Неужели нет никаких средств это решить?
     
  17. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Ну делается так, по-нормальному (если все столбцы во всех отчётах одинаковые).
    1. Таблица User c пользователями
    2. Таблица Report с отчётами, связь с пользователем один-ко-многим (один пользователь, много отчётов)
    3. Таблица ReportItems со строками отчёта, связь один-ко-многим с Report (один отчёт, много элементов)
    Согласен, немного сложнее сохранять, зато потом можно делать удобные выборки. Куски HTML в базе хранятся в случае, если их потом просто в таком виде и надо выплюнуть, т.е. если данными является сам HTML (ну как например, это сообщение на форуме)
     
  18. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    @andreyatake, если нужен именно кусок кода я бы сделал так:

    HTML:
    1. // Форма с таблицей отчета
    2.  
    3.     <tr>
    4.         <td>
    5.             <input name="col_0_item_1" type="text">
    6.         </td>
    7.         <td>
    8.             <input name="col_1_item_1" type="text">
    9.         </td>
    10.         <td>
    11.             <input name="col_2_item_1" type="text">
    12.         </td>
    13.         <td>
    14.             <input name="col_3_item_1" type="text">
    15.         </td>
    16.         <td>
    17.             <input name="col_4_item_1" type="text">
    18.         </td>
    19.         <td>
    20.             <input name="col_5_item_1" type="text">
    21.         </td>
    22.     </tr>
    23.     <tr>
    24.         <td>
    25.             <input name="col_0_item_2" type="text">
    26.         </td>
    27.         <td>
    28.             <input name="col_1_item_2" type="text">
    29.         </td>
    30.         <td>
    31.             <input name="col_2_item_2" type="text">
    32.         </td>
    33.         <td>
    34.             <input name="col_3_item_2" type="text">
    35.         </td>
    36.         <td>
    37.             <input name="col_4_item_2" type="text">
    38.         </td>
    39.         <td>
    40.             <input name="col_5_item_2" type="text">
    41.         </td>
    42.     </tr>
    43.  
    44. // ну и так далее...
    PHP:
    1. // А дальше получаем массив GET или POST
    2.  
    3. <?php
    4.  
    5. $report_arr = $_POST;
    6.  
    7. $report = '<table>';
    8.  
    9. // Через цикл добавляем в переменную строчки с данными
    10.  
    11. for ($i=1; $i<=count($report_arr)/6; $i++) {
    12.    
    13.         $report .= "<tr>
    14.                    <td>"
    15.                         .$report_arr['col_0_item_'.$i].
    16.                     "</td>
    17.                     <td>"
    18.                         .$report_arr['col_1_item_'.$i].
    19.                     "</td>
    20.                    <td>"
    21.                         .$report_arr['col_2_item_'.$i].
    22.                     "</td>
    23.                    <td>"
    24.                         .$report_arr['col_3_item_'.$i].
    25.                     "</td>
    26.                    <td>"
    27.                         .$report_arr['col_4_item_'.$i].
    28.                     "</td>
    29.                    <td>"
    30.                         .$report_arr['col_5_item_'.$i].
    31.                     "</td>
    32.                     </tr>";
    33.  
    34.     }
    35.  
    36. $report .= '</table>';
    37.  
    38. // Переменная $report содержит кусок кода с таблицей и данными.
    39.  
    40. ?>
    Не претендую на правильность решения, просто показал как бы сделал я. А вообще, все-таки лучше, такие дела хранить в базе данных ИМХО. ;)
     
    #18 Sergey_Tsarev, 13 фев 2017
    Последнее редактирование: 13 фев 2017
    andreyatake нравится это.
  19. andreyatake

    andreyatake Новичок

    С нами с:
    30 янв 2017
    Сообщения:
    23
    Симпатии:
    0
    Спасибо
     
  20. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    @Sergey_Tsarev, и оно теперь лежит в базе бесполезным мусором :)
     
  21. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    Ну, что поделать :) Хотя, как мне кажется, лучше уж было бы тогда эти отчёты в отдельные файлы запихивать, а в базу записывать только название файла. Но, хозяин - барин!