Пакетное изменение даты для постов DLE

В этом разделе Вы можете попросить помощи в решении проблем
fleerze
Сообщения: 1
Зарегистрирован: 30 дек 2016, 09:07

Пакетное изменение даты для постов DLE

Сообщение fleerze » 30 дек 2016, 09:20

Приветствую!
Подскажите пожалуйста правильный код, чтобы рандомно изменить даты у постов которые были опубликованы на сайте в промежутке от 27 января 2013 до 20 апреля 2016 - в этом же промежутке т.е. от 27 января 2013 до 20 апреля 2016 Новости которые идут после 20 апреля 2016 не трогать. Например была новость от 30 января 2013, я запускаю файл и чтобы новость стала например уже от 10 марта 2014 и т.д.
Сделал код (самый первый), залил на сайт, запускаю файл, но ничего не происходит - белый экран.
DLE 10.6 utf-8

Спасибо!

Аватара пользователя
vitto
Администратор
Сообщения: 25
Зарегистрирован: 08 май 2016, 17:54

Re: Пакетное изменение даты для постов DLE

Сообщение vitto » 31 дек 2016, 10:31

Привет,
Для тех кто пришел сюда не с сайта, вот ссылка на обсуждаемыё скрипт: Пакетное изменение даты для постов DLE

1) меняешь выборку постов, чтобы обрабатывать только посты из заданного диапазона:

вот это

Код: Выделить всё

$query="SELECT * FROM `".PREFIX."_post`";

меняешь на это

Код: Выделить всё

$query="SELECT * FROM `".PREFIX."_post` WHERE (date BETWEEN '2013-01-27 00:00:00' AND '2016-04-20 23:59:59')";


2) если нужно новую дату установить в том же диапазоне, тогда нужно посчитать разницу между датами 2013-01-27 и 2016-04-20 = 1179 дней
теперь поменять запрос, так чтобы новые даты разбрасывались от 2013-01-27 + случайно от 0 до +1179 дней

вместо этого:

Код: Выделить всё

$query="UPDATE `".PREFIX."_post` SET `date`= DATE_ADD(FROM_DAYS( FLOOR( TO_DAYS( NOW( )) + ( RAND( ) * 1560 ) - ( RAND( ) *730 ) ) ), INTERVAL (FLOOR(RAND()*86400)) SECOND) WHERE `id`=".intval($row['id']);

пишем:

Код: Выделить всё

$query="UPDATE `".PREFIX."_post` SET `date`= DATE_ADD(
'2013-01-27 00:00:00', INTERVAL( FLOOR(RAND()*1179)) DAY
) WHERE `id`=".intval($row['id']);

примерно так.

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

IVAN
Сообщения: 9
Зарегистрирован: 18 апр 2017, 09:06

Re: Пакетное изменение даты для постов DLE

Сообщение IVAN » 18 апр 2017, 09:10

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

WHERE `autor`="admin" и WHERE `category` IN (123, 124, 125) как будет выглядеть строка?

Аватара пользователя
vitto
Администратор
Сообщения: 25
Зарегистрирован: 08 май 2016, 17:54

Re: Пакетное изменение даты для постов DLE

Сообщение vitto » 19 апр 2017, 20:58

IVAN писал(а):Добрый день, подскажите пожалуйста запрос, если требуется выборка по двум условиям: Имя пользователя и категория.

WHERE `autor`="admin" и WHERE `category` IN (123, 124, 125) как будет выглядеть строка?


привет, для соединения условий, используются операторы OR или AND, вот так

Код: Выделить всё

WHERE `autor`="admin" AND `category` IN (123, 124, 125)

IVAN
Сообщения: 9
Зарегистрирован: 18 апр 2017, 09:06

Re: Пакетное изменение даты для постов DLE

Сообщение IVAN » 20 апр 2017, 17:12

vitto писал(а):
IVAN писал(а):


Спасибо! :!:

IVAN
Сообщения: 9
Зарегистрирован: 18 апр 2017, 09:06

Re: Пакетное изменение даты для постов DLE

Сообщение IVAN » 28 июл 2017, 06:09

Привет, снова столкнулся с проблемой, не срабатывает скрипт на одном хостинге, подскажите пожалуйста SQL-запрос с двумя условиями?

Что бы без скрипта сразу сделать запрос к базе. Заранее спасибо!

Строка подключения к базе выглядит define ("DBHOST", "127.0.0.1:3311"); возможно в этом проблема.

Странная ситуация, через ssh скрипт сработал, в браузере даже с лимитом в 1 новость выдает ошибку 500 в консоли.

Аватара пользователя
vitto
Администратор
Сообщения: 25
Зарегистрирован: 08 май 2016, 17:54

Re: Пакетное изменение даты для постов DLE

Сообщение vitto » 28 июл 2017, 08:28

Привет, надо посмотреть в логи веб-сервера, там будет более подробное описание проблемы.

1) Строка:

Код: Выделить всё

define("DBHOST", "127.0.0.1:3311")

формально написана правильно, если она соответствует данным твоего хостинга. Это лучше спросить в поддержке, ну или можешь попробовать поменять на

Код: Выделить всё

define("DBHOST", "localhost")


2) Я думаю, что проблема может быть в другом, а именно в том, что функции mysql_ просто устарели для версии php которая используется у тебя на хостинге. Попробуй в скрипте, везде поменять mysql_ на mysqli_ (во втором варианте, добавилась буква "i")

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

Аватара пользователя
vitto
Администратор
Сообщения: 25
Зарегистрирован: 08 май 2016, 17:54

Re: Пакетное изменение даты для постов DLE

Сообщение vitto » 28 июл 2017, 08:32

Примеры SQL запросов с двумя условиями:

Код: Выделить всё

SELECT * FROM table WHERE a>1 AND a<5

Код: Выделить всё

SELECT * FROM table WHERE (a>1 OR b<5) AND date>"2017-05-01"

Код: Выделить всё

UPDATE table SET b=4 WHERE a>1 AND a<5


если, ты о каком-то конкретном запросе, то напиши подробнее, какой имеешь ввиду или что хочешь сделать

IVAN
Сообщения: 9
Зарегистрирован: 18 апр 2017, 09:06

Re: Пакетное изменение даты для постов DLE

Сообщение IVAN » 31 авг 2017, 16:39

Благодарю за подсказки вопрос решился.


Вернуться в «Помощь пользователям»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость