ошибка в коде, понять где - не позволяют мои знания и умения

nevka

Новичок
Задача стоит такая:
Пользователи регистрируются на сайте. Администратор сайта просматривает их, и благонадежных перемещает в определенную группу пользователей. Данные все хранятся в одной таблице.
Если пользователь не зарегистрирован - "просьба зарегистрироваться....."
Если зарегистрирован и перемещен в благонадежную группу - "имеет право просмотреть информацию......"
Иначе (то есть пользователь зарегистрирован, но еще не перемещен в нужную группу ) - "Ваши данные проверяются...."

Написала следующий код:
PHP:
$sdd_db_host='localhost';
$sdd_db_name='имя-базы';
$sdd_db_user='имя-пользов';
$sdd_db_pass='пароль';
$baza=mysql_connect($sdd_db_host,$sdd_db_user,$sdd_db_pass);
mysql_select_db($sdd_db_name);

$result_customer=mysql_query("SELECT customer_id FROM customer WHERE customer_group_id = '2'", $baza);
$row_customer=mysql_fetch_array($result_customer));

if (($row_customer['customer_id'] == htmlspecialchars($_SESSION["customer_id"])) && (isset($_SESSION['customer_id']) && !empty($_SESSION ['customer_id']))){
$result=mysql_query("SELECT * FROM download INNER JOIN (download_description INNER JOIN product_to_download USING(download_id)) USING(download_id) WHERE product_id = '73'", $baza);
while($row=mysql_fetch_array($result))
{	
echo " ......................";
}
}
elseif (($row_customer['customer_id'] != htmlspecialchars($_SESSION["customer_id"])) && (isset($_SESSION['customer_id']) && !empty($_SESSION ['customer_id']))){
echo "Данная страница проверяется модератором";
}
else {
echo "Воспользоваться данной страницей Вы сможете после регистрации или зайдите в Личный кабинет";
}
в результате выходит пустая страница....
Это, можно сказать, мой первый осмысленный код, прошу отнестись ко мне с терпением. Жду помощи. намучилась ужасно,
 

Фанат

oncle terrible
Команда форума
В этом коде содержится синтаксическая ошибка, которую хорошо видно благодаря подсветке кода на форуме.
Поэтому в первую очередь надо настроить свой сервер так, чтобы видеть ошибки.
 

Фанат

oncle terrible
Команда форума
Насчет осмысленности есть сомнения.
Сначала выбираем случайный customer_id, а потом сравниваем его с сохраненным в сессии
я не вижу в этом большого смысла
 

nevka

Новичок
синтаксическая ошибка заключалась в пропуске кавычки?, я ее исправила, и она связана с перемещением кода в данное сообщение, код с echo редактировала, чтоб код меньше места занимал
ваш сарказм понятен....
возможно, что вся моя логика в коде не правильна....
а в чем нет смысла? как можно реализовать данную задачу?
 

Фанат

oncle terrible
Команда форума
да при чем здесь сарказм.
надо запросить из базы группу этого кастомера. подставив его айди в запрос.
и на основании полученной группы уже решать, что дальше
 

nevka

Новичок
Спасибо, за ответ!

то есть так:
PHP:
$result_customer=mysql_query("SELECT customer_id FROM customer WHERE customer_group_id = '2' AND customer_id = $_SESSION['customer_id']", $baza);
щаз попробую
 

Фанат

oncle terrible
Команда форума
зачем группа-то в условии?
а айди зачем запрашивать? он же нам и так известен.
наоборот - группу надо запрашивать
 

nevka

Новичок
PHP:
$result_customer=mysql_query("SELECT * FROM customer WHERE customer_id = $_SESSION['customer_id']", $baza);
так?
мда... все дело в логике....
 

Фанат

oncle terrible
Команда форума
вот в этом коде уже точно 100% ошибка синтаксиса
 

nevka

Новичок
Господин, Фанат!
надо $_SESSION['customer_id'] взять в кавычки?
то есть
PHP:
$result_customer=mysql_query("SELECT * FROM customer WHERE customer_id='$_SESSION['customer_id']'", $baza);
 

Фанат

oncle terrible
Команда форума
Ну, например, если не растягивать код, как резинку от трусов
PHP:
$sql = "SELECT * FROM customer WHERE customer_id=".$_SESSION['customer_id'];
$res = mysql_query($sql);
 

nevka

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

вот от радости начала писала код.... а куда втыкать то проверку на группу? и как?

PHP:
if($res['customer_group_id'] == "номер группы") 
{
.....}
так?
заранее признательна за ответ
 

nevka

Новичок
попробовала так как выше вам написала
сверять по номеру группы программа не желает. в данный момент 2 группы. пользователям обоих групп сообщает, что страница модерируется....

а когда нет посетителей выходит сообщение что кастемер не определен, а именно (Undefined index: customer_id in ............)
 

nevka

Новичок
еще чуточку поправила код:
PHP:
	$sdd_db_host='localhost';
	$sdd_db_name=' ';
	$sdd_db_user=' ';
	$sdd_db_pass=' ';
	$baza=mysql_connect($sdd_db_host,$sdd_db_user,$sdd_db_pass);
	mysql_select_db($sdd_db_name);

	$sql = "SELECT * FROM customer WHERE customer_id=".$_SESSION['customer_id'];
	$result_customer = mysql_query($sql); 
	$result_customer_array = mysql_fetch_array($result_customer);
	
	if ($result_customer_array['customer_group_id'] != 2){
		echo "Данная страница проверяется модератором";
	}
	elseif ($result_customer_array['customer_group_id'] == 2){
		$result=mysql_query("SELECT * FROM download INNER JOIN (download_description INNER JOIN product_to_download USING(download_id)) USING(download_id) WHERE product_id = '73'", $baza);
		while($row=mysql_fetch_array($result))
		{	
			echo "........................";
		}
	}
	else {
		echo "Воспользоваться данной страницей............";
все работает ок

ТОЛЬКО осталось решить проблему с незарегистрированными пользователями:
если на сайте нет пользователя выходит предупреждение:

Notice: Undefined index: customer_id in /home/c/..... on line 98Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/c/..... on line 100Данная страница проверяется модераторомWarning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/c/....... on line 104

а что здесь делать?
 

nevka

Новичок
Господин Фанат!
Огромное вам спасибо вы мне здорово помогли.

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

включила комп, поправила код, проверила и все работает как надо!

вот щаз сижу и думаю, на сколько же все элементарно. чистая логика

Еще раз СПАСИБО!
 

keltanas

marty cats
PHP:
if ( $a == 2 ) {
   // do 1
} elseif ( $a != 2 ) {
   // do 2
} else {
   // do 3
}
Внимание, вопрос: "При каких $a выполнится do 3 "?
 

Фанат

oncle terrible
Команда форума
keltanas написал тот же самый код, упростив его, выбросив все лишнее. чтобы нагляднее показать дырку в логике.
в самой по себе дырке ничего ужасного нет - тупят периодически все.
не нужно воспринимать все вокруг как сарказм или проверку тупости.
нужно мыслить позитивнее.
и концентрироваться на сути информации, а не заниматься её эмоциональной интерпретацией.

после этого перечитать свое условие
Иначе (то есть пользователь зарегистрирован, но еще не перемещен в нужную группу ) - "Ваши данные проверяются...."
и подумать, как оно соотносится с прописанным в коде
 

Фанат

oncle terrible
Команда форума
keltanas
Кстати, если подумать то третий вариант таки есть.
И, скажем, в отличие от пыхапы, начинающим пользователям mysql он, бывает, причиняет немало хлопот ;)
собственно, топикстартеру нужен именно он. но реализовать его, конечно, придется другим кодом.
 
Сверху