Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Porównanie wartości bazy danych z funkcją
Forum PHP.pl > Forum > PHP
marcin690
Hello! Jestem początkującym programistą, tworzę drobną aplikację na wzór CRM. Chciałbym w panelu wyświetlać rolę użytkownika, która zapisana jest w Mysql jako liczba
W bazie danych jest to rola 1 lub 2 - zatrudniony oraz administrator, zatem stworzyłem coś takiego:



  1. $userrole = $row["userrole"];
  2.  
  3. deklaracja funkcji
  4. {
  5. if ($userrole === "1") {
  6. echo "Zatrudniony";
  7. } else {
  8. echo "Administrator";
  9. }
  10. }
  11.  


Mysql

Ale dostaję komunikat Undefined variable: userrole in
i każdy użytkownik jest administratorem, mimo że powinien być zatrudnionym

viking
Nigdy nie rób uprawnień admina na else. Pewnie nie przekazujesz zmiennej do funkcji. Poczytaj o zasięgu zmiennych.
dvdx95
a jak wyglada twoje zapytanie sql?
marcin690
Cytat(dvdx95 @ 4.07.2019, 18:18:38 ) *
a jak wyglada twoje zapytanie sql?


Tak wygląda:
  1.  
  2.  
  3. $mysqli = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
  4. $mysqli -> query("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
  5.  
  6. $sql = "SELECT * FROM user";
  7. $result = $mysqli->query($sql);
  8.  
  9. if ($result->num_rows > 0) {
  10.  
  11. $row = $result->fetch_assoc();
  12. } else {
  13. echo "0 results";
  14. };
  15.  
  16. $identyfikator = $row["id"];
  17. $username = $row["username"];
  18. $name= $row["name"];
  19. $email = $row["email"];
  20. $phone = $row["phone"];
  21. $lastlogin = $row["lastlogin"];
  22. $address = $row["address"];
  23. $userrole = $row["userrole"];
  24.  
  25.  
  26. function userrole_display() // deklaracja funkcji
  27. {
  28. if ($userrole === "1") {
  29. echo "Zatrudniony";
  30. } else {
  31. echo "Administrator";
  32. }
  33. }
  34.  
nospor
Jak juz viking napisal, twoj problem to:
Cytat
Pewnie nie przekazujesz zmiennej do funkcji. Poczytaj o zasięgu zmiennych.


ps:
Ale zdajesz sobie sprawe ze to
$sql = "SELECT * FROM user";
zwraca ci wszystkich userow jakich masz w tabeli?

A zas to
$row = $result->fetch_assoc();
pobierze ci pierwszy zwrocony wiersz? A przez to jak kiedys baza zmieni kolejnosc zwracania rekordow to sie nizle zdziwisz
dvdx95
  1. if ($result->num_rows > 0) {
  2.  
  3. while ($row = $result->fetch_array()) {
  4. $identyfikator = $row["id"];
  5. $username = $row["username"];
  6. $name= $row["name"];
  7. $email = $row["email"];
  8. $phone = $row["phone"];
  9. $lastlogin = $row["lastlogin"];
  10. $address = $row["address"];
  11. $userrole = $row["userrole"];
  12. userrole_display($userrole);
  13. }
  14. }
  15. else {
  16. echo "0 results";
  17. };
  18.  
  19. function userrole_display($userrole) // deklaracja funkcji
  20. {
  21. if ($userrole === "1") {
  22. echo "Zatrudniony";
  23. } else {
  24. echo "Administrator";
  25. }
  26. }
Tomplus
Viking ma rację. Nie daje się uprawnień administracyjnych w taki sposób, nawet funkcja jest dziwna.

userole_display() 1 - jestem zatrudniony, 0,2,3,n - jestem adminem
A gdzie status? nie jestem zatrudniony?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.