[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите новичку , плиз !
Domin
Вот код

<?php
include ("block/bd.php");
$login = mysql_query ('SELECT login FROM user',$db);

$existing_users = mysql_fetch_array($login);
$user_login = $_POST['user_login'];

if ($user_login == $existing_users)
{
//юзер недоступен
echo "no";
}
else
{
//доступен
echo "yes";
}

?>


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



Спустя 5 минут, 32 секунды (17.01.2010 - 14:39) ApuktaChehov написал(а):
А ты посмотри что возвращает $existing_users
И если $user_login содержит то, что ввел пользователь, то почему она не фигурирует в запросе?

Спустя 1 минута, 49 секунд (17.01.2010 - 14:41) Гость666 написал(а):
Domin
Оптимальный способ не смогу подсказать, но проблема в регистрах. Например сравнить - Логин и логин! При поиске они не являются равными, так как регистры у них разные. Для начало попробуй вытащить все логины и проверить их без учета регистра со своим логином

Спустя 7 минут, 16 секунд (17.01.2010 - 14:48) Domin написал(а):
Было изначально

<?php
//это переменная содержит имена существующих пользователей
$existing_users=array('roshan','mike','jason');
$user_name=$_POST['user_name'];
//проверка существует ли пользователь в массиве $existing_users
if (in_array($user_name, $existing_users))
{
//юзер недоступен
echo "no";
}
else
{
//доступен
echo "yes";
}
?>

мне нужно проверить не из $existing_users=array('roshan','mike','jason'); а из базы , пробывал 2 часа мудрил так и ничего не сделал .

Спустя 4 минуты, 30 секунд (17.01.2010 - 14:53) ApuktaChehov написал(а):
Смотри как можно делать:
Вот твой запрос:
$login = mysql_query ('SELECT login FROM user',$db)

Если $user_login содержит логин пользователей, то можно сделать так:

$login = mysql_query ("SELECT * FROM user WHERE login = '".mysql_real_escape_string($user_login)."'",$db)

Спустя 1 минута, 15 секунд (17.01.2010 - 14:54) sergeiss написал(а):
Domin - где-то я этот код уже видел... Наверное, тут на форуме, приходили люди и спрашивали, что тут "не так" smile.gif

А "не так" тут всё:
1. Ты выбираешь все строки из таблицы, и для сравнения берешь только первую из них. Где у тебя в запросе ограничения, связанные именно с определенным юзером?
2. mysql_fetch_array возвращает вовсе не то, что ты думаешь. Потому что там есть целый массив, даже если он состоит из одного элемента. И ты пытаешься сравнить некую величину с массивом. Естественно, это сравнение всегда будет ложным, и у тебя будет выбираться блок ELSE.
3. И просьба - при создании темы давать более осмысленное название! Прочитай Правила форума!

PS. Пока писал, на часть проблем указали уже. Но не на все.

Спустя 3 минуты, 3 секунды (17.01.2010 - 14:57) Domin написал(а):
Цитата
$login = mysql_query ("SELECT * FROM user WHERE login = '".mysql_real_escape_string($user_login)."'",$db)

Некатит всеравно выдаёт что логин доступен для реги !

Скажу проще нужно $user_name=$_POST['user_name']; (что было введено в форму ) проверить существует ли такой логин в базе .

Спустя 3 минуты, 44 секунды (17.01.2010 - 15:01) arlamar написал(а):
пока писал ответ, уже тему раскрыли
поэтому кратко)

mysql_real_escape_string($user_login) это хорошо
но делал ли он это когда заливал в базу?

да и вообще по моему тут нужна не помощь а полностью готовый скрипт...

Спустя 1 минута (17.01.2010 - 15:02) sergeiss написал(а):
Цитата (Domin @ 17.01.2010 - 15:57)
Некатит всеравно выдаёт что логин доступен для реги !

А ты для этого перенёс определение переменной $user_login выше строки, формирующей запрос к БД?

Спустя 2 минуты, 1 секунда (17.01.2010 - 15:04) Domin написал(а):
Цитата
А ты для этого перенёс определение переменной $user_login выше строки, формирующей запрос к БД?

Перенёс , толку нет !

<?php
include ("block/bd.php");
$user_login = $_POST['user_login'];
$login = mysql_query ("SELECT * FROM user WHERE login = '".mysql_real_escape_string($user_login)."'",$db)
//это переменная содержит имена существующих пользователей
$existing_users = mysql_fetch_array($login);
//проверка существует ли пользователь в массиве $existing_users
if ($user_login == $existing_users)
{
//юзер недоступен
echo "no";
}
else
{
//доступен
echo "yes";
}

?>

Спустя 2 минуты, 34 секунды (17.01.2010 - 15:06) sergeiss написал(а):
Перенёс - это хорошо.
Цитата (Domin @ 17.01.2010 - 16:04)
if ($user_login == $existing_users)

А вот это оставил, хотя я тебе чуть ранее прямым текстом сказал, что это - неверно!!!!!!!!!!!!!!!!!

Спустя 1 минута, 49 секунд (17.01.2010 - 15:08) arlamar написал(а):
думаю ты не использовал mysql_real_escape_string() при реге
поэтому следующий код должен работать
include ("block/bd.php");
$user_login = $_POST['user_login'];
$login = mysql_query ("SELECT * FROM user WHERE login = '$user_login'",$db);
if (mysql_num_rows($login)) {
//юзер недоступен
echo "no";
} else {
//доступен
echo "yes";
}

Спустя 38 секунд (17.01.2010 - 15:09) Platinum написал(а):
А если так?


$existing_users = mysql_fetch_array($login);
$user_login = "your_login"; // существующий логин

или если не прокатит попробуй в цикле выведи все логины из базы и сравни их, может правда регистр разный

Спустя 3 минуты, 44 секунды (17.01.2010 - 15:12) Domin написал(а):
Походу некто ничего непонял , это проверка доступности имени пользователя после ввода логина , там скрипт обращяется к этому PHP файлу в нём надо сравнить введённый логин со всеми логинами в базе и выдать сразу результат !

Спустя 3 минуты, 24 секунды (17.01.2010 - 15:16) Domin написал(а):
arlamar большое тебе спасибо , всё заработало . Спасибо всем что помогли !!! Огромное !!!

Спустя 2 минуты, 47 секунд (17.01.2010 - 15:19) sergeiss написал(а):
Цитата (Domin @ 17.01.2010 - 16:12)
Походу некто ничего непонял

"Некто" - это кто? wink.gif

arlamar правильно сказал, что можно просто количество строк посмотреть. Можно даже сразу в запросе получить это количество, а не сами строки.

Но я так и не понял: ты видишь ту ошибку, про которую я говорил, про некоректность сравнения? Если ты ее поймешь сейчас, то не будешь делать в дальнейшем.

Спустя 2 минуты, 15 секунд (17.01.2010 - 15:21) arlamar написал(а):
без проблем)
только вот тебе совет:
в скрипте регистрации сделай что бы перед тем как занести в базу login
он обработался mysql_real_escape_string()
и при проверке надо будет изменить
$user_login = $_POST['user_login'];
на
$user_login = mysql_real_escape_string($_POST['user_login']);

иначе ввод например такого логина: log'in вышибет твой скрипт))

Спустя 10 минут, 30 секунд (17.01.2010 - 15:31) cyberx написал(а):
Domin

Просто в место
if ($user_login == $existing_users)


укажи
if ($user_login == $existing_users['login'])


если писать $existing_users то он возвращает array. Укажи что тебе логин нужен

Спустя 3 минуты, 44 секунды (17.01.2010 - 15:35) Domin написал(а):
Я ток недавно начал пхп изучать делаю всё по урокам разным ! arlamar мне не для реги надо , регу я ещё не писал !
Мне просто над было сделать вот так
user posted image

И теперь обратно лажа теперь уже со вторым полем (((

Спустя 3 минуты, 38 секунд (17.01.2010 - 15:39) Domin написал(а):
cyberx некатит так ((


Вобще мне просто надо было сравнить введённый логин со всеми логинами в базе и всё .

Спустя 2 минуты, 17 секунд (17.01.2010 - 15:41) Adil написал(а):
Цитата (Domin @ 17.01.2010 - 16:35)
И теперь обратно лажа теперь уже со вторым полем (((

Эмммм.. а в чем проблема то?

Спустя 4 минуты, 37 секунд (17.01.2010 - 15:46) cyberx написал(а):
Значит еще где то ошибка. После этого

$login = mysql_query ('SELECT login FROM user',$db);
$existing_users = mysql_fetch_array($login);

сделай echo $existing_users; и получишь array, если так echo $existing_users['login']; то сам логин

Спустя 1 минута, 44 секунды (17.01.2010 - 15:47) arlamar написал(а):
не надо путать человека))

Domin, как называются те 2 поля в базе и как они в пост приходят?

Спустя 5 секунд (17.01.2010 - 15:47) Domin написал(а):
Так вроде норм всё щя буду дальше делать , туплю уже чучуть (((

Спустя 2 минуты, 21 секунда (17.01.2010 - 15:50) Domin написал(а):
Цитата
Domin, как называются те 2 поля в базе и как они в пост приходят?


1 поле login
2 поле name

Спустя 4 минуты, 45 секунд (17.01.2010 - 15:55) arlamar написал(а):
я имел ввиду все поля которые нужно проверить на уникальность... первое поле уже проверили ещё 2 ты сказал вроде

и как они в пост приходят тоже напиши

Спустя 3 минуты, 29 секунд (17.01.2010 - 15:58) Domin написал(а):
Второе поле сделал так-же

  include ("block/bd.php");
$user_name = $_POST['user_name'];
$name = mysql_query ("SELECT * FROM user WHERE name = '$user_name'",$db);
if (mysql_num_rows($name)) {
//юзер недоступен
echo "no";
}
else {
//доступен
echo "yes";
}


всё начало работать , теперь делаю Email также

  include ("block/bd.php");
$user_email = $_POST['user_email'];
$email = mysql_query ("SELECT * FROM user WHERE email = '$user_email'",$db);
if (mysql_num_rows($email)) {
//юзер недоступен
echo "no";
}
else {
//доступен
echo "yes";
}

и тупит чёто обратно .

Спустя 7 минут, 42 секунды (17.01.2010 - 16:06) Domin написал(а):
Вот сам скрипт
<script language="javascript">

$(document).ready(function()
{
$("#user_email").blur(function()
{
$("#2msgbox").removeClass().addClass('messagebox').text('Проверка...').fadeIn("slow");
//Проверить существует ли имя
$.post("user_availability2.php",{ user_email:$(this).val() } ,function(data)
{
if(data=='no') //если имя не доступно
{
$("#2msgbox").fadeTo(200,0.1,function() //начнет появляться сообщение
{
$(this).html('Этот E-mail уже занят').addClass('messageboxerror').fadeTo(900,1);
});
}
else
{
$("#2msgbox").fadeTo(200,0.1,function()
{
//тут прописывается сообщение о доступности имени
$(this).html('E-mail доступен для регистрации').addClass('messageboxok').fadeTo(900,1);
});
}

}
);

});
});
</script>

Спустя 1 час, 21 минута, 9 секунд (17.01.2010 - 17:27) Domin написал(а):
Всё разобрался ! Ещё раз спасибо всем что помогли !
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.