Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 21.03.2014
Сообщений: 185

Сохранить измененные данные в таблицу: передается лишь последнее значение из цикла

24.04.2014, 04:22. Показов 1187. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую!
Имеется такой код:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<form>
<?php
while($row = mysql_fetch_assoc($result)) 
{ 
$level = $row['level'];
$price = $row['price'];
$type = $row['type'];
?>
<tr>
<td>
<input type="text" name="type" value="<?=$type;?>">
</td>
<td>
<select name="level">
<option><?=$level;?></option>
</select>
</td>
<td>
<input type="text" name="price" value="<?=price;?>">
</td>
</tr>
<?php } ?>
</form>
Нужно сохранить измененные данные в таблицу, однако при передаче данных из такой вот формы ($level = $_POST['level'] и т.п.) передается лишь последнее значение из цикла. Отсюда вопрос: как сделать так, чтобы были переданы все значения из цикла while?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.04.2014, 04:22
Ответы с готовыми решениями:

Сохранить измененные данные из DataGridView в DataSet
Подключил источник данных к DataGridView Название_ТаблицыBindingSource, в нем есть 4 записи. Добавил несколько новых записей. И наткнулся...

Двумерный массив объектов. Запоминает лишь последнее значение
Здравствуйте. Создал класс Coord (нужно подобие структуры на С++ для задавания координат в рисовании объекта). public class Coord { ...

Почему не передается последнее значение из datagridview в массив?
Добрый вечер. Подскажите пожалуйста почему не передается последнее значение из datagridview В массив? dgw = new string; for...

8
44 / 44 / 8
Регистрация: 06.02.2014
Сообщений: 233
24.04.2014, 04:29
Во-первых, как я понимаю, ты не из формы в таблицу заносишь, а наоборот тянешь из формы. Если оно так, то почему у тебя создание option вынесено за рамки цикла while?!
0
91 / 91 / 23
Регистрация: 02.09.2013
Сообщений: 276
24.04.2014, 07:24
1. Потому что у тебя имена инпутов одинаковые. Они друг друга перетирают
2. Для <option> нет value, что ты хочешь что-бы туда записалось?
3. Price вообще выводится константой ($ забыл)

Короче жесть ...

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<form>
    <?php while($row = mysql_fetch_assoc($result)): ?>
        <?php
            $level = $row['level'];
            $price = $row['price'];
            $type = $row['type'];
        ?>
        <tr>
            <td>
                <input type="text" name="types[]" value="<?php echo $type ?>">
            </td>
            <td>
                <select name="levels[]">
                    <option value="<?php echo $level ?>"><?php echo $level ?></option>
                </select>
            </td>
            <td>
                <input type="text" name="prices[]" value="<?php $price ?>">
            </td>
        </tr>
    <?php endwhile ?>
</form>
0
38 / 38 / 13
Регистрация: 22.07.2013
Сообщений: 197
24.04.2014, 14:31
Zvook, если Value не задан, то в качестве значения будет содержимое выбранного option.
0
1 / 1 / 1
Регистрация: 21.03.2014
Сообщений: 185
24.04.2014, 18:06  [ТС]
Цитата Сообщение от Zvook Посмотреть сообщение
Price вообще выводится константой ($ забыл)
Это я опечатался, извиняюсь..
В любом случае на мой вопрос вы к сожалению не отвечаете..
Вывод был совершен циклом while, как эти данные передать не понимаю, может кто даст наводку..
Вот результат вывода
Миниатюры
Сохранить измененные данные в таблицу: передается лишь последнее значение из цикла  
0
91 / 91 / 23
Регистрация: 02.09.2013
Сообщений: 276
24.04.2014, 19:02
Давай сначала и до конца. Насколько я понял, это редактирование. То есть ты делаешь выборку, отдаешь на редактирование, и сохраняешь снова, так?
0
1 / 1 / 1
Регистрация: 21.03.2014
Сообщений: 185
24.04.2014, 20:59  [ТС]
Цитата Сообщение от Zvook Посмотреть сообщение
Давай сначала и до конца. Насколько я понял, это редактирование. То есть ты делаешь выборку, отдаешь на редактирование, и сохраняешь снова, так?
Как то так)
0
91 / 91 / 23
Регистрация: 02.09.2013
Сообщений: 276
25.04.2014, 07:16
Ладно, будем ванговать.
Предположим, что структура таблицы у тебя такая: id, type, level, price

Тогда сабмит вот такой формы:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<form>
    <?php while($row = mysql_fetch_assoc($result)): ?>
        <?php
        $id = $row['id'];
        $level = $row['level'];
        $price = $row['price'];
        $type = $row['type'];
        ?>
        <tr>
            <td>
                <input type="text" name="types[<?php echo $id ?>]" value="<?php echo $type ?>">
            </td>
            <td>
                <select name="levels[<?php echo $id ?>]">
                    <option value="<?php echo $level ?>"><?php echo $level ?></option>
                </select>
            </td>
            <td>
                <input type="text" name="prices[<?php echo $id ?>]" value="<?php $price ?>">
            </td>
        </tr>
    <?php endwhile ?>
</form>
Отдаст 3 массива:

PHP
1
2
3
$_POST['types']
$_POST['levels']
$_POST['prices']
В которых ключами являются ID соответственных записей в БД.
Тогда сохранение будет выглядеть примерно так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if ($_POST){
 
    $types = $_POST['types'];
    $levels = $_POST['levels'];
    $prices = $_POST['prices'];
    
    $q = 'INSERT INTO my_table (id, type, level, price) VALUES';
    foreach ($types as $id => $type){
        $q .= ' ('.$id.', "'.$type.'", "'.$levels[$id].'", "'.$prices[$id].'"),';
    }
    $q = substr($q, 0, strlen($q) - 1); // отрезаем последнюю запятую
    // Если у тебя в значениях кириллица (русский язык), тогда используй мультибайт. Погугли про mb_substr();
    $q .= ' ON DUPLICATE KEY UPDATE type = VALUES(type), level = VALUES(level), price = VALUES(price)';
    // будет работать только если у тебя ID является первичным ключем. Если нет - то сделай его таковым.
    mysql_query($q);
    
}
Я не утверждаю что это как есть заработает, накидал прям тут в форме. Но общий принцип, надеюсь, ты понял.
0
1 / 1 / 1
Регистрация: 21.03.2014
Сообщений: 185
25.04.2014, 20:48  [ТС]
Zvook, благодарю за ответ, очень помогли!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.04.2014, 20:48
Помогаю со студенческими работами здесь

Получить последнее значение параметра цикла
Всем привет, Новичок в программирование и питоне. Допустим есть код: for i in range(6): print(i)

Сохранить из формы данные в таблицу, при том чтобы данные добавлялись а не заменялись
Здравствуйте. Нужно сохранить из формы данные в таблицу при том чтобы данные добавлялись а не заменялись)) и еще одна проблемка не знаю как...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru