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

Форум MySQL

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

 

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

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

тема: Проверить есть ли такой email в базе данных
 
 автор: SnooPI   (25.02.2007 в 05:20)   письмо автору
 
 

Код проверки, если литакой email в бд

<?php
$query 
"SELECT COUNT(*) FROM users WHERE email = '$_POST[email]' AND id <> '$id'";
      
$usr mysql_query($query);
      if(!
$usr)
      exit(
"Ошибка - ".mysql_error());
      
$total mysql_result($usr0);
      if(
$total 0)
      {
       exit(
"Такой 'E-mail' уже имеется в базе данных");
      }
?>

Дальше идет апдейт юзера

<?php
$query 
"SELECT * FROM users WHERE name='$_SESSION[name]' AND id = '$id'";
    
$result mysql_query($query);
    
$numrows mysql_num_rows($result);
    if (
$numrows 1) {
    
$_POST['pass'] = md5($_POST['pass']);
    
$query "UPDATE users SET icq = '$_POST[icq]', url = '$_POST[url]', email = '$_POST[email]' WHERE name = '$_SESSION[name]'";
    
$result mysql_query($query);
          if (
$result == 1) {
              echo 
"<b>Изменения сохранены</b>";
              echo 
"<HTML><HEAD>
              <META HTTP-EQUIV='Refresh' CONTENT='0; URL='
$_SERVER[REQUEST_URI]'>
              </HEAD></HTML>"
;
          }
?>

Так вот.......если пользователь меняет свои данные, и меняет напрмиер поле icq и дальше нажимает сохранить, то ему выдает ошибку "Такой 'E-mail' уже имеется в базе данных"

Так вот.....какой запрос сделать чтобы себе не выдавало?

   
 
 автор: cheops   (25.02.2007 в 12:12)   письмо автору
 
   для: SnooPI   (25.02.2007 в 05:20)
 

А вы $id передаёте? Вообще условие AND id <> '$id' должно предотвращать проверку e-mail для текущего пользователя.

   
 
 автор: SnooPI   (25.02.2007 в 16:15)   письмо автору
 
   для: cheops   (25.02.2007 в 12:12)
 

Я так делаю,но чтото не так :(
Посмотрите пожалуйста мой код:

<a href="?do=edpwd" title="Изменить пароль">Изменить пароль</a><br /><br />
<table class="td" stye="width: 250;">
<form method="post" enctype="multipart/form-data">
<tr><td>E-mail:</td></tr><tr><td><input type="text" name="email" maxlength="25" value="<?php echo $user['email']; ?>" /></td></tr>
<tr><td>Icq:</td></tr><tr><td><input type="text" name="icq" maxlength="9" value="<?php if($user['icq'] != 0) echo $user['icq']; ?>" /></td></tr>
<tr><td>Сайт: <small>(без "http://")</small></td></tr><tr><td><input type="text" name="url"  value="<?php if(!empty($user['icq'])) echo $user['url']; ?>"/></td></tr>
<tr><td><input class="button" type="submit" name="save" title="Созранить изменения" id="but" value="Сохранить" /></td></tr>
</form>
</table>
<br /><br />
<?php
    
if ($save) {
    
//Убираем пробелы в конце строк и кавычки закрываем слешами
    
$_POST['email'] = trim(addslashes($_POST['email']));
    
$_POST['url'] = trim(addslashes($_POST['url']));
    
$_POST['icq'] = trim(addslashes($_POST['icq']));
    
//Проверяем заполнены ли обязательные поля
    
if(!empty($_POST['icq'])){
          if(!
preg_match("|^[\d]+$|"$_POST['icq']))
        {
          exit(
"Поле 'ICQ' должно содержать только цифры");
        }
          if( 
strlen($_POST['icq']) < || strlen($_POST['icq']) > 9)
               exit(
"Поле 'ICQ' должно содержать от 5 до 9 цифр");
       }
     if(empty(
$_POST['email']) && (isset($_POST['email']))) {
          exit(
"Заполните поле 'E-mail'");
          } else {
        if(!
preg_match("|^[-0-9a-z_]+@[-0-9a-z_]+\.[a-z]{2,6}$|i"$_POST['email']) && (!isset($_POST['email']))) {
              exit(
"Поле 'E-mail' должно соответствовать формату billy@microsoft.com");
            }
        }

      
//Проверяем есть ли такой e-mail в базе данных
     
require_once("config.php");
      
// Проверяем, не было ли переданное имя зарегистрировано ранее
      
$query "SELECT COUNT(*) FROM users WHERE email = '$_POST[email]' AND id <> '$_POST[id]'";
      
$usr mysql_query($query);
      if(!
$usr)
      exit(
"Ошибка - ".mysql_error());
      
$total mysql_result($usr0);
      if(
$total 0)
      {
       exit(
"Такой 'E-mail' уже имеется в базе данных");
      }
          
//Смотрим данные на данный момент
    
if (isset($_SESSION['name'])){
    
$query "SELECT * FROM users WHERE name = '$_SESSION[name]'";
    
$usr mysql_query($query);
    if(!
$usr)
    exit(
mysql_error());
    
$user mysql_fetch_array($usr);
    }
    
//Обновляем базу данных с новыми полученными данными
    
$query "SELECT * FROM users WHERE name='$_SESSION[name]' AND id <> '$id'";
    
$result mysql_query($query);
    
$numrows mysql_num_rows($result);
    if (
$numrows 1) {
    
$_POST['pass'] = md5($_POST['pass']);
    
$query "UPDATE users SET icq = '$_POST[icq]', url = '$_POST[url]', email = '$_POST[email]' WHERE id = '$id'";
    
$result mysql_query($query);
          if (
$result == 1) {
              echo 
"<b>Изменения сохранены</b>";
              echo 
"<HTML><HEAD>
              <META HTTP-EQUIV='Refresh' CONTENT='0; URL='
$_SERVER[REQUEST_URI]'>
              </HEAD></HTML>"
;
          } else {
          print 
"Ошибка!Изменения не приняты<br>\n";
        }
     }
     }
?>

   
Rambler's Top100
вверх

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