[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Перевернуть дату обратно, при UPDATE
WisesT
Приветствую, камрады!
Подскажите, пожалуйста.
Есть траничка обновления данных (заказов).
Сначала форма выбирает данные
$result = mysql_query("SELECT *, DATE_FORMAT(`time`, '%d-%m-%Y %H:%i:%s') as `formatTime`, DATE_FORMAT(`na_kogda`, '%d-%m-%Y') as `formatTime1` FROM zakazy LIMIT $start, $num");  

Как видите - переворачивает дату (formatTime и formatTime1)
и выводит поля формы, одно из которых "На когда"

<td bgcolor="#1C86EE" width="150">На когда:</td><td><input type="text" value="<?php echo $postrow[$i]['formatTime1'] ?>" name="test_na_kogda"/></td>


Перевернуть дату при выводе значений в форму - сделали.
А как теперь заставить форму, при отправке новых данных, переворачивать дату обратно, в формат ГГГГ-ММ-ДД?

Поле даты "на когда" выглядит след. образом.
`na_kogda`  date NOT NULL ,

Спасибо.



Спустя 13 минут, 39 секунд (20.01.2012 - 11:42) Winston написал(а):
При обновлении
... SET `na_kogda` = NOW(), ...

Или
... SET `na_kogda` = DATE_FROMAT('".$date."', 'ЗДЕСБ_ФОРМАТ_ДАТЫ'), ...

Спустя 25 минут, 13 секунд (20.01.2012 - 12:07) WisesT написал(а):
а как же быть с na_kogda='{$_POST['test_na_kogda']}',?

овва! да я же запрос на обновление не написал в первом посте

$query = "UPDATE $table SET gotovnost='{$_POST['test_gotovnost']}', firma='{$_POST['test_firma']}', na_kogda='{$_POST['test_na_kogda']}', adress='{$_POST['test_adress']}', imya='{$_POST['test_imya']}', tel='{$_POST['test_tel']}', ves='{$_POST['test_ves']}', kuda='{$_POST['test_kuda']}', oplata='{$_POST['test_oplata']}', primechaniya='{$_POST['test_primechaniya']}', prinyal='{$_POST['test_prinyal']}', kurier='{$_POST['test_kurier']}', status='{$_POST['test_status']}' WHERE nomer='{$_POST['update']}'";

Спустя 1 минута (20.01.2012 - 12:08) Winston написал(а):
Так, что нельзя так вставить?
... SET `na_kogda` = DATE_FROMAT('".$_POST['test_na_kogda']."', 'ЗДЕСБ_ФОРМАТ_ДАТЫ'), ...

Спустя 2 минуты, 34 секунды (20.01.2012 - 12:11) WisesT написал(а):
FUNCTION dimex.DATE_FROMAT does not exist

вот что выдало, при запросе в виде
$query = "UPDATE $table SET gotovnost='{$_POST['test_gotovnost']}', firma='{$_POST['test_firma']}', `na_kogda` = DATE_FROMAT('".$_POST['test_na_kogda']."', '%Y-%m-%d'), adress='{$_POST['test_adress']}', imya='{$_POST['test_imya']}', tel='{$_POST['test_tel']}', ves='{$_POST['test_ves']}', kuda='{$_POST['test_kuda']}', oplata='{$_POST['test_oplata']}', primechaniya='{$_POST['test_primechaniya']}', prinyal='{$_POST['test_prinyal']}', kurier='{$_POST['test_kurier']}', status='{$_POST['test_status']}' WHERE nomer='{$_POST['update']}'";

Спустя 4 минуты, 6 секунд (20.01.2012 - 12:15) Winston написал(а):
Цитата (WisesT @ 20.01.2012 - 11:11)
FUNCTION dimex.DATE_FROMAT does not exist

Упс... ошибся в написании... Вбей ошибку в гугл и увиидшь как правильно называется ф-я

Еще так можно
$na_kogda = date('Y-m-d h:i:s', strtotime($_POST['test_na_kogda']));
SET `na_kogda` = '".$na_kogda."', ...

Спустя 3 минуты, 25 секунд (20.01.2012 - 12:18) WisesT написал(а):
С первым вариантом. ошибку увидел) мой фэйл)
но всеравно бьет ошибку

Truncated incorrect datetime value: '19-02-2012'

Спустя 7 минут, 1 секунда (20.01.2012 - 12:25) WisesT написал(а):
второй вариант сработал без проблем. спс

Спустя 39 секунд (20.01.2012 - 12:26) Winston написал(а):
А так?
... SET `na_kogda` = STR_TO_DATE('".$_POST['test_na_kogda']."', 'ЗДЕСЬ_ФОРМАТ_ДАТЫ'), ...

Спустя 37 минут, 58 секунд (20.01.2012 - 13:04) WisesT написал(а):
а как бы еще вот этот переделать?
это посик по бд.

$query = "SELECT *, DATE_FORMAT(`time`, '%d-%m-%Y %H:%i:%s') as `formatTime`, DATE_FORMAT(`na_kogda`, '%d-%m-%Y') as `formatTime1` FROM zakazy WHERE UPPER(nomer) LIKE '%".strtoupper($_POST['help'])."%' 
or UPPER(time) LIKE '%"
.strtoupper($_POST['help'])."%'
or UPPER(gotovnost) LIKE '%"
.strtoupper($_POST['help'])."%'
or UPPER(firma) LIKE '%"
.strtoupper($_POST['help'])."%'
or UPPER(adress) LIKE '%"
.strtoupper($_POST['help'])."%'
or UPPER(imya) LIKE '%"
.strtoupper($_POST['help'])."%'
or UPPER(tel) LIKE '%"
.strtoupper($_POST['help'])."%'
or UPPER(ves) LIKE '%"
.strtoupper($_POST['help'])."%'
or UPPER(kuda) LIKE '%"
.strtoupper($_POST['help'])."%'
or UPPER(oplata) LIKE '%"
.strtoupper($_POST['help'])."%'
or UPPER(na_kogda) LIKE '%"
.strtoupper($_POST['help'])."%'
or UPPER(primechaniya) LIKE '%"
.strtoupper($_POST['help'])."%'
or UPPER(prinyal) LIKE '%"
.strtoupper($_POST['help'])."%'
or UPPER(kurier) LIKE '%"
.strtoupper($_POST['help'])."%'
or UPPER(status) LIKE '%"
.strtoupper($_POST['help'])."%'";


$na_kogda = date('Y-m-d h:i:s', strtotime($_POST['test_na_kogda']));
SET `na_kogda` = '".$na_kogda."', ...

по тому же принципу можно?

Спустя 27 минут, 41 секунда (20.01.2012 - 13:31) WisesT написал(а):
что-то не получается

Спустя 5 часов, 49 минут, 7 секунд (20.01.2012 - 19:21) UnWind написал(а):
WisesT
У тебя строгие критерии для поиска ? Т.е. тебе нужно что бы искало по одному параметру, по одному не нашел, то по другому, верно ?
Или по совокупности параметров ?

Спустя 5 минут, 10 секунд (20.01.2012 - 19:26) UnWind написал(а):
Если ты хочешь заменить LIKE на стандартную операцию сравнения - то без проблем, так можно. Но OR ставить прийдется все равно. Это означает в данном случае, что если поиск не дал результатов по первому критерию, то будет осуществляться по второму до конца, либо пока результат не будет достигнут, либо не будет равняться 0 по всем критериям.

Функция UPPER - возвращает значение в виде прописных букв.

Спустя 29 минут, 21 секунда (20.01.2012 - 19:55) UnWind написал(а):
Вообще если таблица типа MYISAM, то можно использовать такой вот запрос после WHERE:
WHERE MATCH UPPER(time,gotovnost, firma,adress,imya,tel,ves,kuda,oplata,na_logda,primechaniya,prinyal,status,kurier)
AGAINST ('Что мы ищем - текст/переменная' IN BOOLEAN MODE);

Если таблица не типа MyISAM, то ее можно переделать простым запросом:
ALTER TABLE таблица ENGINE = MYISAM;


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

P.S.:> Только запрос под себя переделай, я не проверял на правильность имена полей. Можно и плюсик поставить B) (Если помогло конечно)

Спустя 2 дня, 14 часов, 58 минут, 28 секунд (23.01.2012 - 10:54) WisesT написал(а):
Секунду. Только на работу приплыл.
Сначала кофе, новости, сплетни... потом уже работа;)

Спустя 2 часа, 53 минуты, 55 секунд (23.01.2012 - 13:48) neadekvat написал(а):
UnWind, что за фигня? Зачем полнотекстовой поиск? Зачем менять что-то на MYISAM ради этого?

К слову, при поиске слова обычно приводят к нижнему регистру, а не к верхнему.

Спустя 2 минуты, 55 секунд (23.01.2012 - 13:50) UnWind написал(а):
neadekvat
Ну а смысл описывать такое большое количество стоблцов, если все это можно сделать проще и запрос понятней.

Спустя 9 минут, 9 секунд (23.01.2012 - 14:00) neadekvat написал(а):
Цитата (UnWind @ 23.01.2012 - 14:50)
Ну а смысл описывать такое большое количество стоблцов, если все это можно сделать проще и запрос понятней.

И, насколько я помню, тяжеловеснее.

Спустя 1 минута, 47 секунд (23.01.2012 - 14:01) UnWind написал(а):
Цитата
И, насколько я помню, тяжеловеснее.

Не на много. Он быстро обрабатывается.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.