@Artur_hopf почти пример таков смотри поставил я 1 руб у меня 1-11 билетов поставил второй рубль у него 12-22 билетов, если первый добавит еще рубль то очередь смещается у первого становится 1-21 билетов у второго 22-32 билет 1-11 билеты 1 это старт 11 энд и тд
То есть в этом примере у каждого 11 билетов? Билеты - это виртуальная штука, определяющая шанс выигрыша?
в зависимости от суммы и ида ид юзер сума старт енд 1 вася 1 1 1 2 петя 3 2 4 если появится дима с идом 3 то ид юзер сума старт енд 1 вася 1 1 1 2 петя 3 2 4 3 дима 1 5 6 и тд..... если вася внес еще 1 то есть его сумма теперь 2 1 вася 2 1 2 2 петя 3 3 5 3 дима 1 6 7 и тд
Да бляха ж муха, извините мой французский. У вас ещё и с математикой проблемы. Если верхняя граница идёт по последнему элементу, включая его, то должно быть 1 6 6!
Прошу прощения за излишнюю эмоциональность, просто если бы вы сразу описали задачу понятно, то можно было бы её решить за первые 10 минут, а не тратить 3 дня на выяснение деталей Реально алгоритм действительно очень простой. При такой структуре БД достаточно сделать всего лишь два запроса: PHP: $str = "UPDATE `table` SET `sum` SET `sum`+".$amount. " WHERE `id`=".$user_id."; "; $str .= "UPDATE `table` SET `start` SET `start`+".$amount. " WHERE `start`>(SELECT `start` FROM `table` WHERE `id`=".$user_id.")"; mysql_query($str, $db); // Опционально можно проверить, есть ли нарушения логики $res = mysql_query("SELECT FROM `table`". " WHERE `start`>=(SELECT `start` FROM `table` WHERE `id`=".$user_id.")". " AND `start`<(SELECT `start` FROM `table` WHERE `id`=".$user_id.")+(SELECT `sum` FROM `table` WHERE `id`=".$user_id.")", $db); while ($row = mysql_fetch_assoc($res)) { echo "Неверные данные: ".$row['name'].": ".$row['start'].", ".$row['sum']."<br />\r\n"; } На мой взгляд это решение изящнее, чем полный пересчёт хвоста таблицы на основе значений `start` по цепочке - как минимум тем, что здесь мы не используем PHP, а только MySQL. Это код добавления билетов уже существующему игроку. Код добавления нового игрока я думаю вы напишете сами (сперва надо проверить, есть ли игрок с таким `id` в таблице).
Не за что. Да, если у вас в таблице есть поле `id` с AUTO_INCREMENT, и вы гарантированно не имеете "скачков" в нумерации игроков (у игроков с большими id всегда больше значение `start`), то код можно ещё слегка упростить и сделать чуть оптимизированнее по скорости (хотя тут погоды конечно не делает, так как подзапрос выполняется однократно): PHP: $str = "UPDATE `table` SET `sum` SET `sum`+".$amount." WHERE `id`=".$user_id."; "; $str .= "UPDATE `table` SET `start` SET `start`+".$amount." WHERE `id`>".$user_id; mysql_query($str, $db);