Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Изменение личных данных пользователя. Структура SQL - запроса.
 
 автор: evgen_17   (27.02.2005 в 23:29)   письмо автору
 
 

Какой именно запрос нкжно создать, чтобу пользователь мог подключиться к базе и изменить свои данные?

   
 
 автор: cheops   (27.02.2005 в 23:35)   письмо автору
 
   для: evgen_17   (27.02.2005 в 23:29)
 

Для ответа необходима структура базы данных, так как не очень понятно, что необходимо менять.

   
 
 автор: evgen_17   (27.02.2005 в 23:46)   письмо автору
 
   для: cheops   (27.02.2005 в 23:35)
 

Нужно чтобы была возможность менять Логин, Пароль. С остальным сам разберусь, попробую...
cheops - Вы писали:

<?php 
// Здесь запрос и извлечение информации ??? //Какой именно запрос???
$uid $result['uid']; //Что значит $result?
.... 
$city $result['city']; 
// Включаем форму 
include "form.php"
?> 

   
 
 автор: cheops   (28.02.2005 в 01:00)   письмо автору
 
   для: evgen_17   (27.02.2005 в 23:46)
 

Могут возникнуть сложности вот какого рода, посетитель вводит только логин и пароль - логин является его идентификатором и обычно не меняется. Смена паролей сводится к обновлению таблицы при помощи SQL-запроса UPDATE:
<?php
  
// Установка соединения с базой данных
  
include "config.php";
  
// Выполняем SQL-запрос
  
$query "UPDATE tbl SET pass = 'новый пароль' WHERE name='логин'";
  
mysql_query($query);
?>

   
 
 автор: evgen_17   (28.02.2005 в 22:36)   письмо автору
 
   для: 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();
    

?>

Ничего не обновляется... Что делать-то?

   
 
 автор: cheops   (28.02.2005 в 22:54)   письмо автору
 
   для: evgen_17   (28.02.2005 в 22:36)
 

А у вас $_SESSION['uid'] не пустой? Попробуйте напрямую сначала передать данные в запрос
<?php
    $uid 
$_POST['uid'];
    
$pwd $_POST['pwd'];
?>

   
 
 автор: evgen_17   (28.02.2005 в 23:14)   письмо автору
 
   для: cheops   (28.02.2005 в 22:54)
 

Нет точно не пустой... В строку "Имя" пишется переменная, которая была и на прошлой странице...

   
 
 автор: Artem S.   (27.02.2005 в 23:37)   письмо автору
 
   для: 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

   
 
 автор: evgen_17   (03.03.2005 в 00:16)   письмо автору
 
   для: 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();
    

?>

Пишет "Данные успешно изменнены", а в БД ничего не меняется... Тут что-то нет так?

   
 
 автор: glsv (Дизайнер)   (03.03.2005 в 01:36)   письмо автору
 
   для: evgen_17   (03.03.2005 в 00:16)
 

Вы уверены, что в сессиях у вас уже новый пароль? Ведь это смена пароля через форму? Может быть нужно использовать массив $_POST?

$pwd = $_POST["pwd"];

   
 
 автор: Valeri   (03.03.2005 в 16:49)   письмо автору
 
   для: 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'");
    }
 
?>


и сразу будет видно пришли измененые данные или нет.

   
 
 автор: evgen_17   (03.03.2005 в 22:26)   письмо автору
 
   для: Valeri   (03.03.2005 в 16:49)
 

Ну хорошо. с изменением пароля разобрались... А если мне не только пароль нужно поменять? А например ещё и E-Mail?

   
 
 автор: glsv (Дизайнер)   (04.03.2005 в 01:03)   письмо автору
 
   для: evgen_17   (03.03.2005 в 22:26)
 

Нужно обновить поле mail

UPDATE users SET pwd ='$pwd', mail='$mail'  WHERE uid='$uid'

   
 
 автор: evgen_17   (04.03.2005 в 14:41)   письмо автору
 
   для: 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'
?>

   
 
 автор: glsv (Дизайнер)   (05.03.2005 в 00:07)   письмо автору
 
   для: evgen_17   (04.03.2005 в 14:41)
 

В первом случае, видимо, путаются кавычки. Попробуйте так.

<?
$query 
=  "UPDATE users SET pwd ='".$_POST["pwd"]."', mail='".$_POST["mail"]."'  WHERE uid='$uid'";
mysql_query($query);
?>

Т.е. все обновляемые данные обрамлять кавычками.
Ваш второй вариант тоже должен работать.

   
 
 автор: evgen_17   (05.03.2005 в 00:31)   письмо автору
 
   для: glsv (Дизайнер)   (05.03.2005 в 00:07)
 

Да, да, спасибо, разобрался...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования