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

Как заполнить таблицу?

10.05.2020, 21:01. Показов 1641. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно заполнить строчки в таблице и сохранить. Строчки - массив - результат запроса к базе. Если строчка изменялась - ее сохраняем. Приблизительный код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
$array = array('ноль','один','два','три','четыре','пять','шесть','cемь'); 
 
echo '<form method="POST">';
    
    for($i = 0; $i < 8; $i++){
        echo '<input type="text" name="comm',$i,'" value="',$array[$i],'"><br>';}
    
echo '<button type="submit" name="save" value="button">Сохранить</button></form>';
 
if (isset($_POST["save"])) {
    for($i = 0; $i < 8; $i++){
        if ($array[$i]!=$_POST["'comm'.$i"]) {
            $array[$i]=$_POST["'comm'.$i"];
            }
        echo $array[$i],'<br>';
        }
        
    } 
 
?>
ничего не меняется. Если написать comm0, comm1, comm2 и т.д. , то массив перезаписывается. Но мне нужно именно в цикле, потому что результаты запроса могут быть разные. Помогите, пожалуйста!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.05.2020, 21:01
Ответы с готовыми решениями:

Как автоматически заполнить таблицу?
Допустим есть таблица themes в ней 2 столбца id_theme name как автоматически заполнить таблицу например числами от 1 до 1000 в...

Как заполнить таблицу MySQL с поочередным id ?
Как заполнить таблицу в 100 строк, где каждая новая строка имеет свой ид от 0 до 99 ?

PhpMyAdmin, mysql как пользоваться, заполнить таблицу
Я создал БД, еле-еле создал таблицу. Создал два поля word и sin, теперь хочу написать в word слово, а в sin синоним. Microsoft Access вроде...

8
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
10.05.2020, 22:35
Цитата Сообщение от Andrey_Vl Посмотреть сообщение
,$i,'" value="',$array[$i],
а что за запятые?
нужно точки(конкатенация)
0
0 / 0 / 0
Регистрация: 01.07.2017
Сообщений: 20
10.05.2020, 22:43  [ТС]
поменял, но ничего не изменилось. не работает конкатенация в конструкции POST
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
10.05.2020, 22:47
Цитата Сообщение от Andrey_Vl Посмотреть сообщение
нужно заполнить строчки в таблице
в какой таблице? не вижу в примере таблицы
Цитата Сообщение от Andrey_Vl Посмотреть сообщение
Строчки - массив - результат запроса к базе.
где этот запрос?
Цитата Сообщение от Andrey_Vl Посмотреть сообщение
Если строчка изменялась
какая строка, где изменилась.
лично я, ничего не понял.
0
0 / 0 / 0
Регистрация: 01.07.2017
Сообщений: 20
11.05.2020, 11:29  [ТС]
это фрагмент кода. Для упрощения все лишнее отрезано. К некоторой таблице выполняется запрос. Результатом запроса является массив. Элементы массива в виде таблицы выводятся на странице в виде таблицы. Некоторые поля таблицы редактируются. Все это в примере отсутствует, но для понимания проблемы не обязательно. Хотя, если Вы скажите, что нужно принципиально делать по-другому, я с удовольствием прислушаюсь.

Добавлено через 26 минут
вот такой код работает. Но буду признателен за более удачное решение.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
 
$array = array('ноль','один','два','три','четыре','пять','шесть','cемь'); 
 
echo '<form method="POST">';
    
    for($i = 0; $i < 8; $i++){
        
        echo '<input type="text" name="comm'.$i.'" value="'.$array[$i].'"><br>';}
    
echo '<button type="submit" name="save" value="button">Сохранить</button><br>';
 
if (isset($_POST["save"])) {
    $i=0;
    foreach ($_POST as $key => $value) {
        
        if (substr($key,0,4)=='comm'&$array[$i]!=$_POST["$key"])$array[$i]=$_POST["$key"];
        echo $array[$i],'<br>';
        $i++;
        } 
    
    } 
    
 
 
?>
0
Заблокирован
11.05.2020, 11:43
Andrey_Vl, Что нужно сделать с массивом $array после отправки $_POST запроса?
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
11.05.2020, 12:01
Цитата Сообщение от Verolomstvo Посмотреть сообщение
Что нужно сделать с массивом $array после отправки $_POST запроса?
ага.
и что в $_POST желательно глянуть
0
0 / 0 / 0
Регистрация: 01.07.2017
Сообщений: 20
11.05.2020, 13:43  [ТС]
это демонстрационный фрагмент кода. Вместо echo array будет update ... С массивом POST мне непонятно. При старте скрипта он заполнен. Или это из-за повторов.
0
0 / 0 / 0
Регистрация: 01.07.2017
Сообщений: 20
12.05.2020, 17:24  [ТС]
вот код всего скрипта:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
session_start();
    include ("bd.php");
    $id_les=$_POST['id_les1'];
 
    $query = "SELECT * FROM lessons WHERE id_les='$id_les'";
    $res = mysqli_query($db, $query);
    $row = mysqli_fetch_assoc($res);
        $dt=$row['date'];
        $kl=$row['klass'];
        $subject=$row['subject'];
        $topic=$row['topic'];
        $task=$row['task'];
        $source=$row['source'];
   
    
    echo $dt,', ',$kl,', предмет: ',$subject,', тема урока: ',$topic,', задание: ',$task,', ',$source,'<br>';
    echo '<br>';    
    $query = "SELECT * FROM answers WHERE id_les='$id_les'";
    $res = mysqli_query($db, $query);
  
    if(mysqli_affected_rows($db)==0) echo 'нет ответов';
    else {  
        echo '<form method="POST"><table border="1" cellpadding="10" width="100%">
                <tr><td width="20%"><p>фамилия имя</p></td>
                    <td width="10%"><p>дата ответа</p></td>
                    <td width="20%"><p>комментарии к ответу</p></td>
                    <td width="40%"><p>комментарии учителя</p></td>
                    <td width="10%"><p>файл с решением</p></td></tr>';
        $i=0;   
        while($row = mysqli_fetch_assoc($res)){
            $name[$i]=$row['name'];
            $dt_answ=$row['dt_answ'];
            $comm_stud=$row['comm_stud'];
            $comm_teach[$i]=$row['comm_teach'];
            $attach=$row['attach']; 
            echo '<tr><td>',$name[$i],'</td>
                    <td>',$dt_answ,'</td>
                    <td>',$comm_stud,'</td>
                    <td>
                        <textarea name="comm_teach',$i,'" cols="60" rows="2">',$comm_teach[$i],'</textarea>
                    </td>
                    <td>';
                        if(!empty($attach))echo '<a href="view_file.php?file=',$attach,' "target="_blank">Решение</a>';
                    echo '</td></tr>';
            $i++;
        }
        
        echo '</table><br>
                    
                    <input type="hidden" name="id_les1" value="',$id_les,'"/>
                    <button type="submit" name="save" value="button">Сохранить</button>
                    <br></form>';
            }
        
if (isset($_POST["save"])) {
   
        $i=0;
        foreach ($_POST as $key => $value) {
            if (substr($key,0,4)=='comm'&$comm_teach[$i]!=$_POST["$key"]){
                $comm_teach[$i]=$_POST["$key"];
                $comm_teach[$i] = stripslashes($comm_teach[$i]);
                $comm_teach[$i] = htmlspecialchars($comm_teach[$i]);
                $query = "UPDATE answers SET comm_teach='$comm_teach[$i]' WHERE date='$dt' AND name='$name[$i]' AND subject='$subject' ";
                $res = mysqli_query($db, $query);
            }
        
            $i++;
        } 
    //unset($comm_teach);   
    //header("Refresh:answer.php"); 
    }
 
echo '<a href="schedule.php">Назад</a>'; 
        
        
?>
после нажатия кнопки Сохранить данные действительно сохраняются, но на экране остается предыдущее значение. При повторном нажатии кнопки данные изменяются. Если продолжать нажимать кнопку, то эти предыдущее и измененные значения меняются. Если после нажатия кнопки выйти и снова зайти - данные измененные. Если после нажатия кнопки Сохранить нажать Обновить в браузере, то данные измененные. Прошу помощи, у меня ничего не получается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.05.2020, 17:24
Помогаю со студенческими работами здесь

Как определить IP-адрес пользователя
Как узнать IP пользователя?

Как использовать интерпретатор? Написание php-программ
Здравствуйте. У меня к Вам такой глупый вопрос. Я скачал php-интерпретатор. Пятой версии. Как мне теперь писать проги? Ну написал я...

Как определить id у созданной модели в afterSave()?
Приветствую! $this-&gt;id почему то пусто. $this-&gt;name определяется. Yii::app()-&gt;db-&gt;getLastInsertID(); выдает ошибку : ...

Как прикрепить файл к письму?
Подскажите, пожалуйста, как можно к сообщению прикрепить файл и все это дело отправить получателю?

Как сделать результат выполнения PHP в новое окно
Есть сайт. В нем раздел с сылкой на 1.php. В котором заполняются пара полей и по кнопке вызывается 2.php, который по введенным данным...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru