Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Porównanie wartości bazy danych z funkcją
marcin690
post 4.07.2019, 17:07:45
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.11.2017

Ostrzeżenie: (0%)
-----


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

Go to the top of the page
+Quote Post
viking
post 4.07.2019, 17:17:04
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Nigdy nie rób uprawnień admina na else. Pewnie nie przekazujesz zmiennej do funkcji. Poczytaj o zasięgu zmiennych.


--------------------
Go to the top of the page
+Quote Post
dvdx95
post 4.07.2019, 17:18:38
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 3
Dołączył: 11.10.2016

Ostrzeżenie: (0%)
-----


a jak wyglada twoje zapytanie sql?
Go to the top of the page
+Quote Post
marcin690
post 5.07.2019, 11:09:36
Post #4





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.11.2017

Ostrzeżenie: (0%)
-----


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.  
Go to the top of the page
+Quote Post
nospor
post 5.07.2019, 11:18:55
Post #5





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
dvdx95
post 5.07.2019, 17:08:56
Post #6





Grupa: Zarejestrowani
Postów: 47
Pomógł: 3
Dołączył: 11.10.2016

Ostrzeżenie: (0%)
-----


  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. }


Ten post edytował dvdx95 5.07.2019, 17:13:27
Go to the top of the page
+Quote Post
Tomplus
post 5.07.2019, 23:20:23
Post #7





Grupa: Zarejestrowani
Postów: 1 828
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 12:05