Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/14: Рейтинг темы: голосов - 14, средняя оценка - 5.00
 Аватар для KaRaNTiN
44 / 44 / 11
Регистрация: 10.06.2009
Сообщений: 311
Записей в блоге: 2

Обновление нужной записи в БД

13.12.2011, 14:39. Показов 2738. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!..

Существует след. структура таблицы в БД:



И есть такая вот форма заполнения данных:



Как можно оформить обновление полей, которых помечены красным, исходя из содержимого поля, которое выделено чёрным?)..

След. код не работает)..

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
           if($_POST['home']=="Соборка")
       {
           $team=mysql_query("select * from soborka order by number");
           $sostav=mysql_fetch_array($team);
       }
       if($sostav>0)
       {
           do
           {
       ?>
       <tr>
        <td><input name="number" value="<? echo $sostav['number'],'. '?>"><? echo $sostav['surname'],' ', $sostav['name']?></td>
        <td><input name="yel" value="0"></td>
        <td><input name="red" value="0"></td>
        <td><input name="ball" value="0"></td>
       </tr>
       <?
       }
       while( $sostav=mysql_fetch_array($team));
       }
       ?>
Обработка:

PHP
1
$sostav=mysql_query("Update soborka set yellow='".$_POST['yel']."', red='".$_POST['red']."', goals='".$_POST['ball']."' where number='".$_POST['number']."'");
Точнее, такой код работает, но записи не обновляются).. Прошу Вашей помощи)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.12.2011, 14:39
Ответы с готовыми решениями:

Обновление нужной записи в БД
Доброго времени суток!.. Есть 3 страницы: 1. new-rez.php. Администратор выбирает нужное из списка, заполняет поля. &lt;form...

Открытие формы на нужной записи из другой формы, источником записи которой является запрос-объединение
В MS ACCESS есть ленточная форма Ф3, источником записей которой является запрос-объединение из двух таблиц Т1 и Т2, для изменения данных...

Выбор нужной записи
Help! Есть таблица, в которой есть столбец Transaction_id. В этом столбце могут быть значения, к примеру &quot;31293005_&quot; и...

31
127 / 127 / 25
Регистрация: 20.11.2009
Сообщений: 498
13.12.2011, 20:24
для обновления записей в бд необходим UPDATE
PHP
1
2
$sostav=mysql_query("Update soborka set yellow='".$_POST['yel']."', red='".$_POST['red']."', goals='".$_POST['ball']."' where number='".$_POST['number']."'");
echo mysql_error();
какую ошибку выдаст напиши
P.S.
Неплохой стиль кстати, правда я бы сделал таблицу белой
0
 Аватар для KaRaNTiN
44 / 44 / 11
Регистрация: 10.06.2009
Сообщений: 311
Записей в блоге: 2
14.12.2011, 14:00  [ТС]
Пробовал, но ошибок никаких нет =\ просто не могу понять что же обновляет)..

Вот в этой же форме обновления обновляется отдельно результат игры, может тут ошибонька)..

PHP
1
2
3
4
5
6
7
$rezult=mysql_query ("UPDATE rezults set rezult='".$_POST['rezhome'].':'.$_POST['rezaway']."' where home='".$_POST['soshome']."' and away= '".$_POST['sosaway']."'");
    
    $sostav=mysql_query("Update soborka set yellow='".$_POST['yel']."', red='".$_POST['red']."', goals='".$_POST['ball']."' where number='".$_POST['number']."'");
    echo mysql_error();
    
     if ($rezult > 0 && $sostav > 0)
        echo "Всё прекрасно";
Я получаю сообщение "Всё прекрасно")..

Спасибо за стиль, красоту и защиту от инъекций уже буду позже наводить))..

Добавлено через 12 часов 49 минут
ребятушечки).. как объединить эти "инпуты" между собой?).. чтобы оно поняло какие записи надо обновлять какими данными)
0
 Аватар для KaRaNTiN
44 / 44 / 11
Регистрация: 10.06.2009
Сообщений: 311
Записей в блоге: 2
15.12.2011, 14:02  [ТС]
Код выглядит уже так:

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
  <?
           if($_POST['home']=="Соборка")
       {
           $team=mysql_query("select * from soborka order by number");
           $sostav=mysql_fetch_array($team);
       }
       if($sostav>0)
       {
           $a=0; 
           do
           {
       ?>
       <tr>
      <!--- <td><input type="checkbox" name="play"></td>--->
      <?php $a=$a+1; ?>
        <td><input type="text" name="number" value="<? echo $sostav['number']?>"><? echo $sostav['surname'],' ', $sostav['name']?></td>
        <td><input type="text" name="yel<?php echo $a ?>" value="0"></td>
        <td><input type="text" name="red<?php echo $a ?>" value="0"></td>
        <td><input type="text" name="ball<?php echo $a ?>" value="0"></td>
       </tr>
       <?
       }
       while($sostav=mysql_fetch_array($team));
       }
       else
       {       
       ?>
Код обновления:

PHP
1
2
3
4
5
  mysql_query("Update soborka set yellow='".$_POST['yel']."', red='".$_POST['red']."', goals='".$_POST['ball']."' where number='".$_POST['number']."'");
    
     if (mysql_affected_rows() > 0)
        echo "Всё прекрасно";
    else echo "Проблема с базой данных";
Как в код обновления нужной записи передать эту самую переменную а?) т.е. значение name каждого input)..

такой код неэффективный и неправильный:
PHP
1
 mysql_query("Update soborka set yellow='".$_POST['yel<?php echo $a ?>']."', red='".$_POST['red<?php echo $a ?>']."', goals='".$_POST['ball<?php echo $a ?>']."' where number='".$_POST['number']."'");
Подскажите, пожалуйста как правильно (:
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
15.12.2011, 15:02
PHP
1
mysql_query("Update soborka set yellow='".$_POST['yel' . $a]."', red='".$_POST['red' . $a']."', goals='".$_POST['ball' . $a]."' where number='".$_POST['number']."'");
Сам только что сшивал строки точкой ("."), и тут же стал херню писать в виде echo $a; по середине процесса.

Вот тебе код, как надо.

Можно еще так, это одно и то же, фактически:

PHP
1
mysql_query("Update soborka set yellow='".{$_POST['yel' . $a]}."', red='".{$_POST['red' . $a']}."', goals='".{$_POST['ball' . $a]}."' where number='".{$_POST['number']}."'");
1
 Аватар для KaRaNTiN
44 / 44 / 11
Регистрация: 10.06.2009
Сообщений: 311
Записей в блоге: 2
15.12.2011, 15:07  [ТС]
Спасибо).. Вот код:

PHP
1
2
3
4
5
       mysql_query("Update soborka set yellow='".$_POST['yel' . $a]."', red='".$_POST['red' . $a]."', goals='".$_POST['ball' . $a]."' where number='".$_POST['number']."'");
    
     if (mysql_affected_rows() > 0)
        echo "Всё прекрасно";
    else echo "Проблема с базой данных";
Получаю сообщение, в виде "Проблема с базой данных". Данные не обновились(
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
15.12.2011, 15:11
PHP
1
die("Update soborka set yellow='".$_POST['yel' . $a]."', red='".$_POST['red' . $a]."', goals='".$_POST['ball' . $a]."' where number='".$_POST['number']."'");
И выложи сюда что написано.
0
 Аватар для KaRaNTiN
44 / 44 / 11
Регистрация: 10.06.2009
Сообщений: 311
Записей в блоге: 2
15.12.2011, 15:13  [ТС]
Update soborka set yellow='', red='', goals='' where number='34'
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
15.12.2011, 15:16
PHP
1
die("Update soborka set yellow='".$_POST["yel$a"]."', red='".$_POST["red$a"]."', goals='".$_POST["ball$a"]."' where number='".$_POST['number']."'");
Добавлено через 13 секунд
А так?
0
 Аватар для KaRaNTiN
44 / 44 / 11
Регистрация: 10.06.2009
Сообщений: 311
Записей в блоге: 2
15.12.2011, 15:20  [ТС]
Так пробовал давно).. Результат тот же =\

Update soborka set yellow='', red='', goals='' where number='34'
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
15.12.2011, 15:26
А все эти $_POST['red$a'], ..., $_POST['ball$a'] вообще содержат в себе значения?

Точнее, они однозначно пусты.

Скачай себе зенд и сделай все что ты тут мучаешься в 4-ре строки. Левый у тебя какой-то велосипед.
0
 Аватар для KaRaNTiN
44 / 44 / 11
Регистрация: 10.06.2009
Сообщений: 311
Записей в блоге: 2
15.12.2011, 15:31  [ТС]
Эти значения заполняются в форме раньше:

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
<?php
           if($_POST['home']=="Соборка")
       {
           $team=mysql_query("select * from soborka order by number");
           $sostav=mysql_fetch_array($team);
       }
       if($sostav>0)
       {
           $a=0; 
           do
           {
       ?>
       <tr>
      <!--- <td><input type="checkbox" name="play"></td>--->
      <?php $a=$a+1; ?>
        <td><input type="text" name="number" value="<?php echo $sostav['number']?>"><?php echo $sostav['surname'],' ', $sostav['name']?></td>
        <td><input type="text" name="yel<?php echo $a ?>" value="0"></td>
        <td><input type="text" name="red<?php echo $a ?>" value="0"></td>
        <td><input type="text" name="ball<?php echo $a ?>" value="0"></td>
       </tr>
       <?php
       }
       while($sostav=mysql_fetch_array($team));
       }
       else
       {       
       ?>
Исходный код этой странице через Mozilla следующий:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<td><input type="text" name="number" value="2">Пежонов Игорь</td>
 
        <td><input type="text" name="yel1" value="0"></td>
        <td><input type="text" name="red1" value="0"></td>
        <td><input type="text" name="ball1" value="0"></td>
       </tr>
              <tr>
      <!--- <td><input type="checkbox" name="play"></td>--->
              <td><input type="text" name="number" value="5">Пежонов Dfcbkbq</td>
        <td><input type="text" name="yel2" value="0"></td>
 
        <td><input type="text" name="red2" value="0"></td>
        <td><input type="text" name="ball2" value="0"></td>
       </tr>
              <tr>
      <!--- <td><input type="checkbox" name="play"></td>--->
              <td><input type="text" name="number" value="34">Хохлов Саня</td>
        <td><input type="text" name="yel3" value="0"></td>
        <td><input type="text" name="red3" value="0"></td>
 
        <td><input type="text" name="ball3" value="0"></td>
       </tr>
вот name у input заполнены).. вот эти долбанные цифры, которые генерируются переменной а и надо как-то передать в запросе к БД (:
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
15.12.2011, 15:35
переделай их в массивы.
<input type="text" name="red[3]" value="0">
1
 Аватар для KaRaNTiN
44 / 44 / 11
Регистрация: 10.06.2009
Сообщений: 311
Записей в блоге: 2
15.12.2011, 15:40  [ТС]
Цитата Сообщение от KoIIIeY Посмотреть сообщение
переделай их в массивы.
<input type="text" name="red[3]" value="0">
ох не люблю я массивы)).. боялся что придётся их использовать).. сейчас поиграемся, напишу результат))
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
15.12.2011, 15:50
Нельзя в PHP не любить массивы, это грех

Что бы полюбить, смотрим foreach();.
0
 Аватар для KaRaNTiN
44 / 44 / 11
Регистрация: 10.06.2009
Сообщений: 311
Записей в блоге: 2
15.12.2011, 16:04  [ТС]
Такой код верный?

PHP
1
2
3
4
5
6
7
8
9
10
11
<?php 
      $yel = array(0,1,2,3);
      $red = array(0,1,2,3);
      $ball = array(0,1,2,3);
      $a=$a+1; 
      ?>
        <td><input type="text" name="number" value="<?php echo $sostav['number']?>"><?php echo $sostav['surname'],' ', $sostav['name']?></td>
        <td><input type="text" name="<?php echo $yel[$a]?>" value="0"></td>
        <td><input type="text" name="<?php echo $red[$a]?>" value="0"></td>
        <td><input type="text" name="<?php echo $ball[$a]?>" value="0"></td>
       </tr>
PHP
1
die("Update soborka set yellow='".$_POST[$yel[$a]]."', red='".$_POST[$red[$a]]."', goals='".$_POST[$ball[$a]]."' where number='".$_POST['number']."'");
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
15.12.2011, 16:58
Не, тебе не надо создавать массивы.
Один сами будут в $_POST.

сделай var_dump($_POST);die; и посмотри что у тебя там лежит.

Добавлено через 47 секунд
Хотя да, верный вроде.
1
 Аватар для KaRaNTiN
44 / 44 / 11
Регистрация: 10.06.2009
Сообщений: 311
Записей в блоге: 2
15.12.2011, 17:28  [ТС]
ох уж эти суровые реалии php) Ожидал, что всё проще будет).. вот результат вар_дампа:

array(6) { ["soshome"]=> string(7) "Соборка" ["sosaway"]=> string(13) "Торнадо-Спорт" ["number"]=> string(2) "34" [1]=> string(1) "3" [2]=> string(1) "6" [3]=> string(1) "9" }

Значения 3, 6 и 9 - значения, которые я вписал в инпуты с именем ball. Почему нету информации о других инпутах, которые были заполнены?)..

Добавлено через 4 минуты
Ошибочка))

Во-первых, массивы так должны выглядеть, дабы для каждого своё уникальное имя было

PHP
1
2
3
$yel = array(0,1,2,3);
     $red = array(4,5,6,7);
      $ball = array(8,9,10,11);
И тогда результат дампа следующий:

PHP
1
array(12) { ["soshome"]=> string(7) "Соборка" ["sosaway"]=> string(13) "Торнадо-Спорт" ["number"]=> string(2) "34" [1]=> string(1) "1" [5]=> string(1) "2" [9]=> string(1) "3" [2]=> string(1) "4" [6]=> string(1) "5" [10]=> string(1) "6" [3]=> string(1) "7" [7]=> string(1) "8" [11]=> string(1) "9" }
Т.е. массивы заполнены верно, я так понимаю)

Добавлено через 3 минуты
Основная загвоздка - как с помощью POST передать переменную).. Оно почему-то передаёт пустые значения =\

SQL
1
UPDATE soborka SET yellow='', red='', goals='' WHERE NUMBER='34'
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
15.12.2011, 17:30
Ну, как дебажить ты теперь знаешь

А теперь ищи, почему же у тебя строка получается с пустыми значениями, хотя массив заполнен.

$_POST['soshome'] сейчас равен "Соборка"

$_POST["sosaway"]=> string(13) "Торнадо-Спорт"
1
 Аватар для KaRaNTiN
44 / 44 / 11
Регистрация: 10.06.2009
Сообщений: 311
Записей в блоге: 2
15.12.2011, 17:46  [ТС]
Ну пустая наверное потому что может синтаксис неправильный)..

PHP
1
 die("Update soborka set yellow='".$_POST[$yel[$a]]."', red='".$_POST[$red[$a]]."', goals='".$_POST[$ball[$a]]."' where number='".$_POST['number']."'");
Вот в POST может не так надо это отображать, хотя вроде всё правильно.. Ох я и запутался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2011, 17:46
Помогаю со студенческими работами здесь

ComboBox Выбор нужной записи
Есть на форме2 ComboBox и свойства его Style:=csOwnerDrawFixed. Список Items загружается из базы данных (*.dbf) при открытии формы2. На...

Вывод изображения по нужной записи
Здравствуйте, есть list box в него вносятся данные из бд, при клике в лейблы выводится остальные данные этой записи По примеру из этой...

Удаление записи из нужной таблицы
Есть форма , на ней Tabcontrol и 2 вкладки. На каждой вкладке по датагридвью , которые привязаны каждый к своей таблице в базе аксес. И...

Поиск и удаление нужной записи в БД
Необходимо найти в БД запись с самой старой датой записи пользователя, определить ее Id в бд, чтобы передать в метод Find() и удалить. ...

Форма не открывается на нужной записи
Если на вкладке &quot;ИСХ_ЗДЧ&quot; открывать задачу в отдельной форме, то открывается задача, которая не соответствует текущей. Private Sub...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Установка 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
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru