За последние 24 часа нас посетили 22524 программиста и 1009 роботов. Сейчас ищут 755 программистов ...

Обмен сообщениями

Тема в разделе "PHP для новичков", создана пользователем jestify, 21 окт 2016.

  1. jestify

    jestify Новичок

    С нами с:
    21 окт 2016
    Сообщения:
    8
    Симпатии:
    0
    Здравствуйте!
    Есть сервис обмена сообщениями между авторизованными пользователями. Необходимо сделать так ,чтобы админ мог писать всем пользователям, а пользователи только админу. Я пытаюсь написать алгоритм: если пользователь админ, то заполнить таблицу всемипользователями из базы. Если не админ, то не заполнять. Сейчас заcтрял на первом "если".В чем моя ошибка:

    PHP:
    1. <?php  
    2.    if (((checkUser($_SESSION["login"], $_SESSION["password"])) && (isAdmin($_SESSION["login"])))) {
    3.        $users = getAllUsers(); //если пользователь админ
    4.        for($i = 0; $i < count($users); $i++) {   //Заполнение таблицы данными из бд
    5.     echo "<tr>";
    6.     echo "<td><b>".$users[$i]["login"]."</b></td>";//берем логин
    7.     echo "<td>";
    8.     echo "<a href='smessage.php?to=".$users[$i]["id"]."' title='Отправить сообщение'>написать сообщение</a>";
    9.     echo "</td>";
    10.     echo "</tr>";
    11.  
    12. }
    13. }
    14.    ?>
    PHP:
    1. function isAdmin($login) {//функция проверки является ли пользователь админом или нет, если является нужно показать ему админ-панель
    2. global $mysqli;
    3. connectDB();
    4. $result_set = $mysqli->query("SELECT * FROM `users` WHERE `login`='$login'");//вытаскиваем нужного пользователя из бд
    5. $row = $result_set->fetch_assoc(); //Получение строки из бд
    6. closeDB(); //закрыть соединение в бд
    7. return $row["admin"];  //возвращаем значение поля
    8.   }
    Сейчас выдает ошибку Fatal error: Call to a member function query() on a non-object in путь on line 29
    Т.е. на строчку
    PHP:
    1. $result_set = $mysqli->query("SELECT * FROM `users` WHERE `login`='$login'");
    ругается в функции isAdmin
     
    #1 jestify, 21 окт 2016
    Последнее редактирование модератором: 21 окт 2016
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    нету query() в mysqli, что там?
     
  3. jestify

    jestify Новичок

    С нами с:
    21 окт 2016
    Сообщения:
    8
    Симпатии:
    0
    не понял. как мне это узнать?
    В других то функциях он узнает query, а в isadmin выдает ошибку
    --- Добавлено ---
    Да походу не в этом дело..
    Как вариант ведб можно использовать
    PHP:
    1. global $user;
    2. if ($user - uid == 1)
    3. {
    4. // Code
    5. }
    На этот код ошибок нету, да и таблица пользователей из базы не подтягивается. Я пишу:
    PHP:
    1.    <?php  
    2. global $user;
    3. if ($admin - uid == 1){
    4.        $users = getAllUsers();
    5.        for($i = 0; $i < count($users); $i++) {   //Заполнение таблицы данными из бд
    6.     echo "<tr>";
    7.     echo "<td><b>".$users[$i]["login"]."</b></td>";//берем логин
    8.     echo "<td>";
    9.     echo "<a href='smessage.php?to=".$users[$i]["id"]."' title='Отправить сообщение'>написать сообщение</a>";
    10.     echo "</td>";
    11.     echo "</tr>";
    12.  
    13. }
    14. }
    15.    ?>
    В базе у меня такая таблица:

    id | login | password | admin где последнем столбце напротив логина админ стоит 1
     
    #3 jestify, 21 окт 2016
    Последнее редактирование модератором: 21 окт 2016
  4. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
  5. jestify

    jestify Новичок

    С нами с:
    21 окт 2016
    Сообщения:
    8
    Симпатии:
    0
    NULL.. но почему?
     
  6. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    @jestify Потому что её нет.Ты не подключился к mysqli.
     
  7. jestify

    jestify Новичок

    С нами с:
    21 окт 2016
    Сообщения:
    8
    Симпатии:
    0
    $mysqli = connectDB(); так?
     
  8. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    Низнаю. Откуда берётся функция connectDB? И что она возвращает?
     
  9. jestify

    jestify Новичок

    С нами с:
    21 окт 2016
    Сообщения:
    8
    Симпатии:
    0
    <?php
    function connectDB() { //функция подключения к бд
    return new mysqli("localhost", "root", "", "mysite-local"); //соединение с базой mysite-local
    }
    --- Добавлено ---
    users-таблица в бд
     
  10. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    Ну значит так.