Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
0 / 0 / 1
Регистрация: 17.11.2015
Сообщений: 83

Динамическое формирование html элементов

13.07.2017, 06:50. Показов 4951. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю небольшую такую СУБД, реализовал все основные функции для изменения/удаления/добавления записей, однако сделано это не очень удобно. Удаление и изменение записей осуществляется посредством введения id-записи, при большом количестве записей это не очень удобно. Хотел сделать что-то вроде интерфейса phpMyAdmin - рядом с записью имеются ярлычки удаления и изменения записи. Появилась проблема: Чтобы при нажатии на кнопку просиходило удаление, надо, чтобы кнопка сообщала php-обработчику id строки сама, делается это, насколько я знаю, только с помощью формы. HTML код таблицы с записями генерируется в php файле. Таким образом помещать форму в ячейку я не могу т.к. зарезервированные слова такие как post,id и т.д. не дают выполняться php коду. Подскажите как реализовать подобную систему или же предложите свою, буду рад любым советам, спасибо)
Миниатюры
Динамическое формирование html элементов  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.07.2017, 06:50
Ответы с готовыми решениями:

Динамическое формирование html кода
допустим у меня есть цикл for($i=0;i<10000;++$i) мне надо, что бы этот цикл выводил $i, причём удалял свою предыдущую запись

Динамическое добавления элементов через html и их обработка
Привет всем. Как можно сделать динамическое добавление элементов текстового поля (2 штуки каждый раз) и сделать обработку их значения в...

Динамическое формирование страниц
Народ, помогите чайнику разобраться. В общем, задание такое: 1.Создать 3 файла с именами: testphp3_inc1.html, testphp3_inc2.html і...

16
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
13.07.2017, 09:17
Кнопка удаления может выглядеть так:

HTML5
1
<input type="submit" name="delete[15]">
В скрипте делаем так:
PHP
1
2
if(isset($_POST['delete']))
    $id = key($_POST['delete']);
И дальше удаляем по $id.
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
13.07.2017, 10:44
Для множественного удаления и для предотвращения случайного удаления обычно используются чекбоксы. Удаление отдельной записи также можно сделать по GET с подтверждением, например, на JS.

Имена чекбоксов/кнопок можно и не оборачивать в отдельный массив.
0
0 / 0 / 1
Регистрация: 17.11.2015
Сообщений: 83
13.07.2017, 12:36  [ТС]
miketomlin, Вывод осуществляется так:
PHP
1
2
3
4
5
echo "<tr><th>id:</th><th>Заказчик:</th><th>Услуга</th><th>Принял:</th><th>Число:</th><th>Исполнить до:</th><th>Мастер:</th><th>Приоритет:</th><th>Пометки</th><th>До сдачи</th><th>Статус:</th><th>func:</th></tr>";
while($row = mysqli_fetch_assoc($result)) {
 
    echo "<tr><td> {$row['id']}</td><td> {$row['Company']}</td><td> {$row['Request']}</td><td> {$row['Accept']}</td><td> {$row['AcceptDate']}</td><td> {$row['DeadLine']}</td><td> {$row['Master']}</td><td> {$row['Priority']}</td> <td>{$row['Marks']}</td><td>{$row['Time']} д.</td><td>{$row['Status']}</td><td></td></tr>"; 
}
Чекбокс - это инпут, компонент формы, каким образом мне встраивать его в ячейку через php?
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
13.07.2017, 12:57
Вписать код разметки? Имя (значение атрибута name) стройте на основе значения $row['id'] (один из способов вам уже показал Jodah).

Добавлено через 10 минут
Цитата Сообщение от QuickDark Посмотреть сообщение
изменение записей осуществляется посредством введения id-записи
Редактирование/сохранение можно делать под отдельным адресом, например /тут_имя_таблицы/тут_id_объекта. В списке такие адреса не трудно формировать. Можно даже для многостраничного списка это сделать:
/тут_имя_таблицы?page=номер_страницы – страница списка;
/тут_имя_таблицы/тут_id_объекта?page=номер_страницы – форма редактирования с возможностью возврата на страницу списка, с которой форма открывалась.
0
0 / 0 / 1
Регистрация: 17.11.2015
Сообщений: 83
19.07.2017, 05:44  [ТС]
miketomlin, Jodah, Я видимо туповат, все, что я вынес из ответа jodah - это то, что можно в кнопку удалить сразу помещать число, по которому дальше я смогу удалить строку, но у меня то проблема не в этом, мне нужно сначала сформировать в таблице эти кнопки с помощью пхп: "<input type="submit" name="delete[id]">".Самое очевидное, что приходит в голову - это
PHP
1
2
3
4
5
echo "<tr><th>id:</th><th>Заказчик:</th><th>Услуга</th><th>Принял:</th><th>Число:</th><th>Исполнить до:</th><th>Мастер:</th><th>Приоритет:</th><th>Пометки</th><th>До сдачи</th><th>Статус:</th><th>func:</th></tr>";
while($row = mysqli_fetch_assoc($result)) {
 
    echo "<tr><td> {$row['id']}</td><td> {$row['Company']}</td><td> {$row['Request']}</td><td> {$row['Accept']}</td><td> {$row['AcceptDate']}</td><td> {$row['DeadLine']}</td><td> {$row['Master']}</td><td> {$row['Priority']}</td> <td>{$row['Marks']}</td><td>{$row['Time']} д.</td><td>{$row['Status']}</td><td><input type="submit" name="delete[$row['id']]"></td></tr>"; 
}
То есть поместить в ячейку эту строку с input'oм а всю таблицу взять в тег form
Но php машина не дает выполнить этот код, т.к. <input type="submit" name="delete[$row['id']]"> не дает это вывести как текст, она реагирует на слова name и т.д.

Добавлено через 33 минуты
Поразрыхлял интернет, понял, что удобнее это будет сделать через ajax-запросы, если кому не лень будет, то помогите)
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
19.07.2017, 07:49
Цитата Сообщение от QuickDark Посмотреть сообщение
не дает это вывести как текст
Вы с синтаксисом напутали, двойные кавычки повсюду.
Не выводите html через echo, это извращение.

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php while($row = mysqli_fetch_assoc($result)): ?>
    <tr>
        <td><?=$row['id']?></td>
        <td><?=$row['Company']?></td>
        <td><?=$row['Request']?></td>
        <td><?=$row['Accept']?></td>
        <td><?=$row['AcceptDate']?></td>
        <td><?=$row['DeadLine']?></td>
        <td><?=$row['Master']?></td>
        <td><?=$row['Priority']?></td>
        <td><?=$row['Marks']?></td>
        <td><?=$row['Time']?> д.</td>
        <td><?=$row['Status']?></td>
        <td>
            <input type="submit" name="delete[<?=$row['id']?>]">
        </td>
    </tr> 
<?php endwhile; ?>
Цитата Сообщение от QuickDark Посмотреть сообщение
если кому не лень будет, то помогите)
С чем помочь? Это не такая сложная тема, за час можно разобраться. Вот статейка: https://ruseller.com/lessons.php?rub=32&id=1452
0
0 / 0 / 1
Регистрация: 17.11.2015
Сообщений: 83
19.07.2017, 08:00  [ТС]
Jodah, ? Что такое
Миниатюры
Динамическое формирование html элементов   Динамическое формирование html элементов  
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
19.07.2017, 09:21
Лучший ответ Сообщение было отмечено QuickDark как решение

Решение

Цитата Сообщение от Jodah Посмотреть сообщение
PHP
1
<?php while($row = mysqli_fetch_assoc($result)): ?>
Сравните, как написал я и как вы.

Добавлено через 2 минуты
Если принципиально хотите фигурные скобки, должно быть так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
// здесь какой-то код
 
while($row = mysqli_fetch_assoc($result)){ ?>
    <tr>
        <td><?=$row['id']?></td>
        <td><?=$row['Company']?></td>
        <td><?=$row['Request']?></td>
        <td><?=$row['Accept']?></td>
        <td><?=$row['AcceptDate']?></td>
        <td><?=$row['DeadLine']?></td>
        <td><?=$row['Master']?></td>
        <td><?=$row['Priority']?></td>
        <td><?=$row['Marks']?></td>
        <td><?=$row['Time']?> д.</td>
        <td><?=$row['Status']?></td>
        <td>
            <input type="submit" name="delete[<?=$row['id']?>]">
        </td>
    </tr>
<?php } ?>
1
0 / 0 / 1
Регистрация: 17.11.2015
Сообщений: 83
19.07.2017, 12:14  [ТС]
Jodah, Огромное спасибо, вы больше чем помогли)

Добавлено через 2 часа 19 минут
Jodah, Не подскажешь , как подгружать данные в форму из бд?
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
19.07.2017, 12:32
QuickDark, подставляйте в атрибут value.

PHP/HTML
1
<input value="<?=$some_value_from_database?>">
1
0 / 0 / 1
Регистрация: 17.11.2015
Сообщений: 83
20.07.2017, 05:28  [ТС]
Jodah, Это самое очевидное решение, но у меня эта же форма используется для добавления информации в бд, было бы удобно и эффективно подгружать данные в эту же форму.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
20.07.2017, 08:23
QuickDark, не понял, что вы хотите подгружать в форму добавления.
0
0 / 0 / 1
Регистрация: 17.11.2015
Сообщений: 83
20.07.2017, 11:05  [ТС]
Jodah, У меня есть форма для добавления записи в бд, например с полями: имя, фамилия, отчество, при нажатии кнопки редактировать, надо, чтобы как в случае c delete[$id] отправлялся id, и из бд, где id=$id, должны подгружаться текущие Фамилия, Имя и Отчество в ту же форму для добавляения, ну или идентичную. Сформировать заранее не могу форму, ведь id меняется, а следовательно и информация в полях.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
20.07.2017, 12:00
QuickDark, а, с помощью ajax. На сервере можете или формировать json-массив, или готовый HTML, на клиенте получаете данные и подставляете в вашу форму.

Ссылку я выше давал: https://ruseller.com/lessons.php?rub=32&id=1452
5-ый пример как раз про вашу задачу.

Добавлено через 1 минуту
QuickDark, правда Services_JSON там избыточен, достаточно сделать так:

PHP
1
2
$aRes = array('name' => 'Andrew', 'nickname' => 'Aramis');
die(json_encode($aRes));
1
0 / 0 / 1
Регистрация: 17.11.2015
Сообщений: 83
21.07.2017, 09:30  [ТС]
Jodah, Спасибо.

Добавлено через 21 час 17 минут
Jodah, последний вопрос, устал искать: как мне вывести в php, значение ячейки базы sql,запрос такой
PHP
1
$mysqli->query("SELECT `Company` FROM  `main_table` WHERE id=$id");
Как прировнять это значение к переменной php
Видимо с помощью mysqli_result,но я не знаю , что за параметр вторым подается
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
21.07.2017, 09:53
QuickDark, не подскажу, не работаю с mysqli.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.07.2017, 09:53
Помогаю со студенческими работами здесь

Динамическое формирование таблицы
У меня есть таблица MS SQL вида: Время/Айди/Значение 10:00 / 1 / 10 10:00 / 2 / 11 10:00 / 3 / 12 11:00 / 1 / 13...

Динамическое формирование страницы
При нажатии на ссылку должен появляться текст который записан в text(N).html Что я делаю не так? &lt;body&gt; &lt;?php ...

Динамическое формирование html страницы
Здравствуйте! Сразу хочу сказать - я начинающий web-программист. А теперь к вопросу :) Есть 12 независимых html страниц....

Динамическое формирование HTML-документа
1. Написать сценарий выбора из трех изображений одного, которое вставляется ниже этих трех. 2. Написать сценарий картинки с...

Динамическое формирование html странички
Есть тест проверки знаний. Вопросы получаються с сервера в виде текстового файла с помощью XMLHttpRequest. Далее необходимо сформировать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru