На страницу Пред. 1, 2 |
|
Вт Янв 20, 2009 12:02 pm |
Start Post: Нужна помощь,человека знаеющего пхп)  |
![]() Napas Небо не шатко ман! |
Зарегистрирован: 15.07.2008
Сообщений: 859
|
Обратиться по нику
|
Napas |
Ответить с цитатой | | |
|
Код: |
<?php
set_time_limit(0);
include"wp-config.php";
$year="2008";
$month="2";
$day="12";
$result=mysql_query("Select * from `wp_posts` ORDER BY `ID` ASC");
$z=mysql_numrows($result);
for ($i=0; $i<$z; $i++) {
$n_day=rand(1,5);
$id = mysql_result($result, $i, 'ID');
$post_date = mysql_result($result, $i, 'post_date');
$pos=strpos($post_date," ");
$date=substr($post_date,$pos+1);
if($month==12 && $day>28) { $year=$year+1; $month="1"; $day="1"; }
else {
if($day>28) { $month=$month+1; $day="1"; }
}
if(strlen($day)==1){ $day="0".$day; }
if(strlen($month)==1){ $month="0".$month; }
$dd=$year."-".$month."-".$day." ".$date;
$sql = "UPDATE `wp_posts` SET `post_date`='$dd', `post_date_gmt`='$dd', `post_modified`='$dd', `post_modified_gmt`='$dd' WHERE `ID`='$id'";
$results = mysql_query($sql);
$day=$day+$n_day;
}
?>
|
Вот значит есть скриптик,он меняет даты постов... в начале ставится дата откуда начинается отсчет,собственно как ограничить разброс, а то я ставлю начальную 2008 и у меня в архиве появляется июль 2010,как ограничить нужным мне числом например 19 января 2009(ну что бы разброс был постов в пределе от и до) Помогите! |
|
|
|
|
|
|
![]() Napas Небо не шатко ман! |
Зарегистрирован: 15.07.2008
Сообщений: 859
|
Обратиться по нику
|
Napas |
Ответить с цитатой | | |
|
brantozawr, Хм...только начинает почему то не с 1 января 2008 а с мая 2008 |
|
|
|
|
|
|
![]() brantozawr Опытный |
Зарегистрирован: 10.11.2008
Сообщений: 126
|
Обратиться по нику
|
brantozawr |
Ответить с цитатой | | |
|
Napas писал(а): |
brantozawr, Хм...только начинает почему то не с 1 января 2008 а с мая 2008
|
хм... не может быть...
$d = $d1 + ($id-$id1)*$dx;
для первой записи $id = $id1, поэтому первая дата будет равна $d1
В $d1 у тебя точно стоит mktime(0, 0, 0, 1, 1, 2008) ? |
|
|
|
|
|
|
![]() brantozawr Опытный |
Зарегистрирован: 10.11.2008
Сообщений: 126
|
Обратиться по нику
|
brantozawr |
Ответить с цитатой | | |
|
Я вот что подумал... в таблице кроме опубликованных постов могут быть еще страницы и временно сохраненные посты. Вобщем, это может и помешать.... Исправил скрипт, теперь он смотрит только на опубликованные посты, попробуй его:
Код: |
<?
set_time_limit(0);
$server="";
$login = "";
$passwd = "";
$dbname = "";
$wp_posts = "main_wp_posts";
// 0, 0, 0, месяц, день, год
$d1 = mktime(0, 0, 0, 1, 1, 2008);
$d2 = mktime(0, 0, 0, 1, 20, 2009);
$link = mysql_connect($server, $login, $passwd);
mysql_select_db($dbname, $link);
$query = "SELECT MIN(ID) as tmp FROM $wp_posts WHERE post_status='publish' AND post_type='post'";
$res = mysql_query($query, $link);
$a = mysql_fetch_array($res);
$id1 = $a["tmp"];
$query = "SELECT MAX(ID) as tmp FROM $wp_posts WHERE post_status='publish' AND post_type='post'";
$res = mysql_query($query, $link);
$a = mysql_fetch_array($res);
$id2 = $a["tmp"];
$query = "SELECT * FROM $wp_posts WHERE post_status='publish' AND post_type='post'";
$res = mysql_query($query, $link);
$dx = floor(($d2-$d1)/($id2-$id1));
while ($a = mysql_fetch_array($res)) {
$id = $a["ID"];
$d = $d1 + ($id-$id1)*$dx;
$d = date("Y-m-d H:i:s", $d);
$query = "UPDATE $wp_posts SET post_date='".$d."', post_date_gmt='".$d."', post_modified='".$d."', post_modified_gmt='".$d."' WHERE ID='".$id."'";
$res1 = mysql_query($query, $link);
}
mysql_close($link);
?>
|
|
|
|
|
|
|
|
![]() Gyrus Свой |
Зарегистрирован: 16.10.2008
Сообщений: 5
|
Обратиться по нику
|
Gyrus |
Ответить с цитатой | | |
|
Napas писал(а): |
Gyrus, Без изменений(
|
Ну так внеси изменения... добавь точки с запятой. эта ошибка - именно отсутствие точек с запятой.
вот короче конечный вариант, если еще нужен:
Код: |
<?php
set_time_limit(0);
include"wp-config.php";
$year="2008";
$month="2";
$day="12";
$pct=10;
$lyear="2009";
$lmonth="1";
$lday="21";
$result=mysql_query("Select * from `wp_posts`WHERE post_status='publish' AND post_type='post' ORDER BY `ID` ASC");
$z=mysql_num_rows($result);
$ldate=strtotime($lyear.'-'.$lmonth.'-'.$lday);
$sdate=strtotime($year.'-'.$month.'-'.$day);
$sec=floor(($ldate-$sdate)/$z);
$st=floor(($sec/100)*$pct);
for ($i=0; $i<$z; $i++) {
$sdate+=rand($st,$sec);
$post=mysql_fetch_object($result);
$ndate=date('Y-m-d H:i:s',$sdate);
$sql = "UPDATE `wp_posts` SET `post_date`='$ndate', `post_date_gmt`='$ndate', `post_modified`='$ndate', `post_modified_gmt`='$ndate' WHERE `ID`='".$post->id."'";
$results = mysql_query($sql);
}
?>
|
добавил кусочек от брантозавра, чтоб работало только на опубликованных постах..  |
|
|
|
|
|
|
![]() Napas Небо не шатко ман! |
Зарегистрирован: 15.07.2008
Сообщений: 859
|
Обратиться по нику
|
|
|
|
|
|
Партнеры
|