В данном варианте если не введешь данные то поле изменится на пустоту:
if(isset($_POST['nomer']) and isset($_POST['otkuda'])and isset($_POST['id'])){
$nomer=mysql_real_escape_string($_POST['nomer']);
$otkuda=mysql_real_escape_string($_POST['otkuda']);
$id=mysql_real_escape_string($_POST['id']);
mysql_query ("UPDATE `table` SET `data`='$date',`time`='$time',`nomer1`='$nomer', `Откуда`='$otkuda' WHERE `id`='$id' "); }
Спустя 34 минуты, 25 секунд (23.06.2012 - 19:31) rooor написал(а):
а где формы ввода?
Спустя 14 минут, 3 секунды (23.06.2012 - 19:46) ultimatum написал(а):
Возможно имеет смысл изначально при формировании страницы в форму вставлять уже имеющиеся данные пользователя, тогда ваш запрос будет работать корректно.
Спустя 3 минуты, 57 секунд (23.06.2012 - 19:49) TrashXXX написал(а):
Все просто - сделай запрос на получение данных юзера из бд и если это поле менялось (пришли данные с формы), то поле=пришедшим данным, иначе поле=старому значению, а вот потом уже запросом апдейтишь их.
Спустя 8 минут, 53 секунды (23.06.2012 - 19:58) DosiyaJkeeee написал(а):
TrashXXX можно проще. Я вижу решение этой проблемы так:
Проверку на существование убери. Сделай так:
Проверку на существование убери. Сделай так:
$nomer=isset($_POST['nomer']) && !empty ($_POST['nomer']) ? ", `nomer` = " . mysql_real_escape_string($_POST['nomer']):null;и так остальные сделай и потом запрос
mysql_query ("UPDATE `table` SET $data . $time . $nomer1 . $Otkuda WHERE `id`='$id' ");
Спустя 1 час, 22 минуты, 19 секунд (23.06.2012 - 21:21) Guest написал(а):
DosiyaJkeeee
я не пойму, а где здесь названия полей БД?
я не пойму, а где здесь названия полей БД?
Спустя 44 секунды (23.06.2012 - 21:21) vital написал(а):
Цитата (Guest @ 23.06.2012 - 20:21) |
DosiyaJkeeee я не пойму, а где здесь названия полей БД? |
Цитата |
nomer` = |
Спустя 12 минут, 58 секунд (23.06.2012 - 21:34) ИНСИ написал(а):
Цитата |
`Откуда`='$otkuda' |
так и хранишь название поля в БД?


Спустя 2 минуты, 31 секунда (23.06.2012 - 21:37) Guest написал(а):
ИНСИ
=)
vital
не работает
=)
vital
не работает
Спустя 2 минуты, 49 секунд (23.06.2012 - 21:40) ИНСИ написал(а):
По теме, можешь сделать так:
тока названия полей в форме сделай такими же, как и в БД :) Либо можно к циклу добавить ключ.
$arr = array();
foreach(array('date','time','nomer') as $data) {
if(isset($_POST[$data]) && $_POST[$data] != '')
$arr[] = "`{$data}` = '" . mysql_real_escape_string(stripslashes($_POST[$data])) . "'";
}
if(sizeof($arr) > 0) {
mysql_query("
UPDATE `table`
SET " . implode(', ', $arr) . "
WHERE `id` = " . (int)$_POST['id']
);
}
тока названия полей в форме сделай такими же, как и в БД :) Либо можно к циклу добавить ключ.
Спустя 13 минут, 36 секунд (23.06.2012 - 21:53) Guest написал(а):
ИНСИ
вот подробно что есть сейчас у меня
точно ли так надо делать как вы написали?
вот подробно что есть сейчас у меня
<b>Введите изменения:</b><br>
<form method="post" name="message">
Номер:
<input name="id">
Номер телефона:
<input name="nomer">
Откуда:
<input name="otkuda">
Куда:
<input name="kuda">
<td><input type="image" src="izm.png" value="Отправить" type="submit" /></form>
date_default_timezone_set('Asia/Yekaterinburg');
if(isset($_POST['nomer']) and isset($_POST['otkuda'])and isset($_POST['kuda'])){
$nomer=mysql_real_escape_string($_POST['nomer']);
$otkuda=mysql_real_escape_string($_POST['otkuda']);
$kuda=mysql_real_escape_string($_POST['kuda']);
$id=mysql_real_escape_string($_POST['id']);
$time=date("H:i:s");
$date=date("d/m/Y");
$result = mysql_query ("UPDATE `Заказы` SET `data`='$date', `time`='$time',`nomer1`='$nomer', `Откуда`='$otkuda', `Куда`='$kuda', WHERE `id`='$id' ");
}
точно ли так надо делать как вы написали?
Спустя 55 минут, 50 секунд (23.06.2012 - 22:49) ИНСИ написал(а):
Guest нет, в вашем случае надо немного по другому:
<b>Введите изменения:</b><br>
<form method="post" name="message" action="">
Номер:
<input name="id" type="text">
Номер телефона:
<input name="nomer" type="text">
Откуда:
<input name="otkuda" type="text">
Куда:
<input name="kuda" type="text" >
<td><input type="image" src="izm.png" value="Отправить" name="send" /></form>
<?php
date_default_timezone_set('Asia/Yekaterinburg');
if(isset($_POST['send'])) {
$arr = array();
foreach(array('nomer1' => 'nomer', 'откуда' => 'otkuda', 'Куда' => 'kuda') as $key => $data) {
if(isset($_POST[$data]) && $_POST[$data] != '')
$arr[] = "`{$key}` = '" . mysql_real_escape_string(stripslashes($_POST[$data])) . "'";
}
mysql_query("
UPDATE `Заказы`
SET `time` = NOW(), `data` = DATE_FORMAT(NOW(),'%d/%m/%Y')" . (sizeof($arr) > 0 ? ', ' . implode(', ', $arr) : '') . "
WHERE `id` = " . (int)$_POST['id'] . "
LIMIT 1
");
}
?>
Спустя 12 часов, 6 минут, 54 секунды (24.06.2012 - 10:56) DosiyaJkeeee написал(а):
Сделай так:
и так остальные сделай и потом запрос
mysql_query ("UPDATE `table` SET" . $data . $time . $nomer1 . $Otkuda . "WHERE `id`='$id' ");
К примеру вы сделали так как я сказал. И теперь в переменных содержиться такая конструкция. Если существует переменная и она не пуста то пишем какой столбец обновлять и на что а если нет то выводим пустоту и так все.
$nomer=isset($_POST['nomer']) && !empty ($_POST['nomer']) ? ", `nomer` = " . mysql_real_escape_string($_POST['nomer']):null;
и так остальные сделай и потом запрос
mysql_query ("UPDATE `table` SET" . $data . $time . $nomer1 . $Otkuda . "WHERE `id`='$id' ");
К примеру вы сделали так как я сказал. И теперь в переменных содержиться такая конструкция. Если существует переменная и она не пуста то пишем какой столбец обновлять и на что а если нет то выводим пустоту и так все.
Спустя 5 часов, 59 минут, 49 секунд (24.06.2012 - 16:56) ИНСИ написал(а):
Цитата |
$nomer=isset($_POST['nomer']) && !empty ($_POST['nomer']) ? ", `nomer` = " . mysql_real_escape_string($_POST['nomer']):null; |
Ты уверен что это правильный метод? Использовать "null" ? Лучше уж просто '' (пустота)
И что если маг. кавычки включены на сервере?
P.S. Использовать !empty в данном случае нельзя. А что если значением будет цифра 0 ? Будет интересно )
Спустя 23 минуты, 38 секунд (24.06.2012 - 17:20) DosiyaJkeeee написал(а):
Цитата |
А что если значением будет цифра 0 |
Неподумал

Спустя 47 минут, 6 секунд (24.06.2012 - 18:07) killer8080 написал(а):
ИНСИ
наверно вместо `time` = NOW() лучше `time` = CURTIME(), а то мало ли в каком формате там поле
наверно вместо `time` = NOW() лучше `time` = CURTIME(), а то мало ли в каком формате там поле

Спустя 4 часа, 30 минут, 21 секунда (24.06.2012 - 22:37) ИНСИ написал(а):
killer8080 согласен
Спустя 1 час, 15 минут, 32 секунды (24.06.2012 - 23:52) rooor написал(а):
Кстати, подскажите, знающие люди... возможно я не прав, но по мне лучше использовать функции PHP, чем SQL...
В скриптах можно задать время, например,
а если в запрос писать NOW(), то в таблицу запишется время сервера
В скриптах можно задать время, например,
date_default_timezone_set("Europe/Moscow");
а если в запрос писать NOW(), то в таблицу запишется время сервера
Спустя 9 часов, 55 минут, 45 секунд (25.06.2012 - 09:48) ИНСИ написал(а):
rooor все верно. Для мускула надо по другому менять время. Можно изменить через конфиг
либо менять через
default-time-zone
либо менять через
SET time_zone, CONVERT_TZ