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

Форум MySQL

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

 

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

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

тема: Проверка логина в базе данных
 
 автор: alex123434   (15.02.2008 в 18:02)   письмо автору
 
 

Народ помогите разобраться! Сляпал я код для проверки логина в БД. Но так как я еще толком ПХП не знаю прошу помощи: при большой БД скрипт виснет, может есть другой способ?
include "conf.php";//Соединяемся с БД
//поиск сходных логинов в таблице
$res=mysql_query("SELECT * FROM log WHERE login = $logain"); 
if($res){
echo "Такой логин уже есть";}
else {echo "Запись занесена";
//Добавление записи в таблицу
mysql_query("INSERT INTO log VALUES ($log, $pass,$e_mail)", $msconnect); 
mysql_close($msconnect); //Закрыть подключение 

   
 
 автор: tim333   (15.02.2008 в 18:23)   письмо автору
 
   для: alex123434   (15.02.2008 в 18:02)
 


include "conf.php";//Соединяемся с БД 
//поиск сходных логинов в таблице 
$res=mysql_query("SELECT * FROM log WHERE login = $logain");  
$res = mysql_fetch_array($res);
if($res){ 
echo "Такой логин уже есть";} 
else {echo "Запись занесена"; 
//Добавление записи в таблицу 
mysql_query("INSERT INTO log VALUES ($log, $pass,$e_mail)", $msconnect);  }
mysql_close($msconnect); //Закрыть подключение 

пробуй)

   
 
 автор: alex123434   (15.02.2008 в 18:34)   письмо автору
 
   для: tim333   (15.02.2008 в 18:23)
 

А можно пояснить, как из за этого увеличится скорость поиска?

   
 
 автор: tim333   (15.02.2008 в 18:39)   письмо автору
 
   для: alex123434   (15.02.2008 в 18:34)
 

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

include "conf.php";//Соединяемся с БД  
//поиск сходных логинов в таблице  
$res=mysql_query("SELECT * FROM log WHERE login = $logain;");   
$res = mysql_fetch_array($res); 
if($res){  
echo "Такой логин уже есть";}  
else {echo "Запись занесена";  
//Добавление записи в таблицу  
mysql_query("INSERT INTO log VALUES ($log, $pass,$e_mail)", $msconnect);  } 
mysql_close($msconnect); //Закрыть подключение 


Вы сначало проверте работоспособность этого.....
Насчет скорости зависит от таблицы....виснуть недолжно , это и так самое простое.

   
 
 автор: alex123434   (15.02.2008 в 18:55)   письмо автору
 
   для: tim333   (15.02.2008 в 18:39)
 

На счет ошибок не знаю, но код работал нормально. Просто я попробывал занести в БД 1000 записей и при запросе логина сервер выдавал тайм аут.
зы 1000 записей заносил в цикле не подумайте что в ручную :)

   
 
 автор: tim333   (15.02.2008 в 19:04)   письмо автору
 
   для: alex123434   (15.02.2008 в 18:55)
 

1000 записей для такого запроса это немного, недолжен он больше полуминуты это делать(конечно все от сервера зависит), если вышел тайм аут значит гдето чтото неправильно , скорея всего такое происходит не по причине неуспеваемости Mysql обработать всего 1000 записей а ошибке в коде.
Вы провиряли что стало с таблицей после скрипта?
И если нетрудно выложите код с циклом.

   
 
 автор: alex123434   (15.02.2008 в 19:07)   письмо автору
 
   для: tim333   (15.02.2008 в 19:04)
 

Трудно. Скрипт оставил на другом компе он выключен, а я в другом городе.

   
 
 автор: tim333   (15.02.2008 в 19:15)   письмо автору
 
   для: alex123434   (15.02.2008 в 19:07)
 

Напишите новый.


include "conf.php";//Соединяемся с БД   
//поиск сходных логинов в таблице   

$a=mysql_query("SELECT xxx_поле_с_логином FROM xxx_таблица;");   
while($b = mysql_fetch_array($a)){
$logain=$b[0];
$res=mysql_query("SELECT * FROM log WHERE login = $logain;");    
$res = mysql_fetch_array($res);  
if($res){   
echo "Такой логин уже есть";}   
else {echo "Запись занесена";   
//Добавление записи в таблицу   
mysql_query("INSERT INTO log VALUES ($log, $pass,$e_mail)", $msconnect);  }  }

mysql_close($msconnect); //Закрыть подключение 


Вот пример цикла который добавляет пользователя с логином xxx_поле_с_логином из таблицы xxx_таблица если такого логина нет в таблице log.

   
 
 автор: alex123434   (15.02.2008 в 19:24)   письмо автору
 
   для: tim333   (15.02.2008 в 19:15)
 

Сейчас попробую, тока БД создам, а то все на том компе осталось.

   
 
 автор: tim333   (15.02.2008 в 19:27)   письмо автору
 
   для: alex123434   (15.02.2008 в 19:24)
 

ага и таблицу xxx_таблица с полем xxx_поле_с_логином и внести туда сколько хотите записей

   
 
 автор: alex123434   (15.02.2008 в 19:38)   письмо автору
 
   для: tim333   (15.02.2008 в 19:27)
 

