|
|
|
| Какой именно запрос нкжно создать, чтобу пользователь мог подключиться к базе и изменить свои данные? | |
|
|
|
|
|
|
|
для: evgen_17
(27.02.2005 в 23:29)
| | Для ответа необходима структура базы данных, так как не очень понятно, что необходимо менять. | |
|
|
|
|
|
|
|
для: cheops
(27.02.2005 в 23:35)
| | Нужно чтобы была возможность менять Логин, Пароль. С остальным сам разберусь, попробую...
cheops - Вы писали:
<?php // Здесь запрос и извлечение информации ??? //Какой именно запрос??? $uid = $result['uid']; //Что значит $result? .... $city = $result['city']; // Включаем форму include "form.php"; ?>
|
| |
|
|
|
|
|
|
|
для: evgen_17
(27.02.2005 в 23:46)
| | Могут возникнуть сложности вот какого рода, посетитель вводит только логин и пароль - логин является его идентификатором и обычно не меняется. Смена паролей сводится к обновлению таблицы при помощи SQL-запроса UPDATE:
<?php
// Установка соединения с базой данных
include "config.php";
// Выполняем SQL-запрос
$query = "UPDATE tbl SET pass = 'новый пароль' WHERE name='логин'";
mysql_query($query);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(28.02.2005 в 01:00)
| | Вот что я делаю...
1) На странице приветсвия - 1-я, после авторизации, создаю ссылку на файл смены данных. После нажатия на неё пользователь попадает на страницу с формой (form.php)
Вот содержание form.php...
<? $uid = $_SESSION['uid']; ?> <form name="frm" action="file.php" method="post"> <TABLE BORDER="1" bordercolor="#336699" align="center"> <TR> <TD colspan="2" bgcolor="#FFCC33"> <center> <font color="#336699"><b>Данные</b></font> </center> </TD> </TR>
<TR> <TD bgcolor="#336699"><center><font color="white"><b>* Логин:</b><font></center></TD> <TD><input type="text" size="25" name="uid" value="<? echo $uid; ?>"></TD> </TR>
<TR> <TD bgcolor="#336699"><center><font color="white"><b>* Пароль:</b><font></center></TD> <TD><input type="password" size="25" name="pwd"></TD> </TR>
<TR> <TD bgcolor="#336699"><center><font color="white"><b>* Повторите пароль:</b><font></center></TD> <TD><input type="password" size="25" name="pwd2"></TD> </TR> </TABLE> <center> <input type=submit value='Изменить' name=register> </FORM>
|
Вводит пароли и нажимает "Изменить"
Это действие обрабатывается файлом... (file2.php)
<? sleep (1); session_start(); if (!isset($_SESSION['uid'])) { $_SESSION['uid'] = $_POST['uid']; $_SESSION['pwd'] = $_POST['pwd']; }
$uid = $_SESSION['uid']; $pwd = $_SESSION['pwd']; db_connect(); $query = "UPDATE users SET pass = '$pwd' WHERE name='$uid'"; mysql_query($query); db_disconnect();
?>
|
Ничего не обновляется... Что делать-то? | |
|
|
|
|
|
|
|
для: evgen_17
(28.02.2005 в 22:36)
| | А у вас $_SESSION['uid'] не пустой? Попробуйте напрямую сначала передать данные в запрос
<?php
$uid = $_POST['uid'];
$pwd = $_POST['pwd'];
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(28.02.2005 в 22:54)
| | Нет точно не пустой... В строку "Имя" пишется переменная, которая была и на прошлой странице... | |
|
|
|
|
|
|
|
для: evgen_17
(27.02.2005 в 23:29)
| | Странный вопрос...
Возможно вам подойдет UPDATE или REPLACE
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT rows]
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
VALUES (expression,...),(...),...
При REPLACE необходимо чтобы поле одно из полей было уникальным, иначе это обычный INSERT | |
|
|
|
|
|
|
|
для: Artem S.
(27.02.2005 в 23:37)
| | Переписал код обработчика на такой:
<? session_start(); $uid = $_SESSION['uid']; $pwd = $_SESSION['pwd']; db_connect(); $query = mysql_query("UPDATE users SET pwd ='$pwd' WHERE uid='$uid'"); if($query) { echo ("Данные успешно изменены."); } else { echo ("Данные не изменены."); } db_disconnect();
?>
|
Пишет "Данные успешно изменнены", а в БД ничего не меняется... Тут что-то нет так? | |
|
|
|
|
|
|
|
для: evgen_17
(03.03.2005 в 00:16)
| | Вы уверены, что в сессиях у вас уже новый пароль? Ведь это смена пароля через форму? Может быть нужно использовать массив $_POST?
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(03.03.2005 в 01:36)
| | просто сделайте такую проверку, что приходит на замкну, допишите
<?
$query = mysql_query("UPDATE users SET pwd ='$pwd' WHERE uid='$uid'");
if($query)
{
echo ("Данные успешно изменены. логин -$uid , паоль - $pwd'");
}
else
{
echo ("Данные не изменены. логин -$uid , паоль - $pwd'");
}
?>
|
и сразу будет видно пришли измененые данные или нет. | |
|
|
|
|
|
|
|
для: Valeri
(03.03.2005 в 16:49)
| | Ну хорошо. с изменением пароля разобрались... А если мне не только пароль нужно поменять? А например ещё и E-Mail? | |
|
|
|
|
|
|
|
для: evgen_17
(03.03.2005 в 22:26)
| | Нужно обновить поле mail
UPDATE users SET pwd ='$pwd', mail='$mail' WHERE uid='$uid'
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(04.03.2005 в 01:03)
| | Я пробовал писать так:
<?
//Часть кода
UPDATE users SET pwd ="$_POST['pwd']", mail="$_POST['mail']" WHERE uid='$uid'
?>
|
Не работает пароль обновляется, а mail нет...
Может нужно так:
<?
$pwd = $_POST['pwd'];
$mail = $_POST['mail];
UPDATE users SET pwd ='$pwd', mail='$mail' WHERE uid='$uid'
?>
|
| |
|
|
|
|
|
|
|
для: evgen_17
(04.03.2005 в 14:41)
| | В первом случае, видимо, путаются кавычки. Попробуйте так.
<?
$query = "UPDATE users SET pwd ='".$_POST["pwd"]."', mail='".$_POST["mail"]."' WHERE uid='$uid'";
mysql_query($query);
?>
|
Т.е. все обновляемые данные обрамлять кавычками.
Ваш второй вариант тоже должен работать. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(05.03.2005 в 00:07)
| | Да, да, спасибо, разобрался... | |
|
|
|