|
|
|
| Я скоро топать ногами буду от баг. Вот опять ничего не получается не работает функция
function chek_reg2()
{
global $name, $email, $pass, $pass2,$sql_res;
sql_connect();
$sql_query="select * from users where name_user = '".$_POST["name"]."'";
sql_execute();
if (mysql_num_rows($sql_res)==1) { print_error(7); $error=1;}
$sql_query="select * from users where email_user = '".$_POST["email"]."'";
sql_execute();
if (mysql_num_rows($sql_res)==1) { print_error(8); $error=1;}
sql_close();
}
|
Выдает вот что
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:\home\portal.ru\www\includ\chek.php on line 39
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:\home\portal.ru\www\includ\chek.php on line 42
|
| |
|
|
|
|
|
|
|
для: Sin
(08.11.2004 в 23:17)
| | Хм... Тут запросто так не скажешь в чём дело так как переменные опеределны как глобальные - судя по всему где-то не в дебрях функции sql_execute() не срабатывае mysql_query()... Нужно содержимое этой функции чтобы сказать более определённо - в этом заключается недостаток глобальных переменных - возрастает сложность отладки кода. | |
|
|
|
|
|
|
|
для: cheops
(08.11.2004 в 23:31)
| | Вот они все функции
function sql_connect()
{
global $conn_id;
$conn_id=mysql_connect($GLOBALS["sql_host"],$GLOBALS["sql_login"],$GLOBALS["sql_password"]);
mysql_select_db($GLOBALS["sql_database"]);
if (!$conn_id)
{
echo( "<P>Там что то.</P>" );
exit();
}
}
function sql_execute()
{
global $sql_res, $sql_err;
$sql_res=mysql_query($GLOBALS["sql_query"],$GLOBALS["conn_id"]);
$sql_err=mysql_error();
}
function sql_close()
{
mysql_close($GLOBALS["conn_id"]);
}
|
| |
|
|
|
|
|
|
|
для: Sin
(09.11.2004 в 16:38)
| | Попробуйте исправить функцию sql_execute() следующим образом:
<?php
function sql_execute()
{
global $sql_res, $sql_err;
$sql_res=mysql_query($GLOBALS["sql_query"],$GLOBALS["conn_id"]);
if(!$sql_res)
{
echo "Ошибка при выполнении SQL-запроса - ".mysql_query();
}
$sql_err=mysql_error();
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(09.11.2004 в 21:17)
| | Ага сделал и опять вылезло куча ошибок. И я решил переделать все, ну или почти все. Вот переделал так в один запрос.
<?php
sql_connect();
if($name&&$email)
{
$sql_query="select * from users where name_user = '".$name."' or email_user = '".$email."'";
sql_execute();
if (mysql_num_rows($sql_res)==1) { print_error(7);}
else { $sql_query="insert into users set name_user='".$_POST['name']."', password_user=md5('".$_POST['pass']."'), email_user='".$_POST['email']."', site_user='".$_POST['url']."', isq_user='".$_POST['icq']."'";
sql_execute(); }
}
sql_close();
if($sql_res) {print_err(44);}
if($sql_err) print_err(11);
?>
|
И теперь работает. Просто раньше хотелось чтобы на ошибку емайла выдовалась одна ошибка, а имени другая. А теперь сделал все вместе. Так можно - это професионально или тяп ляп? | |
|
|
|
|
|
|
|
для: Sin
(09.11.2004 в 23:07)
| | Профессионализм определяется тем, можете вы (другой человек) разобраться в приложении через пол года или вам легче написать всё поновой... | |
|
|
|
|
|
|
|
для: cheops
(09.11.2004 в 23:17)
| | А-а-а. Вон оно как. Я тут немного подправил
<?phpif($name&&$email)
{
$sql_query="select * from users where name_user = '".$name."' or email_user = '".$email."'";
sql_execute();
if (mysql_num_rows($sql_res)==1) { print_error(7);}
else { $sql_query="insert into users set name_user='".$_POST['name']."', password_user=md5('".$_POST['pass']."'), email_user='".$_POST['email']."', site_user='".$_POST['url']."', isq_user='".$_POST['icq']."'";
sql_execute(); }
}
sql_close();
if($sql_err) print_err(11);
if($sql_res) {print_err(44);}
$_SESSION['username']= $name;?>
|
Я сомневаюсь на счет сесии стоит ее там ставить или лучше перед проверкой запроса поставить. Просто дело в том что при
if($sql_err) print_err(11);
if($sql_res) {print_err(44);}
| Умен происходит автоматическая перекидка в начало регистрации и на гланую страницу соответственно. Но ссесия работает. Вопрос в том можно ли так делать? | |
|
|
|
|
|
|
|
для: Sin
(09.11.2004 в 23:26)
| | Если у тебя сессия инициализировалась в начале файла, то ты после сообщения об ошибке напиши:
session_destroy();
Только это надо делать до переправки на главную или страницу регистрации. | |
|
|
|