Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Базы Данных > Динамический запрос к базе данных!!! |
Автор: Tangash 14.11.2006, 10:27 |
Задача!!! Существует база данных пользователей - имя - адрес - телефон - сайт Существует форма изменения данных пользователей - имя - адрес - телефон - сайт Не получается создать динамический запрос на изменение данных пользователя, не зависимо от того какие поля он вводит... |
Автор: skyboy 14.11.2006, 10:35 |
что значит "не получается"? код привести сложно? (подсказываю: HTML-код формы и код PHP-обработчика) Тогда и посмотрим... |
Автор: Tangash 14.11.2006, 10:43 |
Вот код запроса... $query ="UPDATE `USERS` SET 1"; if (!empty($newname)) $query .= " , `name` = '".$newname."'"; if (!empty($newaddress)) $query .= " , `address` = '".$newaddress."'"; if (!empty($newtel)) $query .= " , `tel` = '".$newtel."'"; if (!empty($newsite)) $query .= " , `site` = '".$newsite."'"; if (!empty($newemail)) $query .= " , `email` = '".$newemail."'"; if (!empty($newpass)) $query .= " , `pass` = '".$newpass."'"; $query .= " WHERE `id` = '".$id."'"; //выполняем запрос $r=mysql_query($query); $newname, $newaddress... это переменные уже поученные из формы... но этот запрос не работает... не могу ошибку найти... |
Автор: skyboy 14.11.2006, 10:52 |
пункт 1. оформляй код при помощи кнопки "Код" справа выше поля ввода сообщения: и нам проще читать(кто помочь пытается) и сам можешь найти очепятки благодаря подсветке синтаксиса. пункт 2. что выдает mysql_error? |
Автор: Tangash 14.11.2006, 10:55 | ||
mysql ничего не выдает, ошибки нет, только обновление записи не происходит, вот вчем проблема... Добавлено @ 10:56
$newname, $newaddress... это переменные уже поученные из формы... |
Автор: skyboy 14.11.2006, 10:57 | ||
вообще, конструкция вида UPDATE ... SET 1, вызывает ошибку. Если хочешь сделать, как собирался(добавлять строки с запятой впереди) прописывай поле, которое никак не будет изменяться. Например, так:
Добавлено @ 10:58 у меня выдало. странный у тебя какой-то MySQL |
Автор: Tangash 14.11.2006, 11:04 |
непонятно... всмысле не меняющееся поле? мне нужно чтобы изменились только те поля которые внес пользователь... |
Автор: skyboy 14.11.2006, 11:10 | ||
вызовет ошибку. у меня вызывает. И у тебя, скорее всего, просто тебе не видать. тебе зачем эта несчастная единица? чтоб, несмотря на наличие переданных полей в форме, запрос был корректен? чтоб запятую можно было в любой строке поставить и не было ошибки? вот я тебе и говорю, что для этого приема можно использовать обновление поля самим собой... Добавлено @ 11:15 вставь после формирования запроса echo $query, скопируй выданный запрос и брось сюда. а еще лучше - воспользуйся доступом к своей БД и запусти этот запрос в том же phpMyAdmin, или в любом другом средстве связи с базой. и скажи, произошло обновление или нет. |
Автор: Tangash 14.11.2006, 11:17 | ||
а запятая в запросе выдаст ошибку??? например
|
Автор: skyboy 14.11.2006, 11:29 | ||||
а сам-то как думаешь? Добавлено @ 11:33 конечно, выдаст. почему бы не сделать так:
или так:
|
Автор: Tangash 14.11.2006, 14:39 |
Не работает твой код!!! Он работает если только введено первое значение, а без него ни как... |
Автор: skyboy 15.11.2006, 01:10 |
да я же и справшиваю: есть у тебя неизменяемые поля или нет? вот и вставил бы, чтоб даже в случае "ничего не пришло" запрос был бы корректным. А вообще - сделал бы себе флаг: если хоть что-то пришло - выполняешь запрос, если ничего нет - совсем не обрабатываешь $_GET и запрос, соотвественно, не формируешь.. . |
Автор: skyboy 15.11.2006, 10:54 | ||||
хм. два решения. первое: добавлять к запросу всегда с передидущей запятой, а потом - её удалить:
второе решение: использование массива для определения списка обновления:
|
Автор: afork 16.11.2006, 17:18 | ||
товарищи вы куда то не туда забрели , по моему все кратно проще ....
|