Консультация № 181534
22.12.2010, 04:43
0.00 руб.
0 7 1
Доброго времени суток! Прошу помочь
Имеется небольшая таблица Users в БД DATA на Mysql


Сделал форму для вставки(insert) строки значений name,email, picture, pass
(поле ID добавлено)

Помогите пожалуйста переделать запрос для обновления(UPATE) строки значений name,email, picture, pass по введенному ID, то есть вводим ID записи и заполняем новые значения полей.

Код формы для вставки новой строки в БД прилагаю




Приложение:
<?php
$link = mysql_connect("localhost", "root")
or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db("data", $link) or die ('Не могу выбрать БД');
?>

<form enctype='multipart/form-data' method=POST>
<table cellpadding="0" cellspacing="6">
<tr><td><p>ID</td><td><input class=input size=40 type=text name=ID></td></tr>
<tr><td><p>Имя</td><td><input class=input size=40 type=text name=name></td></tr>
<tr><td><p>email</td><td><input class=input size=40 type=text name=email></td></tr>
<tr><td><p>Аватар</td><td><input class=input size=40 type=file name=avatar></td></tr>
<tr><td><p>Пароль</td><td><input class=input size=40 type=text name=pass></td></tr>
<tr><td></td><td><input class=button type=submit name='submit1'></td></tr>
</table>
</form>

<?php
if ($_POST['submit1']) {
$ip = getenv("remote_addr");
$name=$_POST['name'];
$email=$_POST['email'];
$pass=$_POST['pass'];
if (!empty($name) && !empty($email) && !empty($pass)){

// Если поле выбора картинки не пустое - закачиваем её на сервер
if (!empty($_FILES['avatar']['tmp_name']))
{
// Закачиваем файл
$path="files/".date("YmdHis",time()).strrchr($_FILES['avatar']['name'], ".");

if (copy($_FILES['avatar']['tmp_name'], "./".$path)) $picture = $path;
}
$a=0;
$query = "INSERT INTO users VALUES (0,
'$name',
'$email',
'$picture',
'$pass','$ip','$a');";
if(mysql_query($query))
{
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
</HEAD>";
}

}else links("Нужно заполнить все поля");

}
?>

Обсуждение

Неизвестный
22.12.2010, 05:29
общий
1. Сам update будет выглядеть следующим образом:

UPDATE users SET name='$name', email='$email', picture='$picture', pass='$pass', ip='$ip', flag='$a' WHERE id='$id';

2. Думаю не стоит напоминать, что при работе с базой данных ВСЕ ДАННЫЕ перепроверять (ну или использовать mysql_real_escape_string()) а так-же $id = (int)$id;

3. Обширная докуентация по Mysql-у всегда доступна по адресу http://www.mysql.ru/docs/man/

4. ну и собственно в форму кидать <input type="hidden" name="id" value="id_выбранного_вами_элемента" />

Неизвестный
22.12.2010, 06:24
общий
это ответ
Здравствуйте, Иванов Руслан Иванович!

Расписал в минифоруме ответ, но как его вставить в Ваш код это думаю сами сможете додумать.
Ибо если делать апдейт по "человечески", то ему нужно показать что он будет апдейтить... т.е. имя, email, аватар и пароль, и менять ТОЛЬКО то что необходимо.
4
Неизвестный
22.12.2010, 08:34
общий
Паутов Сегей Владимирович
Спасибо , но пока вопрос отсылался уже решил проблему
давно
Профессионал
848
1596
22.12.2010, 08:46
общий
ну и собственно в форму кидать <input type="hidden" name="id" value="id_выбранного_вами_элемента" />

вы предлагаете id записи прятать на форме?? Так же можно будет проапдейтить всю таблицу пользователей, составив "правильный" POST запросТак нельзя делать!
Неизвестный
22.12.2010, 17:55
общий
Цитата: PsySex
составив "правильный" POST запрос
Во первых, так как код представлен - писать нельзя. Во вторых - какой вопрос, такой ответ, у человека была проблема с апдейтом. Если рассматривать форму, такую как он нарисовал (с вводом ID), то посмотрим внимательней на описание таблицы (id int(11) not null auto_increment).

Вопрос Вам PsySex - а в этом случае так можно делать? И что значит "Так нельзя делать!" - всю жизнь все CMS-ки при апдейте любых записей использовали и используют и будут использовать хидден поля, с последующей проверкой прав и прочей ерундой... А как вы делаете формы для изменения чего либо?
давно
Профессионал
848
1596
23.12.2010, 08:54
общий
Я нисколько не сомневаюсь в вашем опыте, но я сделал замечание по конкретному коду, который является потенциально опасным.
Во первых, так как код представлен - писать нельзя

было бы неплохо если вы делали замечание по коду, если видите новичка перед собой, думаю он был бы благодарен вам. Я согласен с вами, что на его форме поле ID абсолютно не нужное.
Неизвестный
23.12.2010, 19:48
общий
ну я как-бы и описал замечания по коду в пункте 2 первого ответа в мини форуме :)
Форма ответа