Forum Webscript.Ru

Программирование => PHP => Тема начата: andy5555 от 29 Июня 2006, 18:51:24

Название: Вывод даты из БД
Отправлено: andy5555 от 29 Июня 2006, 18:51:24
добрый день!
у меня из БД дата выводиться как например:
1995-12-29
и имеет имя dateroz
тоесть
echo $dateroz;

Вопрос как вывести эту дату на экран в другом порядке?
например так:

29.12.1995
Название: Вывод даты из БД
Отправлено: html_coder от 29 Июня 2006, 19:03:14
Если СУБД MySQL то использовать в запросе

DATE_FORMAT (http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html)
Название: Вывод даты из БД
Отправлено: andy5555 от 30 Июня 2006, 11:05:04
Да ДБ MySQL

если запрос осуществляется следующим образом:

$r_contact = mysql_query("SELECT * FROM " . TABLE_CONTACT . " AS contact WHERE contact.id=$id", $db_link)
or die(reportSQLError());
 

потом так:
$tbl_contact = mysql_fetch_array($r_contact);  

ну и переводит в переменную, которая потом выводится на экран:
  $contact_abdatum = stripslashes( $tbl_contact[\'abdatum\'] );

как мне здесь использовать функцию?
вообщето програмист из меня не какой, был готовый скриптик вот я его подпровляю на свой вкус. Поэтому любой понятной для такого програмиста как я помощи был-бы очень рад!
Название: Вывод даты из БД
Отправлено: vasa_c от 30 Июня 2006, 12:31:59
>как мне здесь использовать функцию?
Ссылку же на мануал дали. Там примеров полно.

>$contact_abdatum = stripslashes( $tbl_contact[\'abdatum\'] );
Зачем???
Название: Вывод даты из БД
Отправлено: Altaxar от 01 Июля 2006, 00:19:26
Вот эта строка тоже может помоч,
$date=preg_replace("/(\\d{4})-(\\d{2})-(\\d{2})/","\\\\3.\\\\2.\\\\1",$date);
если захочиш обратно то:
$date=preg_replace("/(\\d{4})\\.(\\d{2})\\.(\\d{2})/","\\\\3-\\\\2-\\\\1",$date);
Название: Вывод даты из БД
Отправлено: andy5555 от 01 Июля 2006, 12:17:06
Цитировать
Kneaz:
$date=preg_replace("/(\\d{4})-(\\d{2})-(\\d{2})/","\\\\3.\\\\2.\\\\1",$date);

 вот так я её преоброзовал:
:
$contact_abdatum=preg_replace("/(\\d{4})-(\\d{2})-(\\d{2})/","\\\\3.\\\\2.\\\\1",$contact_abdatum);

и действительно заработало.
Теперь выдаёт нормально. Теперь у меня следующий вопрос:

">

Если я здесь задаю другую дату , тоесть меняю её на другую и в формате Д.М.ГОД
эти данные переправляются в файл "SAVE.PHP" и там мне по идее надо тоже переделать что-бы он передовал в Б.Д. как ГОД-М-Д, тоесть для БД понятные числа.
А всё потому-что у меня в форме есть календарик на яваскрипт и он заносит дату только в формате как Д.М.ГОД
Название: Вывод даты из БД
Отправлено: Altaxar от 01 Июля 2006, 15:45:32
$date=preg_replace("/(\\d{4})\\.(\\d{2})\\.(\\d{2})/","\\\\3-\\\\2-\\\\1",$date);
это думаеш зачем я тебе написал :)
только вот ошибку сделал надо:
$date=preg_replace("/(\\d{2})\\.(\\d{2})\\.(\\d{4})/","\\\\3-\\\\2-\\\\1",$date);
 оно какраз обрантный перевод и делает :) тоесть из Д.М.ГОД в ГОД-М-Д

P.S. а вообще разберись с регулярными выражениями, очень полезная вещ.
Название: Вывод даты из БД
Отправлено: andy5555 от 03 Июля 2006, 17:49:16
да спасибо, получилось
еще один вопрос.
если мой календарик заносит месец как 7 например, вместо 07 то БД не понемает, потому что нуля нету впереди, тоесть тут либо в яваскрипте кавырятся или можно сделать с помощью php?

тоесть если данные месеца передаются как "7" что-бы он добовлял 0 к семёрочки. Вообшем к однозначному числу 0 впереди.
ну и с числом такая-же проблема
Название: Вывод даты из БД
Отправлено: Altaxar от 03 Июля 2006, 18:28:39
andy5555
Вот 2 примерчика

function to_bd($matches){
if(strlen($matches[1])==1) $matches[1]=\'0\'.$matches[1];
if(strlen($matches[2])==1) $matches[2]=\'0\'.$matches[2];
return $matches[3].\'-\'.$matches[2].\'-\'.$matches[1];
}
$date=preg_replace_callback("/(\\\\d{1,2})\\\\.(\\\\d{1,2})\\\\.(\\\\d{4})/",create_function(\'$matches\',\'return to_bd($matches);\'),$date);
Название: Вывод даты из БД
Отправлено: Altaxar от 03 Июля 2006, 18:42:26
Вот еще, из БД чтобы убрать 0 перед цифрами,

function out_bd($matches){
if($matches[2]{0}==\'0\') $matches[2]=$matches[2]{1};
if($matches[3]{0}==\'0\') $matches[3]=$matches[3]{1};
return $matches[3].\'.\'.$matches[2].\'.\'.$matches[1];
}
$date=preg_replace_callback("/(\\\\d{4})-(\\\\d{2})-(\\\\d{2})/",create_function(\'$matches\',\'return out_bd($matches);\'),$date);
Название: Вывод даты из БД
Отправлено: hanslinger от 03 Июля 2006, 20:32:47
andy5555
[p]str_pad[/p]

Kneaz
Охренеть.
Название: Вывод даты из БД
Отправлено: Altaxar от 03 Июля 2006, 21:59:05
hanslinger
Офигеть, если ты не понял что ему нужно было :)
и твой str_pad ему вообще до лампочки, если ты не заметил.
как я вижу ты вообще не понял, что я написал, значит такой у тебя интелект.
Название: Вывод даты из БД
Отправлено: andy5555 от 04 Июля 2006, 11:15:17
Спасибо большое всем!
Особенно тебе Kneaz !

Вчера просто открыл календарик, покапался в яваскрипте и переделал его теперь всё нормально!
Название: Вывод даты из БД
Отправлено: hanslinger от 04 Июля 2006, 11:22:24
Kneaz
В PHP я бы сделал так:

function in_bd($matches)
{
return str_pad($matches[3],2,\'0\',STR_PAD_LEFT).str_pad($matches[2],2,\'0\',STR_PAD_LEFT).$matches[1];
}
Но вместо того, чтобы заниматься подобным онанизмом, можно пойти по ссылке, которую дали сразу же.
И прежде чем писать о моем «интелекте», узнай, как это слово пишется.
Название: Вывод даты из БД
Отправлено: Altaxar от 04 Июля 2006, 12:33:35
hanslinger
Красиво, только вот ошибку исправь ;) сам найдеш или подсказать? ;)
может еще напишеш как 2 примерчик оптемизировать?
Название: Вывод даты из БД
Отправлено: html_coder от 04 Июля 2006, 12:45:20
Цитировать
hanslinger:
Но вместо того, чтобы заниматься подобным онанизмом, можно пойти по ссылке, которую дали сразу же.



Гы-гы )))) Да уж, я вот думаю почему andy5555 так сразу и не сделал ))))
Название: Вывод даты из БД
Отправлено: hanslinger от 04 Июля 2006, 12:45:30
Нравится тебе заниматься херней — ищи ошибку сам.
Второй пример оптимизируется так:
$date=preg_replace(array(\'/(\\\\D)0(\\\\d)/\',\'/(\\\\d{4})\\\\D(\\\\d{1,2})\\\\D(\\\\d{1,2})/\'),array(\'$1$2\',\'$3-$2-$1\'),$date);
Название: Вывод даты из БД
Отправлено: Altaxar от 04 Июля 2006, 13:44:12
Во наконец-то видно полный результат твоих мыслей,
да я намного уровнем ниже чем ты, я учусь.
Да я еще пойму для чего ты мне str_pad() дал.
а andy5555 и ему подобные нет, так вот не умничай и пиши пожалусто для них полный ответ, или вообще не отвечай как делают другие высоко знающие PHP програмисты
Название: Вывод даты из БД
Отправлено: hanslinger от 04 Июля 2006, 13:47:09
Здесь есть форум для готовых решений.
Чтобы учиться, нужно самому разбираться в вопросе. Если дать готовый ответ, человек не будет разбираться, а скопирует и забудет.
Ход мыслей понятен?
Название: Вывод даты из БД
Отправлено: Altaxar от 04 Июля 2006, 13:54:29
Да понятен, я его также подерживаюсь, но есть причина по которой есть смысл дать полный ответ сразу, например тему регулярные выражения, за скоко времени он сможет осилить до уровня, чтобы это решить как решил ты?
Название: Вывод даты из БД
Отправлено: andy5555 от 04 Июля 2006, 14:26:03
ссылка которая была сразу:
если-бы я делал по этому методу мне пришлось бы переделовать очень многое, а времени нет и знаний в этом языке тоже. С удовольствием бы сам поразбиралься с Date-Format

такие люди как Kneaz оооочень хорошие люди. Так дальше держать! Точно уловил мыслю!

;)