Через jquery.callendar я сделал ввод даты удобнее. тоесть в форму input вводится такое dd/mm/yyyy такое же отправляется в запрос поиска. Все знают что база данных SQL хранит дату в таком формате yyyy-mm-dd как мне переставить дату и год метами и поставить другой разделитель?
Спустя 42 минуты, 20 секунд (30.06.2011 - 10:40) Invis1ble написал(а):
Oliver Varnce
Есть два варианта:
1. Сформировать дату в нужном формате на уровне php, примерно так:
далее подставляешь в запрос:
или
2. Форматирование средствами SQL:
Я бы выбрал второй вариант.
PS. Хотел предложить 3-й вариант, но оказалось, он не работает:
видимо баг php - не может обработать строку со слешами, вылетает исключение. То же самое в процедурном стиле:
короче баг при парсинге и конструировании объекта.
Есть два варианта:
1. Сформировать дату в нужном формате на уровне php, примерно так:
list($day, $month, $year) = explode('/', $date);
далее подставляешь в запрос:
... WHERE `date` = '" . $year . '-' . $month . '-' . $day . "'
или
... WHERE `date` = '" . sprintf('%s-%s-%s', $year, $month, $day) . "'
2. Форматирование средствами SQL:
... WHERE `date` = STR_TO_DATE('" . $date . "', '%Y/%m/%d')
Я бы выбрал второй вариант.
PS. Хотел предложить 3-й вариант, но оказалось, он не работает:
$date = date('d/m/Y');
$dateObj = new DateTime($date);
echo $dateObj->format('Y-m-d');
видимо баг php - не может обработать строку со слешами, вылетает исключение. То же самое в процедурном стиле:
$date = date('d/m/Y');
$dateObj = date_create($date);
echo date_format($dateObj, 'Y-m-d');
короче баг при парсинге и конструировании объекта.
Спустя 3 часа, 20 минут, 54 секунды (30.06.2011 - 14:01) Oliver Varnce написал(а):
оу, чето не получается((
вот код куда оно отправляет переменную date1:
тоесть это условие, если с поста пришло чтото с ключем date1тогда подставляем этот кусок в весь запрос, короче говоря оно формирует потом ...WHERE .... AND date1>= (значение) AND .....
вот код куда оно отправляет переменную date1:
case 'date1' :
$date = $_POST[$date1];
$query_filter_array[] = '`'.$key. '` >= \''.mysql_real_escape_string($_POST[$key]).'\'';
break;
тоесть это условие, если с поста пришло чтото с ключем date1тогда подставляем этот кусок в весь запрос, короче говоря оно формирует потом ...WHERE .... AND date1>= (значение) AND .....
Спустя 7 минут, 55 секунд (30.06.2011 - 14:09) Invis1ble написал(а):
Oliver Varnce
Что не получается? Покажи код, где ты применил мои советы и укажи какие именно ошибки появляются (если таковые имеются).
Кстати, вот готовое решение для переформатирования.
Что не получается? Покажи код, где ты применил мои советы и укажи какие именно ошибки появляются (если таковые имеются).
Кстати, вот готовое решение для переформатирования.
Спустя 3 часа, 44 минуты, 2 секунды (30.06.2011 - 17:53) Oliver Varnce написал(а):
подскажите, а как мне вписать даную функцию в код предоставленный выше?
вот код всего поисковичка:
вот код всего поисковичка:
<?
//ini_set('display_errors',1);
//error_reporting(E_ALL);
require_once '_init.php';
//создаем массив полей, которые могут использоваться в запросе
$row = array('real_code'=>NULL,
'id_realty_category'=>NULL,
'region'=>NULL,
'street'=>NULL,
'price1'=>NULL,
'price2'=>NULL,
'rooms1'=>NULL,
'rooms2'=>NULL,
'floor1'=>NULL,
'floor2'=>NULL,
'date1'=>NULL,
'date2'=>NULL);
$query_filter = '';
$query_filter_array = array();
$date1 = $_POST['date1'];
$date2 = $_POST['date2'];
function dateFormat1($date1, $format) {
return ($timestamp = strtotime(str_replace('/', '.', $date1)))
? strftime($format, $timestamp) : false;
}
function dateFormat2($date2, $format) {
return ($timestamp = strtotime(str_replace('/', '.', $date2)))
? strftime($format, $timestamp) : false;
}
// проверяем отправили ли форму
//смотрим что у нас пришло с поста
if ($_POST['submit'])
{
foreach($row as $key=>$value)
{
if(!array_key_exists($key, $_POST) || empty($_POST[$key]))
continue;
switch($key)
{
case 'price1' :
$query_filter_array[] = '`'.$key. '` >= \''.mysql_real_escape_string($_POST[$key]).'\'';
break;
case 'price2' :
$query_filter_array[] = '`'.$key. '` <= \''.mysql_real_escape_string($_POST[$key]).'\'';
break;
case 'rooms1' :
$query_filter_array[] = '`'.$key. '` >= \''.mysql_real_escape_string($_POST[$key]).'\'';
break;
case 'rooms2' :
$query_filter_array[] = '`'.$key. '` <= \''.mysql_real_escape_string($_POST[$key]).'\'';
break;
case 'floor1' :
$query_filter_array[] = '`'.$key. '` >= \''.mysql_real_escape_string($_POST[$key]).'\'';
break;
case 'floor2' :
$query_filter_array[] = '`'.$key. '` <= \''.mysql_real_escape_string($_POST[$key]).'\'';
break;
case 'date1' :
$query_filter_array[] = '`'.$key. '` >= \''.mysql_real_escape_string($_POST[$key]).'\'';
break;
case 'date2' :
$query_filter_array[] = '`'.$key. '` <= \''.mysql_real_escape_string($_POST[$key]).'\'';
break;
default :
$query_filter_array[] = '`'.$key. '` LIKE \''.mysql_real_escape_string($_POST[$key]).'\'';
}
}
}
//проверяем было ли что-то заполнено
//если да то разбираем массив
if(!empty($query_filter_array)){
$query_filter = " WHERE ".implode(' AND ', $query_filter_array);
}
$tQuery ='SELECT * FROM `realty`';
$query = $tQuery.$query_filter;
//echo $query;
//собираем весь запрос и выполняем
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$logo = '<img src="/uploads/realty/';
$href='<a href="/'.$LANG.'/'.$row['id_realty'].'/">';
if ($result)
{
if (mysql_num_rows($result))
{
$content .= '<div class="searchresult">';
$content .= '<table border= 1><th class="rImage"> </th>
<th nowrap="nowrap">Комн.</th>
<th nowrap="nowrap">Адрес</th>
<th nowrap="nowrap">Эт.</th>
<th nowrap="nowrap">Площадь<small>м<sup>2</sup></small></th>
<th class="rPrice" nowrap="nowrap">Ціна, у.о.</th>
<th nowrap="nowrap"> </th>';
while ($row = mysql_fetch_assoc($result))
{
$content .= '<tr>'
. '<td>'.$logo. $row['logo'].'">' .'</td>'
.'<td>'. $row['rooms1'] .'</td>'
. '<td><b>'. $row['region'].'</b>,<br>' . $row ['street']
.'<td>'. $row['floor'] .'</td>'
.'<td>'. $row['area'] .'</td>'
.'<td>'. $row['price1'] .'</td>'
.'<td>'. '<a href="/'.$LANG.'/realty/'.$row['id_realty'].'/">Подробнее</a>' .'</td>'
. '</tr><tr> </tr>';
}
$content .= '</table>';
$content .= '</div>';
$content .= '</a>';
} else $content .= 'Ничего не найдено';
?>
Спустя 4 часа, 25 минут, 28 секунд (30.06.2011 - 22:18) perovo_mike написал(а):
Привет! Не могу закончить инсталяцию доски объвлений. Все работает, все хорошо - не могу сделать русский язык видимый... Вставил МЕТА charset=windows-1251
но вместо текста видны только ???????? вопросы. Помогите, не знаю, что делать
но вместо текста видны только ???????? вопросы. Помогите, не знаю, что делать
Спустя 6 минут, 43 секунды (30.06.2011 - 22:25) Invis1ble написал(а):
perovo_mike
Создай отдельную тему, а не пиши в чужой
Создай отдельную тему, а не пиши в чужой
Спустя 11 часов, 47 минут, 16 секунд (1.07.2011 - 10:12) Invis1ble написал(а):
Oliver Varnce
как-то так:
как-то так:
function dateFormat($date, $format) {
return ($timestamp = strtotime(str_replace('/', '.', $date)))
? strftime($format, $timestamp) : false;
}
// тут остальной код
case 'date1' :
$query_filter_array[] = '`'.$key. '` >= \''.dateFormat($_POST[$key], '%Y-%m-%d').'\'';
break;
case 'date2' :
$query_filter_array[] = '`'.$key. '` <= \''.dateFormat($_POST[$key], '%Y-%m-%d').'\'';
break;
Спустя 9 минут, 50 секунд (1.07.2011 - 10:22) Oliver Varnce написал(а):
Неужели я так пробовал, только без %Y-%m-%d'... тупанул! работает, спасибо огромное. Invis1ble тебе + к карме)))
Спустя 4 минуты, 21 секунда (1.07.2011 - 10:27) Invis1ble написал(а):
Oliver Varnce
Цитата |
Неужели я так пробовал, только без %Y-%m-%d' |
Я ведь там в описании функции и примере использования показал, как задается выходной формат.
Пожалуйста.
Спустя 14 часов, 34 минуты, 35 секунд (2.07.2011 - 01:01) perovo_mike написал(а):
Спасибо за помощь! Очень волнительно было пообщаться... Рад что Твисту помог - он очень добрый малый тоже...
Спустя 7 минут, 38 секунд (2.07.2011 - 01:09) inpost написал(а):
perovo_mike
???
???
Спустя 2 минуты, 29 секунд (2.07.2011 - 01:11) kovaldm написал(а):
perovo_mike
Всегда пожалуйста.
Всегда пожалуйста.
_____________
мой хостинг - GlobalNET.com.ua