[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: обновить несколько строк базы одним запросом
necun


помогите пожалуйста!
есть таблица, которая создаётся на основе базы

выглядит так


1 имя 1 мэйл1 ....и тд
2 имя2 мэйл2 ....и тд
2 имя 3 мэйл3 ....и тд
...........



содержание этих ячеек можно изменять - то есть они уже являются значением этих полей.
при отправлении формы в пост отправляются такие данные данные:


Array
(
[saveinfo2] => Сохранить изменения
[kv_24] => н
[name_24] =>
[m2_24] =>
[cel_24] =>
[vodomer1_24] =>
[vodomer2_24] =>
[sl1_24] =>
[email_24] =>
[marks_24] =>
[kv_25] =>
[name_25] =>
[m2_25] =>
[cel_25] =>
[vodomer1_25] =>
[vodomer2_25] =>
[sl1_25] =>
[email_25] =>
[marks_25] =>



мой запрос ниже обновляет все строки ОДНИМ значением. (это понятно) не понятно как сделать чтобы для каждого поста с ид24 записывалось значение 24 и так далее



if(isset($_POST['saveinfo2']))
{


//$post_name = "$_POST[name_".$id."]";




$sq444 = ("UPDATE `users` SET

`frate` = '$post_name',
`iz` = '$_POST[kv]',
`mb` = '$_POST[m2]',
`sc1` = '$_POST[cel]',
`sc3` = '$_POST[vodomer1]',
`ob` = '$_POST[vodomer2]',
`sl1` = '$_POST[sl1]',
`sl2` = '$_POST[email]',
`sl3` = '$_POST[marks]'

WHERE `id` IN (24, 25, 26) ");





Спустя 2 часа, 37 минут, 59 секунд (11.02.2012 - 02:43) sergeiss написал(а):
При такой структуре данных очень просто.

Во-первых, надо "пробежать" по массиву ПОСТ и найти все ключи определенного типа. Например, name_№. Выбрать все номера. И тогда ты знаешь, что у тебя есть несколько групп параметров, для которых есть определенные имена и те самые айди, 24, 25 и, возможно, другие. Для каждого из них сформируй отдельный ИНСЕРТ.

Спустя 8 часов, 52 минуты, 26 секунд (11.02.2012 - 11:35) Guest написал(а):
одним запросом невозможно?
если у меня тысяча будет строк в базе?

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

я пробовал ставить так -$post_name = "$_POST[name_".$id."]";
в форме эта строка работает а в запросе нет, ошибку выдаёт

как тут правильно ид подставить?
пустые скобки массива тоже не помогают
$sq444 = ("UPDATE `users` SET

`frate` = '$post_name".$id."',
`iz` = '$_POST[kv]".$id."',
`mb` = '$_POST[m2]".$id."',
`sc1` = '$_POST[cel]".$id."',

Спустя 13 часов, 2 минуты, 39 секунд (12.02.2012 - 00:38) sergeiss написал(а):
Цитата (Guest @ 11.02.2012 - 12:35)
как тут правильно ид подставить?

Очень просто.

Распишу чуть подробнее то, что я уже сказал.

1. Сначала делаешь цикл по массиву ПОСТ, ищешь ключи типа name_№, т.е. с name_ в начале и какое-то число в конце. Все остальные ключи игнорируешь пока. В процессе тебе очень поможет функция explode.
2. Если нашел name_№, то у тебя, как я понял, должны быть тогда ключи типа kv_№, cel_№ и ряд других с тем же числом. А это значит, что ты можешь именно для этого id=№ получить все параметры.
3. Сформируй запрос для ввода данных (апдейта, как я понял) по одному id, который ты нашел. Запусти запрос.
4. Переходишь к п.2, т.е. ищешь дальше ключи типа name_№. Если их больше нет, то тогда ты проадпейтил всё, что было указано.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.