[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Замена данных из одной таблицы в другую в определе
mark954
Ребята,привет! Нужна помощь !Есть две таблицы в БД с одинаковыми данными,это расписание-просто одну заполняем на сегодня,вторую-на завтра.Нужно,чтобы в полночь или в течение получаса после полуночи,данные таблицы на сегодня заменялись данными завтрашней таблицы,а последняя очищалась от данных,становясь снова завтрашней.Вот сами таблицы:

CREATE TABLE `daylist` (
`id` INT (10) NOT NULL AUTO_INCREMENT,
`tm`VARCHAR(10)NOT NULL,
`name` VARCHAR(10)NOT NULL,
`theme` VARCHAR(25)NOT NULL,
`more` VARCHAR(50)NOT NULL,
PRIMARY KEY(`id`)
)
TYPE=MyISAM

CREATE TABLE `tomlist` (
`id` INT (10) NOT NULL AUTO_INCREMENT,
`tm`VARCHAR(10)NOT NULL,
`name` VARCHAR(10)NOT NULL,
`theme` VARCHAR(25)NOT NULL,
`more` VARCHAR(50)NOT NULL,
PRIMARY KEY(`id`)
)
TYPE=MyISAM


Вот такой скрипт я накарябал- выглядит так:

 

mysql_connect($dbhost, $dbuser, $dbpasswd) or die("Couldn't establish connection");
mysql_select_db($dbname);

if (time() == "00:00:02")
{
$query = "UPDATE `daylist` SET `tm` = ( REPLACE ( tm, $tm, $tm) )
SET `name` = ( REPLACE( name,
$name,$name))
SET `theme` = ( REPLACE(theme,
$theme,$theme))
SET `more` = ( REPLACE(more,
$more,$more))";

mysql_query($query) or die("Ошибка переноса.");


$query = "DELETE
FROM tomlist( tm, name, theme, more)
VALUES (
$tm, $name, $theme,$more)
"
;
mysql_query($query) or die("Ошибка удаления.");
}

else
{
echo "Не удалось перенести данные";
}

Увы,это вообще не работает ни время,ни перенос данных...может,стоит удалять и заново создавать таблицы...но временная команда на перенос данных и сам перенос опять под вопросом.Или... командой ALTER TABLE переименовать завтрашнюю таблицу в сегоднишнюю,предварительно удалив `daylist` и создать `tomlist` по новой?Но с командой по времени-что то туплю...
Прошу Вашей снисходительности-это второй в жизни скрипт(первый,на if-else уже работает) просто нигде не удалось найти ничего похожего...



Спустя 14 часов, 8 минут, 20 секунд (14.09.2010 - 12:32) SlavaFr написал(а):
1) if (time() == "00:00:02") не когда не будет исполненно (смотри документацию).
2) твой update не имеет условия (тоесть вудет ирмененно все) и " SET `name` = ( REPLACE( name,$name,$name))" это тоже самое что "set name=name" и неимеет не какого смысла.
3) твой delete с VALUE это новое открытие в sql.

А теперь раскажи для чего тебе нужны 2 таблицы?

Спустя 1 час, 34 минуты, 20 секунд (14.09.2010 - 14:06) mark954 написал(а):
Две таблицы нужны для составления расписания занятий на виртуальных курсах, на ДВА дня-сегодня и завтра.Преподы-люди ооочень занятые,могут придти,ввести время(от и до) занятий,свои ФИО,тему и краткое описание занятия на эти два дня-на дальше-просто не планируем,могут удалить свое занятие,если планы меняются-это все уже есть!Теперь надо,чтобы таблицы автоматом в полночь менялись,завтрашняя становилась сегоднишней,а новая завтрашняя ставала чистой...посоветуйте,а вот такой код-будет рабочим?

$link = mysql_connect($dbhost, $dbuser, $dbpasswd) or die("Couldn't establish connection");
mysql_select_db($dbname);

if (time() >= "00:00:03" and <= "00:00:20")
{
$sql="DROP TABLE daylist";
mysql_query($sql);

$sql="ALTER TABLE `tomlist` RENAME `daylist`";
mysql_query($sql);

$sql="CREATE TABLE `tomlist`(`id` INT (10) NOT NULL AUTO_INCREMENT,
`tm`VARCHAR(10)NOT NULL,
`name` VARCHAR(10)NOT NULL,
`theme` VARCHAR(25)NOT NULL,
`more` VARCHAR(50)NOT NULL,
PRIMARY KEY(`id`))"
;
mysql_query($sql);
}
else
{
echo "Операция не удалась";
}


Посоветуйте,как задать временное условие,чтоб скрипт исполнился

Спустя 13 минут, 35 секунд (14.09.2010 - 14:20) drouZ написал(а):
time()

эм, у меня вопрос, а как ты заставляешь запускаться в период с 0.00.03 по 0.00.20?)

тут нужно задания давать, чтобы база "обнулялась"...
Вообще, не плохо полное тз увидеть.

Спустя 27 минут, 21 секунда (14.09.2010 - 14:47) mark954 написал(а):
Друзья-в том и дело,что не знаю,как заставить скрипт(кстати,проверил-этот вариант рабочий-он удаляет,переименовывает и создает новую таблицу) выполняться после полуночи однократно(т.е раз в сутки) smile.gif
Вы уж простите-понимаю,что тема уже не для этого топика,а по работе с датой и временем...

Спустя 4 минуты, 40 секунд (14.09.2010 - 14:52) Basili4 написал(а):
mark954
В мускуле последних версий есть планировщик событий.
настраиваешь его на запуск в полночь

и пишешь в нем 3 запроса

1. TRUNCATE TABLE1 -- очищаем седнешную таблицу перед внесением данных
2.INSERT HIGH_PRIORITY INTO TABLE1 SELECT * FROM TABLE2 -- перносим данные
3. TRUNCATE TABLE2 -- очищаем завтрашюю таблицу

Спустя 11 минут, 52 секунды (14.09.2010 - 15:04) mark954 написал(а):
Basili4
А в ПХП никак? Извините Нуба,но в Денвере,где тестирую скрипты,в mySQL что то крона не нахожу...да и пока не дружен с кроном-не знаю его абсолютно и настраивать его-сами понимаете...а за подсказку-огромное спасибо,то же самое я сделал в ПХП

Спустя 47 минут, 5 секунд (14.09.2010 - 15:51) SlavaFr написал(а):
a крон и ненужен, достаточно просто при первом вызове страницы за сутки зделать нужную операцию.


Спустя 2 часа, 36 минут, 41 секунда (14.09.2010 - 18:27) mark954 написал(а):
SlavaFr
Не ткнешь носом в нужный код?Плизззз rolleyes.gif
Быстрый ответ:

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