Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Контент в соответствии с ролью пользователя
zXus  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 10
Пользователь №: 42467
На форуме: 10 месяцев, 3 дня
Карма:




Здравствуйте! Пользователь при регистрации указывает к какой роли он относиться ("роль 1" или "роль 2"). Все это записывается в БД в определенное поле. Контент на сайте должен отображаться в соответствии с ролью пользователя, но почему-то отображается тот контент, который соответствует роли первого пользователя в таблице.

Вот код:

<body>
<
div class="wrap">
<
div class="row">

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>
<!-- Проверяем авторизован ли юзер -->
<?php if(Validate::UserStatus() == true): ?>
<?php

$connect_sql = mysql_connect("localhost", "admin", "password")
or die("Could not connect: " . mysql_error());
if (mysql_select_db('teacher') !== true) {
echo "ERROR 1";
} else {
echo "Not ERROR 1";
};
$query = mysql_query("SELECT `role` FROM `users` WHERE '1'");
if($query !== false) {
$r=mysql_fetch_array($query);
if ($r['role'] == "Роль 1"): ?>
<div class="small-11 columns">
<
h1>РОЛЬ 1</h1>

</
div>
<?php elseif ($r['role'] == "Роль 2"): ?>
<div class="small-11 columns">
<
h1>РОЛЬ 2</h1>
</
div>
<?php endif; ?>
<?php
} else { ?>
<h1>Ошибка</h1>
<?php } ?>
<?php
else: ?>
<div class="small-12 columns">
<?php include_once 'login.tpl.php'; ?>
<?php
if(route::dispatcher() == "signup"): ?>
<?php
include_once 'sign.tpl.php'; ?>
<?php
elseif(route::dispatcher() == "recover"): ?>
<?php
include_once 'repassword.tpl.php'; ?>
<?php
endif; ?>
</div>
<?php endif; ?>
</div>
<?php mysql_close($connect_sql); ?>
</div>
</
body>


Это сообщение отредактировал zXus - 21.03.2016 - 18:25
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
depp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 290
Пользователь №: 40589
На форуме: 1 год, 11 месяцев, 29 дней
Карма: 19




Цитата (zXus @ 21.03.2016 - 18:24)
$query = mysql_query("SELECT `role` FROM `users` WHERE '1'");
if($query !== false) {
$r=mysql_fetch_array($query);

это что?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
zXus  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 10
Пользователь №: 42467
На форуме: 10 месяцев, 3 дня
Карма:




depp
Проверка, вернул ли $query корректный результат, если да, то работаем с массивом
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
depp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 290
Пользователь №: 40589
На форуме: 1 год, 11 месяцев, 29 дней
Карма: 19




Цитата (zXus @ 21.03.2016 - 18:24)
SELECT `role` FROM `users` WHERE '1'

?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
zXus  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 10
Пользователь №: 42467
На форуме: 10 месяцев, 3 дня
Карма:




Это выбор поля ролей "role" из таблицы "users". Where 1 это я взял из самой БД (sql запрос). Убрал where 1 и ничего не поменялось.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
icedfox  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 395
Пользователь №: 41702
На форуме: 1 год, 3 месяца, 19 дней
Карма: 13




Цитата (zXus @ 21.03.2016 - 20:24)
$query = mysql_query("SELECT `role` FROM `users` WHERE '1'");

у тебя не хватает данных :) например так
$query = mysql_query("SELECT `role` FROM `users` WHERE `role` = '1' ");
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
zXus  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 10
Пользователь №: 42467
На форуме: 10 месяцев, 3 дня
Карма:




icedfox
Не помогло. WHERE ничего не поменяло. Если указать WHERE `role`='роль 1', например, то и выводится контент в соответствии с этим. А мне нужно, чтобы программа сама определяла какая роль соответствует id пользователя, который авторизовался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14962
Пользователь №: 4190
На форуме: 8 лет, 9 месяцев, 25 дней
Карма: 443




zXus, вот эта запись
Цитата (zXus @ 21.03.2016 - 18:24)
SELECT `role` FROM `users` WHERE '1'

интерпретируется в БД как "выбери роль из таблицы пользователей где истина". То есть, на самом деле, будет выбрано всё без исключения (все строки!!!). Согласно твоему коду, ты выбираешь анализируешь только первую строку.

Тебе правильно сказали, что у тебя не хватает данных. После WHERE в запросе надо указать какие-нибудь уникальные данные, относящиеся к этому юзеру. Которые ты где-то хранишь... Или получаешь от юзера. Например, его логин и пароль. Которые вставляешь в условие в запросе и получаешь данные из БД. Или не получаешь smile.gif, если такой комбинации логин-пароль нет.

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

Это сообщение отредактировал sergeiss - 22.03.2016 - 17:19


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса