Как данные из базы выводить в таблицу на странице

Я на странице с помощью Formit отправляю данные с формы в базу данных. Как теперь возвращать данные из таблицы в базе в таблицу на странице? И чтобы каждый раз при записи в бд, данные добавлялись и в таблице на странице сайта.

<table>
    <tr class="title">
        <td class="table">Имя</td>
        <td class="table">Фамилия</td>
        <td class="table">Номер</td>
        <td class="table">Email</td>
        <td class="table">Количество заказов</td>
        <td class="table">Оплачено</td>
    </tr>
    <tr class="data">
        <td class="table"></td>
        <td class="table"></td>
        <td class="table"></td>
        <td class="table"></td>
        <td class="table"></td>
        <td class="table"></td>
    </tr>
</table>
Помогите, пожалуйста! Я только начинаю разбираться в вебе
Амина
09 мая 2021, 01:16
modx.pro
673
0

Комментарии: 12

Артур Шевченко
09 мая 2021, 10:54
0
Чтобы вывести данные с сервера на страницу, нужно
1. Отправить запрос на сервер
2. Получить и обработать запрос на сервере
3. Вернуть ответ.
Для п.п. 1 и 3 обычно используют AJAX, а как делать запросы в БД ты могла посмотреть по ссылке в предыдущем своем посте.
    Амина
    09 мая 2021, 11:54
    0
    Да, с запросами разобралась. У меня проблема в том, как результат присваивать полям таблицы
      Артур Шевченко
      09 мая 2021, 12:18
      0
      Дать полям идентификаторы и с помощью js вставлять данные.
        Амина
        09 мая 2021, 12:26
        0
        Спасибо, попробую
    Роман
    10 мая 2021, 12:03
    0
    Можете создать свой хук, и уже в нем обрабатывать данные, записывать в таблицы или что-то вам нужно.
    hooks => 'tables'
    //Создание сниппета tables
    $_REQUEST['message']
      Александр Мельник
      10 мая 2021, 14:05
      0
      мне кажется вам нужно более детально сформулировать вопрос.
      В какую именно таблицу пишете данные?
      Если в свою, то сгенерировали для нее модель? (я просто вижу на сайте ваш другой вопрос и там вы работаете с таблицами через чистый sql синтаксис, минуя модели и методы modx)
      Вам данные нужно вывести в админке или отобразить посетителю?
      Вы хотите чтобы человек отправил форму и сразу без перезагрузки на этой же странице отобразились данные или имеете ввиду что при следующем обращении к этой странице тут должны отобразиться новые данные?
      Во всех этих случаях, ответ на ваш вопрос будет разный.
        Амина
        10 мая 2021, 20:31
        0
        Добрый вечер. Да, с методами modx у меня туговато…
        Таблица у меня своя, данные должны отображаться сразу посетителю без перезагрузки.
        Сейчас вывожу таким топорным методом. Сделала снипет, и вывожу его в шаблоне.

        $sql = "SELECT * FROM `clients`";
        	$statement = $modx->query($sql);
        	$users = $statement->fetchAll(PDO::FETCH_ASSOC);
        	foreach ($users as $user) {
        	  print "<tr class='data'>";
            print "<td class='table'>". $user['name'] ."</td>";
            print "<td class='table'>". $user['surname'] ."</td>";
            print "<td class='table'>". $user['phone'] ."</td>";
            print "<td class='table'>". $user['email'] ."</td>";
            print "<td class='table'>". $user['recorders'] ."</td>";
            print "<td class='table'>". $user['paid'] ."</td>";
            print "</tr>";
        	}
        Может подскажите, как это можно оптимизировать? Вроде с помощью плейсхолдеров. Как я уже сказала в modx только начинаю работать
          Николай Савин
          11 мая 2021, 08:36
          0
          Правильнее всего сделать просто
          return $users
          А в шаблоне (или чанке) использовать шаблонизатор fenom и его метод foreach для вывода результатов.
            Амина
            11 мая 2021, 11:42
            0
            {'!hookbackclient' | snippet}
            			    		{foreach $users as $user}
             								<tr class="title">
            				    			<td class="table">{$user['name']}</td>
            				    			<td class="table">{$user['surname']}</td>
            				    			<td class="table">{$user['phone']}</td>
            				    			<td class="table">{$user['email']}</td>
            				    			<td class="table">{$user['recorders']}</td>
            				    			<td class="table">{$user['paid']}</td>
            				    		</tr>
            							{/foreach}
            Выводится только Array. Или я не так вывожу?
              Николай Савин
              11 мая 2021, 11:44
              +1
              Близко к правде но есть нюансы. В вызове сниппета нужно создать переменную и с ней работать.
              {var $clients = '!hookbackclient' | snippet}
              			    		{foreach $clients as $user}
               								<tr class="title">
              				    			<td class="table">{$user['name']}</td>
              				    			<td class="table">{$user['surname']}</td>
              				    			<td class="table">{$user['phone']}</td>
              				    			<td class="table">{$user['email']}</td>
              				    			<td class="table">{$user['recorders']}</td>
              				    			<td class="table">{$user['paid']}</td>
              				    		</tr>
              							{/foreach}
              А еще с данными массива можно работать через точку. Так чуть быстрее писать
              <td class="table">{$user.paid}</td>
                Амина
                11 мая 2021, 11:56
                +1
                Спасибо большое!!! Получилось!
                  Амина
                  13 мая 2021, 02:31
                  0
                  Доброй ночи. Не подскажите, можно ли как нибудь со страницы редактировать и удалять записи? Как в сниппете получить id, чтобы отправить запрос в бд?
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          12