Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
step-olga
0 / 0 / 0
Регистрация: 13.06.2015
Сообщений: 26
1

Выполнение скрипта по cron

20.06.2015, 20:12. Просмотров 926. Ответов 15
Метки нет (Все метки)

Доброго времени суток!) Помогите мне пожалуйста, есть БД с таблицами сотрудников (petka, vanka, vasya), у них в таблицах есть задание с датой, до которой им надо это задание выполнить, если задание не выполнено вместо даты записывается "Не выполнено". Я так понимаю, что проверку сегодняшней даты и выполнение скрипта должно проходить через крон. Но на каждую таблицу придется писать отдельно скрипт, а таблицы каждый раз добавляются. Подскажите, пожалуйста, как сделать чтоб каждую таблицу сотрудника скрипт обрабатывал?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2015, 20:12
Ответы с готовыми решениями:

Регулярное выполнение скрипта Cron или нет
Доброго времени суток, столкнулся с интересной задачей. Нужно выполнять...

Cron - запуск php скрипта по расписанию
Доброго времени суток. Сабж: есть хостинг, на хостинг я закинул свой сайт, так...

Как определить причину не выполнения скрипта в Cron
Доброго времени суток. Ищу помощи в решении такого вопроса: На сервере...

Запуск скрипта только для CRON и определеного ип-адреса
Здравствуйте! Подскажите как сделать чтоб запуск скрипта можно было...

Нужно ли дописывать что-либо в начало скрипта который надо запустить в Cron?
Подскажите подскажите плиз. Нужно ли(и если да то что) дописывать в начало...

15
Dolphin
805 / 790 / 199
Регистрация: 21.09.2012
Сообщений: 2,631
20.06.2015, 20:30 2
А смысл отдельной таблицы для каждого сотрудника?
0
step-olga
0 / 0 / 0
Регистрация: 13.06.2015
Сообщений: 26
20.06.2015, 20:56  [ТС] 3
Dolphin, сама только сейчас задумалась над этим. Я так понимаю можно сделать одну таблицу с колонкой каждого id, и показывать каждому. Я правильно поняла?
0
fanatikus
1085 / 1079 / 506
Регистрация: 17.11.2012
Сообщений: 4,774
20.06.2015, 21:57 4
Цитата Сообщение от step-olga Посмотреть сообщение
Я так понимаю можно сделать одну таблицу с колонкой каждого id
да
Цитата Сообщение от step-olga Посмотреть сообщение
и показывать каждому
в смысле, показывать каждому?
0
step-olga
0 / 0 / 0
Регистрация: 13.06.2015
Сообщений: 26
20.06.2015, 22:21  [ТС] 5
fanatikus, ну я имею виду сделать выборку с условием id
0
step-olga
0 / 0 / 0
Регистрация: 13.06.2015
Сообщений: 26
22.06.2015, 15:10  [ТС] 6
Дабы не создавать новую тему, у меня возник вопрос этого же характера. Сделала я одну таблицу на всех сотрудников. Для проверки даты окончания задания, я делаю выборку из бд по текущей дате, если дата в бд равна текущей дате, то в строке с датой меняется значение на "Не выполнено". Но я так понимаю что после первой проверки выполнение скрипта остановится, как сделать что бы проверялись все даты совпадающие с текущей?

PHP
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
<?php
    
    $date = date('Y-m-d');
    $com = 'Не выполнено';
     
     
     $db = mysql_connect($mysql_server, $mysql_username, $mysql_password);
     mysql_select_db($mysql_database, $db) or die('Failed to select database<br>'.mysql_error());
     $sql = "SELECT * FROM `zadanie` WHERE data = '$date'";
     $result = mysql_query($sql, $db);
      while ($res = mysql_fetch_array($result))
     {
            $id =   $res['id']
            $id_user    = $res['id_user'];
            $nomer = $res['nomer'];
            $data = $res['data'];
            $zadanie = $res['zadanie'];
            $day    = $res['day'];
            $up_data = $res['up_data'];
    }
    
    if($date == $up_data) 
            { 
         $sql = "UPDATE `zadanie` SET `up_data` = $com WHERE `id` = '$id'";
            mysql_query($sql, $db);
            }
?>
0
Dolphin
805 / 790 / 199
Регистрация: 21.09.2012
Сообщений: 2,631
22.06.2015, 15:17 7
PHP
1
"UPDATE `zadanie` SET `up_data` = 'Не выполнено' WHERE data = '{$date}'"
0
step-olga
0 / 0 / 0
Регистрация: 13.06.2015
Сообщений: 26
22.06.2015, 15:21  [ТС] 8
Dolphin, я так понимаю весь код который я писала зря?
0
Dolphin
805 / 790 / 199
Регистрация: 21.09.2012
Сообщений: 2,631
22.06.2015, 15:23 9
Если нужно только
Цитата Сообщение от step-olga Посмотреть сообщение
дата в бд равна текущей дате, то в строке с датой меняется значение на "Не выполнено"
то да, много лишнего кода
0
step-olga
0 / 0 / 0
Регистрация: 13.06.2015
Сообщений: 26
22.06.2015, 15:35  [ТС] 10
Dolphin, Спасибо вам большое!) Подскажите, пожалуйста, а если мне надо вычесть баллы у пользователя которого не выполнено задание.
PHP
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
29
30
<?php
    
    $date = date('Y-m-d');
    $com = 'Не выполнено';
     
     
     $db = mysql_connect($mysql_server, $mysql_username, $mysql_password);
     mysql_select_db($mysql_database, $db) or die('Failed to select database<br>'.mysql_error());
     $sql = "SELECT * FROM `zadanie` WHERE data = '$date'";
     $result = mysql_query($sql, $db);
      while ($res = mysql_fetch_array($result))
     {
            $id =   $res['id']
            $id_user    = $res['id_user'];
            $nomer = $res['nomer'];
            $data = $res['data'];
            $zadanie = $res['zadanie'];
            $day    = $res['day'];
            $up_data = $res['up_data'];
    }
    
    if($date == $up_data) 
            { 
            mysql_select_db($mysql_database, $db) or die('Failed to select database<br>'.mysql_error());
         $sql = "UPDATE `users` SET `bal` = `bal` - 10 WHERE `id` = '$id_user'";
            mysql_query($sql, $db);
         $sql = "UPDATE `zadanie` SET `up_data` = $com WHERE `id` = '$id'";
            mysql_query($sql, $db);
            }
?>
Я надеялась на этот запрос:
PHP
1
2
3
            mysql_select_db($mysql_database, $db) or die('Failed to select database<br>'.mysql_error());
         $sql = "UPDATE `users` SET `bal` = `bal` - 10 WHERE `id` = '$id_user'";
            mysql_query($sql, $db);
0
Dolphin
805 / 790 / 199
Регистрация: 21.09.2012
Сообщений: 2,631
22.06.2015, 15:38 11
PHP
1
"UPDATE `zadanie` SET `up_data` = 'Не выполнено', `bal` = `bal` -10 WHERE data = '{$date}'"
0
step-olga
0 / 0 / 0
Регистрация: 13.06.2015
Сообщений: 26
22.06.2015, 15:49  [ТС] 12
Dolphin, Дак список заданий находится в таблице zadanie, а вся информация о пользователях, там же и балы в таблице users.
P.S. Вы извините меня назойливую=)
0
Dolphin
805 / 790 / 199
Регистрация: 21.09.2012
Сообщений: 2,631
22.06.2015, 15:55 13
Лучший ответ Сообщение было отмечено step-olga как решение

Решение

А, точно, не досмотрел
PHP
1
2
3
4
"UPDATE `zadanie`, `users`
SET `zadanie`.`up_data` = 'Не выполнено', `users`.`bal` = `users`.`bal` -10
WHERE `zadanie`.`id_user`=`users`.`id`
    AND `zadanie`.`data` = '{$date}'"
Как то так.. Перед испытаниями, сделать копию! )
1
step-olga
0 / 0 / 0
Регистрация: 13.06.2015
Сообщений: 26
22.06.2015, 18:15  [ТС] 14
Dolphin, Спасибо Вам большое! Буду испытывать)))

Добавлено через 2 часа 10 минут
Dolphin, а если еще третья таблица есть?)))
0
Dolphin
805 / 790 / 199
Регистрация: 21.09.2012
Сообщений: 2,631
22.06.2015, 18:24 15
Если есть связь между ними, то по аналогии добавить третью
0
step-olga
0 / 0 / 0
Регистрация: 13.06.2015
Сообщений: 26
22.06.2015, 18:27  [ТС] 16
Dolphin, а такой код справится с моей задачей?

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
     $date = date('Y-m-d');
     $com = 'Не выполнено';
     
     $db = mysql_connect($mysql_server, $mysql_username, $mysql_password);
     mysql_select_db($mysql_database, $db) or die('Failed to select database<br>'.mysql_error());
     $sql = "SELECT * FROM `zadanie` WHERE data = '$date' and up_data='$date'";
     $result = mysql_query($sql, $db);
      while ($res = mysql_fetch_array($result))
     {
              $sql = "UPDATE `users` SET `bal` = `bal` - 10 WHERE `id` = '{$res['id_user']}'";
              mysql_query($sql, $db);
              $sql = "UPDATE `zadanie` SET `up_data` = '$com' WHERE `id` = '{$res['id']}'";
              mysql_query($sql, $db);
    }
?>
0
22.06.2015, 18:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2015, 18:27

Как указывать пути к включаемым файлам (include), при запуске скрипта из cron?
Крон &quot;не понимает&quot; такой код. Задание не выполняется или выполняется с...

Выполнение скрипта
Добрый вечер! Ребят может кто подсказать в какую сторону смотреть или...

Выполнение скрипта по рсписанию
Как сделать так, чтобы php файл выполнялся 1 раз ровно в 5 утра по МСК к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru