[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Warning: mysql_fetch_assoc()
_Dimarik__
вот часть кода, которая проверяет e-mail на уникальность.

//проверка на уникальность
function checkMail()
{
if($this->is_required || !empty($this->value))
{
$pattern = "#^[-0-9a-z_\.]+@[0-9a-z_^\.]+\.[a-z]{2,6}$#i";
if (!preg_match($pattern, $this->value))
{
return "Введите e-mail в виде, аналогичном этому: <i>some@some.com</i><br> Вернитесь на предыдущую страницу и повторите попытку зарегестрироваться";
}

}

//проверка на уникальность
$resultMail = mysql_query("SELECT Mail FROM userlist WHERE Name='$objMail->value';");
$mail_array = mysql_fetch_assoc($resultMail);
print_r($resultMail );
print_r("654" );
print_r($mail_array );
$userMail = $mail_array[0];
if($userMail == $objMail->value)
exit ("Пользователь с таким e-mail адресом уже зарегестрирован.<br> Вернитесь на предыдущую страницу и повторите попытку зарегестрироваться");
}

вот такая ошибка выскакивает
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\class.field_text.php on line 121
654Пользователь с таким e-mail адресом уже зарегестрирован.
Вернитесь на предыдущую страницу и повторите попытку зарегестрироваться


Но почему-то когда вводишь в поле e-mail что-то типа этого: русские@символы.ru, пишет что всё ок и что мы зарегались. Даже когда по нескольку раз вводишь этот кривой русский адрес. Но когда по нескольку раз вводишь этот адрес, никакого Warring не возникает и он не пишет о том что пользователь с таким мылом уже зареган. как это дело исправить?



Спустя 4 минуты, 23 секунды (24.07.2010 - 22:18) Basili4 написал(а):
$resultMail = mysql_query("SELECT Mail FROM userlist WHERE Name='$objMail->value';");
до пиши or die(mysql_error()); будет тебе ошибка её и приведи

Спустя 12 минут, 9 секунд (24.07.2010 - 22:30) _Dimarik__ написал(а):
не выводит ничего!

Спустя 1 минута, 20 секунд (24.07.2010 - 22:32) _Dimarik__ написал(а):
$resultMail = mysql_query("SELECT Mail FROM userlist WHERE Name='$objMail->value';")or die(mysql_error());
$mail_array = mysql_fetch_assoc($resultMail)or die(mysql_error());
print_r($resultMail );
print_r("654" );
print_r($mail_array );
$userMail = $mail_array[0];
if($userMail == $objMail->value)
exit ("Пользователь с таким e-mail адресом уже зарегестрирован.<br> Вернитесь на предыдущую страницу и повторите попытку зарегестрироваться");

Спустя 1 минута, 10 секунд (24.07.2010 - 22:33) _Dimarik__ написал(а):
Что-то ещё с регулярным вырежением связано, коль когда я ввожу еврейский адрес с русскими символами, он никакой ошибки не выдаёт и хоть 100 раз его введи, ничего не напишет. а когда я нормальный латинский адрес ввожу он нормально работает, но Warning пишет

Спустя 3 минуты, 31 секунда (24.07.2010 - 22:36) Basili4 написал(а):
$resultMail = mysql_query("SELECT count(*) FROM userlist WHERE Name='$objMail->value'") or die(mysql_error()); // Если ахтунг будет ашиПка
$mail_array = mysql_fetch_row($resultMail);
if ($mail_array[0]>0)
// тот код который был на бок его
exit ("Пользователь с таким e-mail адресом уже зарегестрирован.<br> Вернитесь на предыдущую страницу и повторите попытку зарегестрироваться"
else
//Четам дальше все нормально мыла такого нет

Спустя 3 минуты, 55 секунд (24.07.2010 - 22:40) Basili4 написал(а):
^[-._a-z0-9]+@(?:[a-z0-9][-a-z0-9]+\.)+[a-z]{2,6}$ вот регулярка проверяющая мыло

ну а это чтоб моск вскипел эта регулярка проверки
Emaila на соответствие RFC822 http://ex-parrot.com/~pdw/Mail-RFC822-Address.html

Спустя 11 минут (24.07.2010 - 22:51) Ice написал(а):
Экранировать надо $objMail->value. Говорил уже. В одно ухо влетело в другое вылетело

Спустя 1 минута, 29 секунд (24.07.2010 - 22:53) Basili4 написал(а):
Ice
$v=$objMail->value;
$resultMail = mysql_query("SELECT Mail FROM userlist WHERE Name='$v';")or die(mysql_error());

мож тогда так ?

Спустя 19 минут, 38 секунд (24.07.2010 - 23:12) Ice написал(а):
Цитата (Basili4 @ 24.07.2010 - 23:53)
мож тогда так ?

$resultMail = mysql_query("SELECT Mail FROM userlist WHERE Name='{$objMail->value}';")or die(mysql_error());

P.S.: Здешний редактор отображает экранирование неправильно.

Спустя 1 час, 21 минута, 36 секунд (25.07.2010 - 00:34) _Dimarik__ написал(а):
Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in C:\wamp\www\class.field_text.php on line 113
а вот так можно?
^[-._a-z0-9]+@{1}[a-z0-9][-a-z0-9]+\.[a-z]{2,6}$ - так можно регулярку написать?
я не очень понимаю в регулярных выражениях. то выражение, которое я написал, я взял из книжки. что значит ?: в регулярках? и почему после собаки скобка
^[-._a-z0-9]+@(?:[a-z0-9][-a-z0-9]+\.)+[a-z]{2,6}$
можэно ли сделать так как я в это сообщении выше написал?

Спустя 2 минуты, 47 секунд (25.07.2010 - 00:37) _Dimarik__ написал(а):
 if(($this->is_required) || (!empty($this->value)))
{
$pattern = "^[-._a-z0-9]+@(?:[a-z0-9][-a-z0-9]+\.)+[a-z]{2,6}$";
if (!preg_match($pattern, $this->value))
{
exit ("Введите e-mail в виде, аналогичном этому: <i>some@some.com</i><br> Вернитесь на предыдущую страницу и повторите попытку зарегестрироваться");
}

}

тут я нашёл ошибку. return на exit поменял. Теперь русскую белеберду не пропускает. Но всё ещё есть. Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in C:\wamp\www\class.field_text.php on line 113
P.S. вот никак не могу понять. есть разница между die и exit или нет?

Спустя 10 минут, 30 секунд (25.07.2010 - 00:47) _Dimarik__ написал(а):
даааа. в регулярке собака зарыта. теперь у меня на всё ругается

Спустя 3 минуты, 10 секунд (25.07.2010 - 00:50) _Dimarik__ написал(а):
Basili4, сделал как ты мне сказал! на ВСЁ ругается!

	 if(($this->is_required) || (!empty($this->value)))
{
$pattern = "^[-._a-z0-9]+@(?:[a-z0-9][-a-z0-9]+\.)+[a-z]{2,6}$";
if (preg_match($pattern, $this->value) == 0)
{
exit ("Введите e-mail в виде, аналогичном этому: <i>some@some.com</i><br> Вернитесь на предыдущую страницу и повторите попытку зарегестрироваться");
}

}

Спустя 5 часов, 11 минут, 37 секунд (25.07.2010 - 06:02) twin написал(а):
Если версия PHP>=5.2.0, сделай так и не мучайся:
    if($this->is_required || !empty($this->value))
{
if (!filter_var($this->value, FILTER_VALIDATE_EMAIL))
exit ("Введите e-mail в виде, аналогичном этому: <i>some@some.com</i><br> Вернитесь на предыдущую страницу и повторите попытку зарегестрироваться");
}

Кстати, нафиг столько скобок? В глазах рябит...
Быстрый ответ:

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