Заносит записи даже если есть совпадения

   
 
 автор: tim333   (15.02.2008 в 19:51)   письмо автору
 
   для: alex123434   (15.02.2008 в 19:38)
 

тогда так

include "conf.php";//Соединяемся с БД    
//поиск сходных логинов в таблице    

$a=mysql_query("SELECT xxx_поле_с_логином FROM xxx_таблица;");    
while($b = mysql_fetch_array($a)){ 
$logain=$b[0]; 
$res=mysql_query("SELECT * FROM log WHERE login = $logain;");     
$res2 = mysql_fetch_array($res);   
if($res2[login]!=""){    
echo "Такой логин уже есть";}    
else {echo "Запись занесена";    
//Добавление записи в таблицу    
mysql_query("INSERT INTO log VALUES ($log, $pass,$e_mail)", $msconnect);  }  } 

mysql_close($msconnect); //Закрыть подключение 

   
 
 автор: alex123434   (15.02.2008 в 20:21)   письмо автору
 
   для: tim333   (15.02.2008 в 19:51)
 

Сейчас попробую

   
 
 автор: alex123434   (15.02.2008 в 21:36)   письмо автору
 
   для: alex123434   (15.02.2008 в 20:21)
 

Блина никак не получается.
Можа по другому как?
Нашел код
<?php 
if(!$_Q mysql_query("select template from TABLE_NAME where name = 'reg_mail' limit 1")) 

    exit(
mysql_error()); 

list(
$template) = mysql_fetch_row($_Q)); 
?> 
пробывал подстроить под свой ни как, невров не хватает, замудохался.
Ну помогите, что ли!!!(пжалуста)

   
 
 автор: tim333   (15.02.2008 в 21:42)   письмо автору
 
   для: alex123434   (15.02.2008 в 21:36)
 

все у вас должно работать

include "conf.php";//Соединяемся с БД     
//поиск сходных логинов в таблице     

$a=mysql_query("SELECT xxx_поле_с_логином FROM xxx_таблица;");     
while($b = mysql_fetch_array($a)){  
$logain=$b[0];  
$res=mysql_query("SELECT * FROM log WHERE login = $logain;");      
$res2 = mysql_fetch_array($res);    
if($res2[login]!=""){     
echo "Такой логин уже есть";}     
else {echo "Запись занесена";     
//Добавление записи в таблицу     
$с=mysql_query("INSERT INTO log VALUES ($log, $pass,$e_mail);");  }  }  

mysql_close($msconnect); //Закрыть подключение 

   
 
 автор: alex123434   (15.02.2008 в 21:59)   письмо автору
 
   для: tim333   (15.02.2008 в 21:42)
 

Ну ни как я блин голова кыпит
Тим333 помоги!
Вот что есть:

имя таблицы = log
3 поля (login, password, mail)
из формы регистрации приходят 3 переменные ($logain, $pass, $e_mail)

Можа ошибки в коде? Можа дело не в бабине...
Тим333 помоги!!!

   
 
 автор: tim333   (15.02.2008 в 22:40)   письмо автору
 
   для: alex123434   (15.02.2008 в 21:59)
 

Что такое бабене?)

include "conf.php";

$res=mysql_query("SELECT count(*) FROM log WHERE login = '$logain';");       
$res2 = mysql_fetch_array($res);     
if($res2[0]>0){      
echo "Такой логин уже есть";}else{
echo "Запись занесена";      
//Добавление записи в таблицу      
$с=mysql_query("INSERT INTO log VALUES ('$logain','$pass','$e_mail');");  
}
mysql_close($msconnect); //Закрыть подключение 


100% должно работать)

P.S там при добавлении в форму была переменая $log а не $logain.Возможно создавалась пустое поле......хотя хз. Должно все работать.

   
 
 автор: Faraon   (15.02.2008 в 22:03)   письмо автору
 
   для: alex123434   (15.02.2008 в 18:02)
 

Наверно вам надо следующее
<?php
 
include "conf.php";

$res=mysql_query("SELECT * FROM log WHERE login = '$logain'");
if(
mysql_num_rows($res)>0){
echo 
"Такой логин уже есть";
}
else{
mysql_query("INSERT INTO log VALUES ('$log', '$pass','$e_mail')"$msconnect);
mysql_close($msconnect);
    echo 
"Save Ok";
}
?>

   
 
 автор: alex123434   (15.02.2008 в 22:11)   письмо автору
 
   для: Faraon   (15.02.2008 в 22:03)
 

В независимости от того есть ли такой логин или нет пишет:Такой логин уже есть
И выдает ошибку в 5 строке (if(mysql_num_rows($res)>0){ )

   
 
 автор: Faraon   (15.02.2008 в 22:27)   письмо автору
 
   для: alex123434   (15.02.2008 в 22:11)
 

>И выдает ошибку в 5 строке (if(mysql_num_rows($res)>0){ )
И какую ошибку выдает?

P.S.
>В независимости от того есть ли такой логин или нет пишет:Такой логин уже есть

Без моего вопроса, в данном моменте могу сказать, что такой логин есть!

   
 
 автор: alex123434   (15.02.2008 в 22:42)   письмо автору
 
   для: Faraon   (15.02.2008 в 22:27)
 

Ооооогромное спасибо все работает! :)))))

   
Rambler's Top100
вверх

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