Ежедневная автоматическая ротация

Troy

Новичок
Ежедневная автоматическая ротация

Привет всем!
Дае незнал как назвать тему

Такое дело, есть 3 автомашины и нужно чтобы они каждый день автоматический менялись местами ... то есть поочередно менялись местами.
блин
не умею обяснять ....

Вот пример:

День 1:
Машина 1
Машина 2
Машина 3

День 2:
Машина 2
Машина 3
Машина 1

День 3:
Машина 3
Машина 1
Машина 2

День 4:
Машина 1
Машина 2
Машина 3

Так вот, надо чтобы это происходитло автоматический.
Есть 3 дежурных авто, и они должны дежурить по 1 дню с 9 утра до 9 утра ... Например:
1 авто продижурил один день, настал второй день и на странице выводиться гос. номер след авто!!! и так они дожны меняться.

Есть возмоность добавлять еще новые авто.

Все сделал, таблицу, добавил тестовые авто ... только не допер как сделать авто ротацию

помогите плиз!
 

yugene

Отошел от дел
Какие машины? Где они должны крутиться? Зачем? :)

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

Troy

Новичок
А как? можете привести примерный код?
я просто начинаю еще пожтому незнаю всех тонкостей :(
Заранее спасибо!
 

Tor

Новичок
ставить сегодняшней машине 1 в базе
а завтра брать машину с id=id+1 той записи, у которой последней 1 стоит
ну и чистить иногда как-нить, например при достижении конца таблицы у всех машин ставить 0
 

Стас

Троечник
Пусть машин будет k .... НЕТ, k мало , пусть будет n (c). Отсчет начинаем с первой. В первый день дежурит 1ая машина. Во второй- 2ая .... если до нее дежурила машина n, то сейчас дежурная машина=1. И опять с начала.

Или другой алоритм, еще проще: от начала дежурства 1ой машины считаем количество дней.
день машина
1 1
2 2
n n

Номер машины, дежурящей в день p будет остаток(день:n). Если получившееся число=0, то оно=n.
 

Troy

Новичок
спасибо госопда!
Но можете привести примерный код?

машин всего 3!
Прошу! очень благодарен!
 

Tor

Новичок
- Прошу! Откройте замок!
- А где он?
- Он в другом городе, но мне очень нужно, что бы вы его сейчас же открыли!
 

untied

Сдвинутый новичок
Элементарно, Ватсоны!
Troy, добавь еще одну колонку в таблицу машин: дата использования (в виде unix timestamp). Машина сегодня используется -- обновляем ей метку времени. Нужно выбрать следующую машину -- выбираем ту, у которой отметка времени меньше всех (т.е. машина использовалась раньше других).

PHP:
"UPDATE tab_cars SET car_time = ".time()." WHERE car_id = ".$car_id

"SELECT car_id, MIN(car_time) FROM tab_cars GROUP BY car_id"
 

Tor

Новичок
select car_id from tab_cars order by car_time desc limit 1

a "SELECT car_id, MIN(car_time) FROM tab_cars GROUP BY car_id"
вернет бред
 

yugene

Отошел от дел
Автор оригинала: Tor
select car_id from tab_cars order by car_time desc limit 1

a "SELECT car_id, MIN(car_time) FROM tab_cars GROUP BY car_id"
вернет бред
вернет не_бред, только придется сделать пару лишних телодвижений. плюс, сам запрос более долгий, имхо.
 

untied

Сдвинутый новичок
Автор оригинала: Tor
a "SELECT car_id, MIN(car_time) FROM tab_cars GROUP BY car_id"
вернет бред
Я бы не делал столь смелых заявлений, тем более, что этот запрос как раз на 100% соответствует стандарту SQL (в отличие от того, что написал ты -- у него аж два "прокола" в этом плане). ;)

И телодвижения не нужны никакие. Популярно о насущном:

PHP:
$recset = mysql_query("SELECT car_id, MIN(car_time) FROM tab_cars GROUP BY car_id");
list( $car_id, $useless_time ) = mysql_fetch_row($recset);
 

Tor

Новичок
может каждый потренируется на кошках, а?

для повторяемости эксперимента даю вводные:

id - car_id - car_time
1 34 2005-02-24 14:53:06
2 23 2005-02-25 14:53:06
3 74 2005-02-22 14:53:06
 

Troy

Новичок
PHP:
<?php
include("inc/conf_global.inc");
$sel = mysql_query("select * from trans_attendants order by id asc");
$sel_r = mysql_num_rows($sel);

$res = mysql_query("select dez from trans_attendants where dez = '1'");
$res_obj = mysql_fetch_object($res);
$c_id = $res_obj->id;

if ($c_id != $sel_r) {
        $cid = $c_id+1;
        } else {
                $cid = 1;
                }

if (date("G:i") == "9:00") {
        $nul = mysql_query("update trans_attendants set dez = '0'");
        $up = mysql_query("update trans_attendants set dez = '1' where id = '$cid'");
        }
?>
а так сработает???
только я немогу понять как скрипт будет знать сктолько время??? ведь если к нему не обратиться он будет так и лежать сам по себе?

спасибо за помощь!
 

SiMM

Новичок
Если кто-нибудь сможет мне объяснить, при чём здесь БД - cможет взять с полки пирожок.
PHP:
$auto = date('z',time()-9*60*60);
for ($i = 0; $i < 3; $i++)
  echo (($auto + $i)%3 + 1)."<br>\n";
 

Troy

Новичок
Ну неполучается :(
я просто понять немогу:

1. Как проверять сколько щас времени и высталять деружную машину.

Спасибо за помощь, но можно на примере. Чтобы в 9:00 все происходило .. я вот этого никак сделать немогу :(
Чтобы скрипт увидел что 9:00 и начал процесс.

спасибо!
буду ждать ответа
 

boltikov

Новичок
Когда у меня была похожая задача (надо было чтобы пользователю выдавался один из трех почтовых серверов для регистрации) то я решил ее следующим способом.

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