Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: php скрипт создания 2 полей даты зависящих от ID в ячейке таблицы
 
 автор: pautina   (08.02.2012 в 06:35)   письмо автору
 
 

Здравствуйте Уважаемое сообщество.
Мне нужно написать php обработчик который бы создавал 2 поля даты в таблице.
Пусть мы имеем таблицу table_1

CREATE TABLE IF NOT EXISTS table_1 ( 
    `ID` VARCHAR(255), 
    `Field 1` VARCHAR(255), 
    `Field 2` VARCHAR(255), 
    `Field 3` longtext) TYPE=MyISAM DEFAULT CHARSET=utf8; 

INSERT IGNORE INTO table_1 (`ID`,`Field 1`,`Field 2`,`Field 3`) VALUES   
('1','Уроки Photoshop 1','Рубрика: Эффекты 1','Содержимое контента 1'), 
('2','Уроки Photoshop 2','Рубрика: Эффекты 2','Содержимое контента 2'), 
('3','Уроки Photoshop 3','Рубрика: Эффекты 3','Содержимое контента 3'), 
('4','Уроки Photoshop 4','Рубрика: Эффекты 4','Содержимое контента 4'), 
('5','Уроки Photoshop 5','Рубрика: Эффекты 5','Содержимое контента 5')

- нужно слздать 2 новых столбца date_1 и date_2
- содержимое поля даты должно зависить от ID
- мы определяем максимальное значение ID у нас оно =5 (таблица м-т быть и из 300 строк)
- определяем текущую дату (сегодняшний день 8 февраля 2012) любая дата должна быть в формате 2011-12-29 08:40:20 (год, месяц, день, часы, минуты, секунды) часы минуты и секунды берутся любые
- и в зависимости от значения ID начинаем заполнять значение поля date_1 и date_2 в таблице, причём date_1=date_2,
- для ID = 1 от текущей даты - (вычитаем max значение ID для дня
(2012-02-08 05:45:11)-(maxID)day = 2012-02-03 05:45:11 )
- для ID = 2 от текущей даты - (вычитаем max значение -1 (maxID-1) для дня
(2012-02-08 07:40:11)-(maxID-1)day = 2012-02-04 07:40:11 )
- и т. д. пока не заполним все поля с датой.
Ни скажете какой участок кода можно для этого использовать?

  Ответить  
 
 автор: Valick   (08.02.2012 в 08:07)   письмо автору
 
   для: pautina   (08.02.2012 в 06:35)
 

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

  Ответить  
 
 автор: pautina   (08.02.2012 в 08:13)   письмо автору
 
   для: Valick   (08.02.2012 в 08:07)
 

Да читаю, ваши книги php на примерах.
Возникла такая задача, а я с датами ещё не работал.
Могу кое какие участки кода дать, чтобы по частям делать.

<?php       
  header
("Content-Type: text/html; charset=UTF-8");      
  
$conn mysql_connect ("localhost""root""")     
            or die (
"Соединение не установлено!");     
  
mysql_select_db("bd_photoshop-portal"$conn);     
      
  
$query "SELECT * FROM table_1";       
  
$cat mysql_query($query);       
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);       
  if(
mysql_num_rows($cat))       
  {       
    while(
$catagory mysql_fetch_assoc($cat))     
    {  
           
     
Участок кода 
         
    
}       
  }       
?>

Этот код можно для начала использовать.

  Ответить  
 
 автор: Valick   (08.02.2012 в 09:33)   письмо автору
 
   для: pautina   (08.02.2012 в 08:13)
 

это не мои книги, у меня вообще нет своих книг, я так же как и вы читаю книги авторов этого форума
1) нельзя учить MySQL по книге про РНР (при изучении MySQL, про РНР нужно вообще забыть иначе вы начинаете проецировать знания РНР на MySQL, а это и порождает ошибки и путанницу, да и мешает нормальному (правильному) изучению MySQL)
2) нельзя учить РНР по книге "РНР на примерах", учить нужно по "Самоучителю РНР"

  Ответить  
 
 автор: pautina   (08.02.2012 в 09:57)   письмо автору
 
   для: Valick   (08.02.2012 в 09:33)
 

Согласен давайте писать скрипт по частям.
- как задать переменую даты
- как определить максимальное значение ID
- как описать переменной текущую дату
потом создадим алгоритм по определению значения даты от ID

  Ответить  
 
 автор: Lotanaen   (08.02.2012 в 10:09)   письмо автору
 
   для: pautina   (08.02.2012 в 09:57)
 

Сорри, а Вы книгу уже прочитали всю - от начала и до конца? Прочитайте, плиз, для начала самоучитель. Хотя бы про типы данных, операторы, переменные и массивы.

  Ответить  
 
 автор: Valick   (08.02.2012 в 12:44)   письмо автору
 
   для: pautina   (08.02.2012 в 09:57)
 

я не зря вам толкую про книгу
вы вынуждаете меня сказать, что ваш лексикон программиста, а точнее сказать "децкий лепет" идет в разрез со здравым смыслом и с программированием в целом.
я не против того что все когда-то начинают и делают первые шаги, я против когда стараются галопом перепрыгнуть всю "скукоту" называемую теорией и бросаются кодить в темную голову, ставя перед собой реально неправильные задачи.
поймите, у меня нет лично к вам какого-либо негатива, просто вы просите помощи и не понимаете почему у вас ничего не получается, вот я и пытаюсь вам сказать, что проблема намного глубже, чем "как описать переменной текущую дату"
__
Согласен давайте писать скрипт по частям.
вы не поняли, начать вам нужно с книжного магазина...

  Ответить  
 
 автор: pautina   (08.02.2012 в 13:03)   письмо автору
 
   для: Valick   (08.02.2012 в 12:44)
 

Правильно вы все говорите.
Мне бы побольше таких примеров как мы сейчас с вами разбираем. (я всё записываю, у меня так сказать свой сборник рецептов, в которые я потом могу обратиться)
Как начать решать эту задачу я не знаю, но если бы было много различных практических примеров было бы легче

  Ответить  
 
 автор: Valick   (08.02.2012 в 13:40)   письмо автору
 
   для: pautina   (08.02.2012 в 13:03)
 

задачу нужно сначала поставить, поймите правильно поставленная задача этот уже 50% её решения.
описывайте проблему как можно подробнее
например:
- я пишу форум
- я пишу систему статистики
- я пишу скрипт авторизации
потом, описывайте конкретную проблему и то как она у вас возникла, чем вы руководствовались при постановке задачи и тд

  Ответить  
 
 автор: pautina   (11.02.2012 в 14:20)   письмо автору
 
   для: Valick   (08.02.2012 в 13:40)
 

У меня есть таблица table_1

CREATE TABLE IF NOT EXISTS table_1 (  
    `ID` VARCHAR(255),  
    `Field 1` VARCHAR(255),  
    `Field 2` VARCHAR(255),  
    `Field 3` longtext) TYPE=MyISAM DEFAULT CHARSET=utf8;  

INSERT IGNORE INTO table_1 (`ID`,`Field 1`,`Field 2`,`Field 3`) VALUES    
('1','Уроки Photoshop 1','Рубрика: Эффекты 1','Содержимое контента 1'),  
('2','Уроки Photoshop 2','Рубрика: Эффекты 2','Содержимое контента 2'),  
('3','Уроки Photoshop 3','Рубрика: Эффекты 3','Содержимое контента 3'),  
('4','Уроки Photoshop 4','Рубрика: Эффекты 4','Содержимое контента 4'),  
('5','Уроки Photoshop 5','Рубрика: Эффекты 5','Содержимое контента 5')

В этой таблице мне нужно создать 2 столбца date_1 и date_2 причём даты равны.

ALTER TABLE `table_1`
ADD `Field 4` VARCHAR( 255 ) NULL
AFTER `Field 3`

ALTER TABLE `table_1`
ADD `Field 5` VARCHAR( 255 ) NULL
AFTER `Field 4`

И заполнить поля date_1 и date_2 в зависимости от значения ID
- пусть в строке n строк, определяем максимальное значение ID, для этого значения соответствует текущая дата.

SELECT MAX(ID)
FROM table_1;

- затем заполняем другие поля даты, дата должная быть в формате 2012-02-08 05:45:11 и от ID должна зависить таким образом чтобы для max(id)-1 date_1 = текущая дата - 1 день (для max(id-2) date_1 = текущая дата -2 дня)
(здесь ? как реализовать, значение даты можно как то записывать числом после от этого числа можно отнимать 1 день, 1 день возможно можно записать как константу)
Как можно это реализовать?

  Ответить  
 
 автор: pautina   (14.02.2012 в 06:19)   письмо автору
 
   для: pautina   (11.02.2012 в 14:20)
 

Написал такой скрипт, заготовка так сказать

<?php        
  
// header("Content-Type: text/html; charset=UTF-8");       
  
$conn mysql_connect ("localhost""root""")      
            or die (
"Соединение не установлено!");      
  
mysql_select_db("bd_photoshop-portal"$conn);      
       
  
$query "SELECT * FROM category_effects";        
  
$cat mysql_query($query);        
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);        
  if(
mysql_num_rows($cat))        
  {        
    while(
$catagory mysql_fetch_assoc($cat))     
    {   
      
     
// вывод текущей даты   
     
$tek_day $date("d.m.Y G:i:s");
     
$one_day константа в 1 день;
     
$date_1 $tek_day $new_id*$one_day;
     
//
     
$max_id MAX(ID);
     
$new_id = ($max_id+1)-ID;
      
    
$query2 "UPDATE category_effects       
                    SET `Field 4` = '
{$newField_4}'       
                    WHERE ID = '"
.$catagory['ID']."';";      
                                              
          if(!
mysql_query($query2))        
          {        
            exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query2);        
          }      
          echo 
'Запрос выполнен успешно';       
   } 
  } 
?> 

Интересует этот участок кода

 // ??вывод текущей даты   
     $tek_day = $date("d.m.Y G:i:s");
     $one_day = константа в 1 день;
     $date_1 = $tek_day - $new_id*$one_day;
     //??
     // $max_id = MAX(ID);
     $query_max_id = mysql_query("SELECT MAX(ID) FROM `table_1` WHERE ID=".$catagory[ID]);   
     $new_id = ($query_max_id+1)-ID;
     //?? 
      
    $query2 = "UPDATE category_effects       
                    SET `Field 4` = '{$newField_4}'       
                    WHERE ID = '".$catagory['ID']."';";      

Как правильно его описать?

  Ответить  
 
 автор: cheops   (14.02.2012 в 12:57)   письмо автору
 
   для: pautina   (14.02.2012 в 06:19)
 

>Как правильно его описать?
А в смысле описать? Какой добавить комментарий? Или имеется в виду что-то другое?

  Ответить  
 
 автор: pautina   (14.02.2012 в 13:07)   письмо автору
 
   для: cheops   (14.02.2012 в 12:57)
 

Этот участок кода как заготовка, хотелось бы его проверить и сделать рабочий скрипт.
Участок кода который нужно доработать здесь

// ??вывод текущей даты   
     $tek_day = $date("d.m.Y G:i:s");
     $one_day = константа в 1 день;
     $date_1 = $tek_day - $new_id*$one_day;
     //??
     // $max_id = MAX(ID);
     $query_max_id = mysql_query("SELECT MAX(ID) FROM `table_1` WHERE ID=".$catagory[ID]);   
     $new_id = ($query_max_id+1)-ID;
     //?? 
      
     $query2 = "UPDATE category_effects       
                    SET `Field 4` = '{$newField_4}'       
                    WHERE ID = '".$catagory['ID']."';";      
                                              

  Ответить  
 
 автор: pautina   (15.02.2012 в 10:45)   письмо автору
 
   для: pautina   (14.02.2012 в 13:07)
 

Давайте по частям тогда делать.
Как можно писать константу в 1 день?
$one_day = константа в 1 день;

  Ответить  
 
 автор: Lotanaen   (15.02.2012 в 11:06)   письмо автору
 
   для: pautina   (11.02.2012 в 14:20)
 

А Вы все типы данных в MySQL изучили? Или только varchar и longtext? Почему поле ID не сделать типа INT? А для работы с датами в MySQL есть специальные типы данных (DATETIME, DATE и TIMESTAMP), ну либо используйте в формате unixtime...

  Ответить  
 
 автор: pautina   (15.02.2012 в 12:05)   письмо автору
 
   для: Lotanaen   (15.02.2012 в 11:06)
 

Пусть поле для ID будет INT, смотрел вашу книгу php на примерах по работе с датами.
До этого с ними никогда не работал, вот и возникают вопросы.
функция которая позволяет форматировать дату $date( ); наверно её достаточно.
как описать константу в 1 день
$one_day = константа в 1 день;

  Ответить  
 
 автор: Lotanaen   (15.02.2012 в 13:23)   письмо автору
 
   для: pautina   (15.02.2012 в 12:05)
 

Это не мои книги - я так же как и Вы являюсь простым пользователем этого форума, а также читателем книг авторов этого форума.
А что Вы называете "константой"? В вашем примере это переменная. Полагаю вам удобней будет работать с датами в формате unixtime, тогда это будет число 24*60*60 , т.е. количество секунд в сутках.

  Ответить  
 
 автор: pautina   (15.02.2012 в 13:59)   письмо автору
 
   для: Lotanaen   (15.02.2012 в 13:23)
 


// 
     $tek_day = $date("d.m.Y G:i:s"); // вывод текущей даты    
     $one_day = 24*60*60; // нужно ли описывать тип переменной $one_day, типа даты unixtime?
     $date_1 = $tek_day - $new_id*$one_day; 
     //?? 
     // $max_id = MAX(ID);  // определение максимального значения ID?
     $query_max_id = mysql_query("SELECT MAX(ID) FROM `table_1` WHERE ID=".$catagory[ID]);    
     $new_id = ($query_max_id+1)-ID;  // правилен ли синтаксис формулы?
     //??  
       
     $query2 = "UPDATE category_effects        
                    SET `Field 4` = '{$newField_4}'        
                    WHERE ID = '".$catagory['ID']."';";       
                                              

Ни проверите всё ли правильно в коде?

  Ответить  
 
 автор: Lotanaen   (15.02.2012 в 14:44)   письмо автору
 
   для: pautina   (15.02.2012 в 13:59)
 

Попробуйте так:


<?php

    $sql 
"select max(ID) from FROM `category_effects`;";
    
$result mysql_query($sql);
    
$rows mysql_query($result);
    if (
$rows[0]]) {
        
$maxid $rows[0];
        
$sql_up "update category_effects set `date_1`=".time()."-($maxid - `ID`)*86400,`date_2`=".time()."-($maxid - `ID`)*86400 ; ";
        
$res mysql_query($sql_up);
    }
    else 
        echo 
"error";
?>


только сначала к БД подключитесь и поля date_1 и date_2 типа INT в таблице создайте. А вообще-то не понятно что Вы там собираетесь делать - логику ваших рассуждений я не совсем понимаю.

  Ответить  
 
 автор: pautina   (15.02.2012 в 14:54)   письмо автору
 
   для: Lotanaen   (15.02.2012 в 14:44)
 

Дома проверю скрипт.
Поля мне нужны для создания записей в cms, чтобы эти записи были упорядочены.

  Ответить  
 
 автор: Lotanaen   (15.02.2012 в 15:03)   письмо автору
 
   для: pautina   (15.02.2012 в 14:54)
 

скрипт рабочий - я проверил. а зачем именно два поля даты вводить? возможно для упорядочивания вам и ORDER BY в запросе подойдет?

  Ответить  
 
 автор: pautina   (15.02.2012 в 17:42)   письмо автору
 
   для: Lotanaen   (15.02.2012 в 15:03)
 

Пусть 2 поля одинаковых дат остаётся, нужно чтобы все под нашу cms было.
Использовал такой скрипт

<?php         
  header
("Content-Type: text/html; charset=UTF-8");        
  
$conn mysql_connect ("localhost""root""")       
            or die (
"Соединение не установлено!");       
  
mysql_select_db("bd_photoshop-portal"$conn);       
        
  
$query "SELECT * FROM table_1";         
  
$cat mysql_query($query);         
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);         
  if(
mysql_num_rows($cat))         
  {         
    while(
$catagory mysql_fetch_assoc($cat))      
    {    
     
$sql "select max(ID) from FROM `table_1`;"
     
$result mysql_query($sql); 
     
$rows mysql_query($result); 
     if (
$rows[0]) { 
         
$maxid $rows[0]; 
         
$sql_up "update table_1 set `date_1`=".time()."-($maxid - `ID`)*86400,`date_2`=".time()."-($maxid - `ID`)*86400 ; "
         
$res mysql_query($sql_up); 
     } 
     else  
         echo 
"error";  
          
   }  
  }  
?> 

Выщло сообщение о ошибке
errorerrorerrorerrorerror
Как её можно исправить?

  Ответить  
 
 автор: Lotanaen   (15.02.2012 в 18:01)   письмо автору
 
   для: pautina   (15.02.2012 в 17:42)
 

вот так например:

<?php         
  header
("Content-Type: text/html; charset=UTF-8");        
  
$conn mysql_connect ("localhost""root""")       
            or die (
"Соединение не установлено!");       
  
mysql_select_db("bd_photoshop-portal"$conn);       
        
    
     
$sql "select max(`ID`) FROM `table_1`;"
     
$result mysql_query($sql); 
     
$rows mysql_query($result); 
     if (
$rows[0]) { 
         
$maxid $rows[0]; 
         
$sql_up "update table_1 set `date_1`=".time()."-($maxid - `ID`)*86400,`date_2`=".time()."-($maxid - `ID`)*86400 ; "
         
$res mysql_query($sql_up); 
     } 
     else  
         echo 
"error";  
          
   
?>  

  Ответить  
 
 автор: pautina   (15.02.2012 в 18:06)   письмо автору
 
   для: Lotanaen   (15.02.2012 в 18:01)
 

Ругается на 10 строку
   $rows = mysql_query($result);  

Warning: mysql_query() expects parameter 1 to be string, resource given in Z:\home\photoshop-portal\www\myscripts\greate_date.php on line 10
error

  Ответить  
 
 автор: Lotanaen   (15.02.2012 в 18:07)   письмо автору
 
   для: pautina   (15.02.2012 в 18:06)
 

ну так вы же согласились что ID будет типа INT, а он у вас varchar так и остался

  Ответить  
 
 автор: pautina   (15.02.2012 в 18:21)   письмо автору
 
   для: Lotanaen   (15.02.2012 в 18:07)
 

Все равно выходит ошибка на строку
$rows = mysql_query($result);  

Warning: mysql_query() expects parameter 1 to be string, resource given in Z:\home\photoshop-portal\www\myscripts\greate_date.php on line 9
error

для создания таблицы использовал запрос

CREATE TABLE IF NOT EXISTS table_1 (   
    `ID` INT,   
    `Field 1` VARCHAR(255),   
    `Field 2` VARCHAR(255),   
    `Field 3` longtext) TYPE=MyISAM DEFAULT CHARSET=utf8;   

INSERT IGNORE INTO table_1 (`ID`,`Field 1`,`Field 2`,`Field 3`) VALUES     
('1','Уроки Photoshop 1','Рубрика: Эффекты 1','Содержимое контента 1'),   
('2','Уроки Photoshop 2','Рубрика: Эффекты 2','Содержимое контента 2'),   
('3','Уроки Photoshop 3','Рубрика: Эффекты 3','Содержимое контента 3'),   
('4','Уроки Photoshop 4','Рубрика: Эффекты 4','Содержимое контента 4'),   
('5','Уроки Photoshop 5','Рубрика: Эффекты 5','Содержимое контента 5')

для добавления новых столбцов с датами

ALTER TABLE `table_1` 
 ADD `date_1` INT NOT NULL
 AFTER `Field 3`


ALTER TABLE `table_1` 
 ADD `date_2` INT NOT NULL
 AFTER `date_1`

Ваш код использовал

<?php          
  header
("Content-Type: text/html; charset=UTF-8");         
  
$conn mysql_connect ("localhost""root""")        
            or die (
"Соединение не установлено!");        
  
mysql_select_db("bd_photoshop-portal"$conn);          
     
     
$sql "select max(`ID`) FROM `table_1`;";  
     
$result mysql_query($sql);  
     
$rows mysql_query($result);  
     if (
$rows[0]) {  
         
$maxid $rows[0];  
         
$sql_up "update table_1 set `date_1`=".time()."-($maxid - `ID`)*86400,`date_2`=".time()."-($maxid - `ID`)*86400 ; ";  
         
$res mysql_query($sql_up);  
     }  
     else   
         echo 
"error";   
           
    
?>  


Как исправить можно? Может ещё в чем то может быть дело?

  Ответить  
 
 автор: pautina   (16.02.2012 в 06:33)   письмо автору
 
   для: pautina   (15.02.2012 в 18:21)
 

переменую $maxid нужно описывать?
выходит ошибка на строку
$rows = mysql_query($result);
Warning: mysql_query() expects parameter 1 to be string, resource given in M:\home\photoshop-portal\www\myscripts\greate_date.php on line 9
error

  Ответить  
 
 автор: Lotanaen   (16.02.2012 в 09:54)   письмо автору
 
   для: pautina   (16.02.2012 в 06:33)
 

да, сорри, конечно же там должно быть не $rows = mysql_query($result); , а $rows = mysql_fetch_array($result);

  Ответить  
 
 автор: pautina   (16.02.2012 в 16:29)   письмо автору
 
   для: Lotanaen   (16.02.2012 в 09:54)
 

Дата заполняется, правда во всех ячейках одинаковое число 1329395229
Даты ведь высчитываются по формуле

$sql_up = "update table_1 set `date_1`=".time()."-($maxid - `ID`)*86400,`date_2`=".time()."-($maxid - `ID`)*86400 ; "; 

и должны быть разные?
и как можно привести дату в виде числа к такому формату 2011-11-09 05:50:19

  Ответить  
 
 автор: Lotanaen   (16.02.2012 в 18:01)   письмо автору
 
   для: pautina   (16.02.2012 в 16:29)
 

При выводе можете использовать РНР функцию date(); например для текущей даты это будет date('Y-m-d H:i:s');
Также возможно при выборке из БД использовать в запросе функцию FROM_UNIXTIME() с указанием формата выдачи даты.
Также можно в таблице использовать тип не INT, а DATETIME

  Ответить  
 
 автор: pautina   (16.02.2012 в 18:24)   письмо автору
 
   для: Lotanaen   (16.02.2012 в 18:01)
 

Как сделать при помощи FROM_UNIXTIME() изменения в скрипте

<?php          
  header
("Content-Type: text/html; charset=UTF-8");         
  
$conn mysql_connect ("localhost""root""")        
            or die (
"Соединение не установлено!");        
  
mysql_select_db("bd_photoshop-portal"$conn);          
     
     
$sql "select max(`ID`) FROM `table_1`;";  
     
$result mysql_query($sql);     
     
$rows mysql_fetch_array($result);
       
     if (
$rows[0]) {  
         
$maxid $rows[0];  
         
$sql_up "update table_1 set `date_1`=".time()."-($maxid - `ID`)*86400,`date_2`=".time()."-($maxid - `ID`)*86400 ; ";  
         
$res mysql_query($sql_up);  
     }  
     else   
         echo 
"error";   
           
    
?>  

и наверно WHERE ID нужно прописать, чтобы значения в каждой ячейке были свои (а то сейчас они в каждой ячейке одинаковые)
наподобе
$query = "UPDATE material_content_into3
SET `Field 3` = '{$newField_3}'
WHERE ID = {$catagory['ID']}";

  Ответить  
 
 автор: Lotanaen   (17.02.2012 в 10:14)   письмо автору
 
   для: pautina   (16.02.2012 в 18:24)
 

Вот с таким дампом БД все работает как Вы и хотели

CREATE TABLE `table_1` (
  `ID` int(11) default NULL,
  `Field 1` varchar(255) default NULL,
  `Field 2` varchar(255) default NULL,
  `Field 3` longtext,
  `date_1` int(11) NOT NULL default '0',
  `date_2` int(11) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- 
-- Дамп данных таблицы `table_1`
-- 

INSERT INTO `table_1` VALUES (1, 'Уроки Photoshop 1', 'Рубрика: Эффекты 1', 'Содержимое контента 1', 1329116723, 1329116723);
INSERT INTO `table_1` VALUES (2, 'Уроки Photoshop 2', 'Рубрика: Эффекты 2', 'Содержимое контента 2', 1329203123, 1329203123);
INSERT INTO `table_1` VALUES (3, 'Уроки Photoshop 3', 'Рубрика: Эффекты 3', 'Содержимое контента 3', 1329289523, 1329289523);
INSERT INTO `table_1` VALUES (4, 'Уроки Photoshop 4', 'Рубрика: Эффекты 4', 'Содержимое контента 4', 1329375923, 1329375923);
INSERT INTO `table_1` VALUES (5, 'Уроки Photoshop 5', 'Рубрика: Эффекты 5', 'Содержимое контента 5', 1329462323, 1329462323);

дамп уже с результатом работы скрипта

  Ответить  
 
 автор: pautina   (17.02.2012 в 11:01)   письмо автору
 
   для: Lotanaen   (17.02.2012 в 10:14)
 

А как при помощи FROM_UNIXTIME() преобразовть формат даты с числа 1329461955 в 2011-11-09 05:50:19

  Ответить  
 
 автор: Lotanaen   (17.02.2012 в 11:21)   письмо автору
 
   для: pautina   (17.02.2012 в 11:01)
 

FROM_UNIXTIME(unix_timestamp)
почитайте мануал, например по этой ссылке http://www.mysql.ru/docs/man/Date_and_time_functions.html

  Ответить  
 
 автор: pautina   (17.02.2012 в 11:36)   письмо автору
 
   для: Lotanaen   (17.02.2012 в 11:21)
 

Использовал этот участок кода

if ($rows[0]) {   
         $maxid = $rows[0];   
         $sql_up = "update table_1 set `date_1`=".time()."-($maxid - `ID`)*86400,`date_2`=".time()."-($maxid - `ID`)*86400 ; ";   
         $sql_up_date = "SELECT FROM_UNIXTIME($sql_up) ; ";   
         $res = mysql_query($sql_up_date);   
         
     }   

Ни посмотрите?

  Ответить  
 
 автор: Lotanaen   (17.02.2012 в 12:15)   письмо автору
 
   для: pautina   (17.02.2012 в 11:36)
 

даже не знаю что и сказать - все в кучу смешано и без всякой логики. Начните изучение с простых примеров, а также базовые основы РНР и MySQL для начала изучите.
Объясните логически что вы в этом примере делаете?

  Ответить  
 
 автор: pautina   (17.02.2012 в 12:38)   письмо автору
 
   для: Lotanaen   (17.02.2012 в 12:15)
 

эта строка считает дату в виде числа
$sql_up = "update table_1 set `date_1`=".time()."-($maxid - `ID`)*86400,`date_2`=".time()."-($maxid - `ID`)*86400 ; ";

здесь делаем преобразование даты из числа к нужному типу 2011-11-09 05:50:19
$sql_up_date = "SELECT FROM_UNIXTIME($sql_up) ; ";   

здесь выводим дату в столбце
$res = mysql_query($sql_up_date);   

Видимо в синтаксисе ошибка, тип даты не меняется, как код изменить можно?

  Ответить  
 
 автор: pautina   (17.02.2012 в 17:19)   письмо автору
 
   для: pautina   (17.02.2012 в 12:38)
 

Ни посоветуете что либо?

  Ответить  
 
 автор: pautina   (17.02.2012 в 20:40)   письмо автору
 
   для: pautina   (17.02.2012 в 17:19)
 

пробовал так

 $sql_up = "update table_1 set `date_1`= FROM_UNIXTIME(UNIX_TIMESTAMP( ".time()." - ($maxid - `ID`)*86400), '%Y %D %M %h:%i:%s %x'),`date_2`= FROM_UNIXTIME(UNIX_TIMESTAMP( ".time()." - ($maxid - `ID`)*86400), '%Y %D %M %h:%i:%s %x') ; "; 

выходит 1970 в каждой ячейке
еще так

$sql_up = "update table_1 set `date_1` = FROM_UNIXTIME( ".time()." - ($maxid - `ID`)*86400), `date_2` = FROM_UNIXTIME( ".time()." - ($maxid - `ID`)*86400) ; ";  

выходит 2012 в каждой ячейке
Саму таблицу вначале создаю запросом

CREATE TABLE `table_1` ( 
  `ID` int(11) default NULL, 
  `Field 1` varchar(255) default NULL, 
  `Field 2` varchar(255) default NULL, 
  `Field 3` longtext, 
  `date_1` int(11) NOT NULL default '0', 
  `date_2` int(11) NOT NULL default '0' 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT IGNORE INTO table_1 (`ID`,`Field 1`,`Field 2`,`Field 3`,`date_1`,`date_2`) VALUES      
('1','Уроки Photoshop 1','Рубрика: Эффекты 1','Содержимое контента 1','0','0'),    
('2','Уроки Photoshop 2','Рубрика: Эффекты 2','Содержимое контента 2','0','0'),    
('3','Уроки Photoshop 3','Рубрика: Эффекты 3','Содержимое контента 3','0','0'),    
('4','Уроки Photoshop 4','Рубрика: Эффекты 4','Содержимое контента 4','0','0'),    
('5','Уроки Photoshop 5','Рубрика: Эффекты 5','Содержимое контента 5','0','0')

не проверите синтаксис запросов?
может что с типом данных для даты в создаваемой таблице?

  Ответить  
 
 автор: pautina   (17.02.2012 в 21:36)   письмо автору
 
   для: pautina   (17.02.2012 в 20:40)
 

Спасибо Вам за поддержку, нашёл ответ скрипт работает.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования