• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Редактирование Datetime

  • Автор темы Alexygen
  • Дата начала
A

Alexygen

Подскажите, пожалуйста, как можно записать в базу в поле типа datetime, например: $d="$dd3-$dd2-$dd1 $dd3:$dd4:00";
Зарание ОГРОМНОЕ СПАСИБО!!!
 
H

Holger Dee Assuran

Код:
$id; # Указатель строки в базе
$date=date('Y-m-d H:i:s') # Получаем текущую дату
$query="update `tablename` set `datetime`=$date where id=$id";
$result=mysql_query($query);
if (mysql_affected_rows() < 1)
{
echo "Не удалось обновить запись";
return false;
}
else
{
echo "Запись обновлена";
return true;
}
Соответственно:
  • Дата сгенерированая функцией date() имеет вид - 'YYYY-MM-DD HH:mm:ss'
  • tablename - имя таблицы в базе данных
  • datetime - имя поля DATETIME в таблице tablename
  • id - указатель строки в таблице. Может быть дополнен/заменен дополнительными соответствиями через конструкцию and
  • Функция mysql_affected_rows() возвращает количество измененных строк
 
A

Alexygen

да но как мне внести в таблицу произвольную дату, т.е. свою?
Поле date имеет тип datetime поэтому необходимости узнавать время нет, т.к. оно автоматически его ставит!
 
A

Artexoid

Для: Alexygen

Смени тип поля date (datetime -> varchar) и записывай туда хоть римскими.
 
A

Alexygen

а как тогда сделать нормальную сортировку по дате, если поле datetime -> varchar будет иметь вид $dd3-$dd2-$dd1 $dd3:$dd4:00?
 
A

Artexoid

Для: Alexygen

Ну сделай 2 поля. одно DateTime, 2-е Char. В одно записывай дату в виде DateTime и делай по нему сортировку, в другое записывай в виде Char хоть Римскими как я сказал :) и выводи его.

Вообще решение какое-то "лобовое" получилось :), но работать будет...

Если чесно я даже не понял что это "$dd3-$dd2-$dd1 $dd3:$dd4:00" вообще такое :)...
 
H

Holger Dee Assuran

Если чесно я даже не понял что это "$dd3-$dd2-$dd1 $dd3:$dd4:00" вообще такое blink.gif...
Я так понял что это формат метки даты и времени.
да но как мне внести в таблицу произвольную дату, т.е. свою?
База MySQL хранит метки даты и времени именно в таком формате как ты описал, то есть "год-месяц-день час:мин:сек". Что бы записать туда свою дату нужно просто передать ее в это поле в описаном формате.
То-есть запрос будет выглядеть так:
Код:
$datetime="2007-04-16 11:08:00";
$query="insert into `tablename` values (`datetime`='$datetime')";
а как тогда сделать нормальную сортировку по дате
Что ты имеешь в виду под "нормальной" сортировкой по дате?
Обычно что бы отсортировать данные по какому либо столбцу нужно указать это в запросе:
Код:
$query="select * from `tablename` where `datetime` < '2007-04-16 11:08:00' and `datetime` > '2006-04-16 11:08:00' order by `datetime` asc";
Этот запрос выберет все записи из таблицы за последний год и отсортирует их в порядке возрастания, то-есть от старых к новым. Если нужно отсортировать их в обратном порядке - вместо asc нужно написать desc

ЗЫ:А вобще вся эта инфа есть в книжках и в сети.
 
G

GOsha

Я вообще пишу дату в таком виде: 20071213
ГГГГММДД
А сортировку делаю как простое число. Потом разбираю и вывожу в нормальном виде...
И наоборот...
 
H

Holger Dee Assuran

Дату тоже можно сортировать по возрастанию и убыванию. Но, конечно, можно как и GOsha - дело вкуса. Собственно я, зачастую, принимаю дату от пользователя в виде трех чисел, собираю их как и GOsha, только в том виде что я описал раньше, и пишу в базу. Если нужно, напимер в какой нибудь форме, вывести селектор даты - разбираю и вывожу три SELECTа.
 
K

kazim09

Для: Alexygen

записывай в формате datetime а результаты выводи как хочешь:
Код:
<?php
$date = date('Y-m-d H:i:s'); # в БД пишем в таком виде
$time = strtotime($date);	# переводим дату в метку времени
print date('d. M. Y', $time);# выводим в удомном для нас виде
?>
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!