Автор Тема: Как сделать update с увеличением?  (Прочитано 10086 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Varvara

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как сделать update с увеличением?
« : 04 Февраля 2004, 12:09:31 »
Как написать update c увеличение на переменную $i для всех полей БД.
for ($i=0;$i<$total;$i++)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как сделать update с увеличением?
« Ответ #1 : 04 Февраля 2004, 12:33:37 »
в бд не нет полей.
в бд лежат строки.
а поля - в строках.

если тебе одно поле во всех строках увеличить на единицу,
то update table set pole=pole+1

если нет, то постарайся писать чуть более связно, чтобы не приходилось большую часть задачи за тебя придумывать

Оффлайн Varvara

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как сделать update с увеличением?
« Ответ #2 : 04 Февраля 2004, 12:42:57 »
Как написать update c увеличение на переменную $i для всех строк БД, если переменная увеличивается по циклу
for ($i=0;$i<$total;$i++)

Пример неработающего кода:

for ($i=0;$i<$total;$i++) {
....
$query = "UPDATE catalogs2 SET cat_left=\'$last_cat_left\'+\'$i\', cat_right=\'$last_cat_right\'-\'$i\' ";
....
}

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как сделать update с увеличением?
« Ответ #3 : 04 Февраля 2004, 12:46:33 »
я уже понял.
Варенька, милая, почитай вот это пожалуйста
http://phpclub.ru/talk/showthread.php?s=&threadid=26843
после того, как жгучий стыд пройдет, опиши нам тему, над которой ты работаешь, и мы с тобой вместе выведем формулу.
Договорились?

Оффлайн Varvara

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как сделать update с увеличением?
« Ответ #4 : 04 Февраля 2004, 13:08:22 »
Проблему я описала выше, более узко к примеру кода.
Есть цикл увеличивающийся на $i - единицу как написать запрос на обновление на эту увелич. переменную???

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как сделать update с увеличением?
« Ответ #5 : 04 Февраля 2004, 13:24:27 »
пошла вторая итерация....

Варенька, милая, почитай вот это пожалуйста
http://phpclub.ru/talk/showthread.php?s=&threadid=26843
после того, как жгучий стыд пройдет, опиши нам тему, над которой ты работаешь, и мы с тобой вместе выведем формулу.
Договорились?

писать запрос на увеличение переменной - это значит не понимать программирования вообще. это вместо программы использовать счетные палочки.

меня интересует не твой апдейт, а задача, которую ты с его попощью решаешь. Неужели я так непонятно пишу?

Оффлайн Varvara

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как сделать update с увеличением?
« Ответ #6 : 04 Февраля 2004, 13:35:02 »
Таблица:

Были значения -

cat_left - cat_right

1 - 6
2 - 5
3 - 4

Хотелось бы -

cat_left  cat_right

2 - 7
3 - 6
4 - 5

Пишу запрос на перемещение потомков по Nested Sets, знаю что есть function moveAll в классе Nested Sets.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как сделать update с увеличением?
« Ответ #7 : 04 Февраля 2004, 13:40:41 »
если не работает запрос, то надо вывести mysql_error() и сам запрос на экран.

Оффлайн Varvara

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как сделать update с увеличением?
« Ответ #8 : 04 Февраля 2004, 15:51:45 »
Что такое mysql_error() , я знаю, ответь на мой вопрос!

Как обновить БД циклической переменной $i ???

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как сделать update с увеличением?
« Ответ #9 : 04 Февраля 2004, 16:09:57 »
точно так же, как и не циклической.
вообще, можно бы и сообразить, что источник переменной - цикл или форма или руками присвоил - никакого значения на синтаксис запроса не имеет.
как запрос составила - так он и выполнился.

ты where в апдейте указываешь?
или за тебя это Пушкин АС будет делать?

Оффлайн гоша

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 85
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как сделать update с увеличением?
« Ответ #10 : 04 Февраля 2004, 16:32:04 »
Да нет, девушка одной простой вещи не понимает.

Видите ли, Варя, когда вы пишете

UPDATE таблица SET что-нибудь WHERE условие

то "что-нибудь" будет выполнено для ВСЕХ записей, для которых верно "условие". Иными словами, "цикл" за вас проделает база данных. Сама. То есть вам никакого цикла писать не надо .

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как сделать update с увеличением?
« Ответ #11 : 04 Февраля 2004, 17:22:36 »
гоша но тогда надо переменную вводить.
я вообще, в этой технологии нестед сетс не разбирался.
может быть, там действительно надо в цикле у определенных полей значение увеличивать.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Как сделать update с увеличением?
« Ответ #12 : 04 Февраля 2004, 17:44:37 »
Varvara
при чем здесь циклическая переменная ? При перемещении узла, cat_left, cat_right у узла и всех его потомков меняются на одинаковое значение:
UPDATE tab SET cat_left = cat_left + 1, cat_right=cat_right+1 WHERE cat_left BETWEEN  1 AND 6.

PS
dbtree c исправленным методом moveAll лежит на
http://max.phpclub.net/sources/dbtree.phps (правда на реальных проэктах не оттестирован)
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Как сделать update с увеличением?
« Ответ #13 : 04 Февраля 2004, 17:47:17 »
запрос который я привел - лишь для примера, что смещения на одинаковое значение меняются. Для перемещения надо запрос посложнее делать
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Varvara

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
FOR Макс
« Ответ #14 : 05 Февраля 2004, 15:41:15 »
На самом деле цикл берется из проверки потомков, взависимости от количества потомков, зная новое значение родителя после перемещения, имея цикл легко создать потомков увеличивая cat_left и уменьшая cat_right на $i, это очень логическое решешие проблемы.

Я не вникала в код function moveAll, т.к. хочу разабраться сама и почти написала свои функции для работы с этим алгоритном, осталось разобраться с перемещением, бьюсь целую неделю, до конца не могу нащупать универсальный путь.

СПАСИБО!

 

Sitemap 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