Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Арифмитические функции на mysql, $i = $i++;
Ramzil_Nixon  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



© Nixon official
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1523
Пользователь №: 30142
На форуме: 5 лет, 5 месяцев, 9 дней
Карма: 17

Трезвый :
24 года, 21 день


Как можно на SQL запросе записать аналог PHP функции:

$i = $i++


Спасибо.


--------------------
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
PMСайт пользователяIntegrity Messenger IMICQAOLYahooMSN
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15250
Пользователь №: 4190
На форуме: 9 лет, 1 месяц, 24 дня
Карма: 461




Для начала поясни, что же ты на самом деле хочешь сделать. Потому что твой код на ПХП не имеет глубокого смысла, поэтому не понятно, что же ты на самом деле хочешь получить.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ramzil_Nixon  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



© Nixon official
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1523
Пользователь №: 30142
На форуме: 5 лет, 5 месяцев, 9 дней
Карма: 17

Трезвый :
24 года, 21 день


Цитата (sergeiss @ 12.04.2014 - 09:50)
Для начала поясни, что же ты на самом деле хочешь сделать. Потому что твой код на ПХП не имеет глубокого смысла, поэтому не понятно, что же ты на самом деле хочешь получить.


Допусти есть столбец под названием `position` Так естественно позиции выводимых данных.

При создании допусти пользователю захотелось вставить новую строку скажем между 5 и 6 строкой ( при выводе на обозрение имею ввиду). А выбирает он это с помощью выпадающего списка.

После записи строки, надо обновить все нижние строки. То есть добавил строку после 5 записи, надо обновить уже существующие данные (сделать на +1 больше).

То есть добавил после 5, позиция будет уже 6, а существующий 6 увеличить на один и так далее все строки после 6.

По моему понятно теперь объяснил huh.gif smile.gif

_______________________________________________________________

То есть мне нужно вынуть цифру, увеличить эту цифру на один и запихнуть обратно на свою ячейку. Думаю можно ли сделать это просто в SQL запросе.

Это сообщение отредактировал Ramzil_Nixon - 12.04.2014 - 13:57


--------------------
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
PMСайт пользователяIntegrity Messenger IMICQAOLYahooMSN
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15250
Пользователь №: 4190
На форуме: 9 лет, 1 месяц, 24 дня
Карма: 461




Цитата (Ramzil_Nixon @ 12.04.2014 - 13:55)
Думаю можно ли сделать это просто в SQL запросе.

Тебе даже не нужно пытаться сделать это в запросе!!! Да, технически возможно. Но если строк в таблице много (десятки-сотни тысяч, миллионы), то увеличение на 1 во многих строках будет делаться очень долго.

Нужно поменять алгоритм. Например, в отдельном поле этой же таблицы указывать, данные с каким айди идут перед данной строкой. Тогда при вставке строки тебе придется обновить всего одну запись.
Можно как-то по-другому сделать. Но не надо обновлять кучу строк только из-за вставки одной новой строки.

Это сообщение отредактировал sergeiss - 12.04.2014 - 14:19


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ramzil_Nixon  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



© Nixon official
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1523
Пользователь №: 30142
На форуме: 5 лет, 5 месяцев, 9 дней
Карма: 17

Трезвый :
24 года, 21 день


sergeiss, балин, придется сносить все что написал..


--------------------
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
PMСайт пользователяIntegrity Messenger IMICQAOLYahooMSN
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15250
Пользователь №: 4190
На форуме: 9 лет, 1 месяц, 24 дня
Карма: 461




Ну.... Я не знаю, и никто не форуме не знает, что ты там написал smile.gif Только ты знаешь. Может, и не надо "всё сносить"? А так, скорректировать только?


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ramzil_Nixon  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



© Nixon official
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1523
Пользователь №: 30142
На форуме: 5 лет, 5 месяцев, 9 дней
Карма: 17

Трезвый :
24 года, 21 день


Я написал следующим образом:

// До этих функцией производится запись запись данных в базу
$nums = 'позиция записанное только что в таблицу';
$QU = mysql_query("SELECT * FROM `name-table` WHERE `del` = '0' AND `position` > ''.$nums.") or die(mysql_error());
while($Q = mysql_fetch_assoc($QU)
{
$i = $Q['position'] + 1;
$Up = mysql_query("UPDATE `name-table` SET `position` = '".$i."' WHILE `del` = '0' AND `position` = '$Q['position']'") or die(mysq_error());
})


Но не обновляет так как надо.

1
2
3
4
5

В позиций при добавлении по порядку. (Если не выбрать на выпадающем списке категорию, пишет по порядку)

Но стоит выбрать 1, 2 и так далее, то позиция получается следующим образом:

1
2
3
4
6
4

А должен быть

1
2
3
5
6
4

Вот ума не приложу что я пишу не так.


--------------------
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
PMСайт пользователяIntegrity Messenger IMICQAOLYahooMSN
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15250
Пользователь №: 4190
На форуме: 9 лет, 1 месяц, 24 дня
Карма: 461




Ты еще и в цикле это всё делаешь?????? Это же "смерть сервера"!

PS. Вместо while, я так понимаю, подразумевалось where?

Запрос на такой апдейт делается по-другому (всего один запрос, безо всяких циклов):
update ..... set position = position + 1 where ....условия....


Да и то, как я уже сказал ранее, лучше избегать таких запросов, по крайней мере для больших таблиц.

Это сообщение отредактировал sergeiss - 12.04.2014 - 14:38


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
vagrand  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2674
Пользователь №: 18145
На форуме: 7 лет, 9 месяцев, 8 дней
Карма: 85




Ramzil_Nixon
А почему такой малый шаг позиций? Почему бы не сделать его скажем равным 10? И тогда вставка между скажем 20 и 30 не будет вызывать никаких проблем: (30 - 20) / 2 = новая позиция


--------------------
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ramzil_Nixon  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



© Nixon official
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1523
Пользователь №: 30142
На форуме: 5 лет, 5 месяцев, 9 дней
Карма: 17

Трезвый :
24 года, 21 день


Цитата (sergeiss @ 12.04.2014 - 10:35)
по крайней мере для больших таблиц.
,
Таблица небольшая, несколько категорий всего будет во время эксплуатации.

Цитата (vagrand @ 12.04.2014 - 10:37)
А почему такой малый шаг позиций? Почему бы не сделать его скажем равным 10? И тогда вставка между скажем 20 и 30 не будет вызывать никаких проблем: (30 - 20) / 2 = новая позиция

Это создаст сложности при создании возможности потом редактировать список.


--------------------
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
PMСайт пользователяIntegrity Messenger IMICQAOLYahooMSN
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
vagrand  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2674
Пользователь №: 18145
На форуме: 7 лет, 9 месяцев, 8 дней
Карма: 85




Ramzil_Nixon
Цитата
Это создаст сложности при создании возможности потом редактировать список.


Какие например?


--------------------
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ramzil_Nixon  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



© Nixon official
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1523
Пользователь №: 30142
На форуме: 5 лет, 5 месяцев, 9 дней
Карма: 17

Трезвый :
24 года, 21 день


vagrand, редактирование позиций, еще не дошел до этого пункта, пока точно не могу сказать


--------------------
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
PMСайт пользователяIntegrity Messenger IMICQAOLYahooMSN
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
vagrand  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2674
Пользователь №: 18145
На форуме: 7 лет, 9 месяцев, 8 дней
Карма: 85




Не вижу никаких возможных проблем при редактировании.


--------------------
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ramzil_Nixon  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



© Nixon official
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1523
Пользователь №: 30142
На форуме: 5 лет, 5 месяцев, 9 дней
Карма: 17

Трезвый :
24 года, 21 день


Нашел другое решение, и для сервера легкий и по счет данной задумки париться не надо, всем спасибо за помощь!


--------------------
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
PMСайт пользователяIntegrity Messenger IMICQAOLYahooMSN
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
glock18  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Be prepared
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 5199
Пользователь №: 17723
На форуме: 7 лет, 10 месяцев, 17 дней
Карма: 57




Только я обратил внимание, что

Цитата (Ramzil_Nixon @ 12.04.2014 - 09:40)
$i = $i++


на самом деле даже инкремент значения $i по факту не сохранит? laugh.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса