Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Menu aktywne
Forum PHP.pl > Forum > Przedszkole
kubagogo
Witam,
mam taki problem

w swoim portalu mam dwa typy użytkowników administratora i zwykłego usera. W tabeli z ich danymi stworzyłem kolumne o nazwie status w której adminom przypisuje 1 a userom 2. I teraz moje pytanie jak najlatwiej zrobić, żeby po zalogowaniu się admina pojawiało sie menu przeznaczone dla niego, inne dla usera.

  1. <div id="menu"
  2. <ul>
  3. <li><a href="index.php">Start</a></li>
  4. <li><a href="logowanie.php">Zalaoguj</a></li>
  5. <li><a href="kontakt.php">Kontakt</a></li>
  6.  
  7. //tutaj menu admina
  8. <li><a href="rejstracja.php">Dodaj użytkownika</a></li>
  9. <li><a href="konfiguracja.php">Konfiguracja</a></li>
  10. <li><a href="kontakt.php">Kontakt</a></li>
  11. <li><a href="wyloguj.php">Wyloguj</a><li>
  12.  
  13. //tutaj menu usera
  14. <li><a href="statystyki.php">Statystyki</a></li>
  15. <li><a href="kontakt.php">Kontakt</a></li>
  16. <li><a href="wyloguj.php">Wyloguj</a><li>
  17.  
  18. </ul>
  19. </div><!--menu-->


Pierwsza sprawa to jak rozwiązać połączenie php z html. Myślałem o jakimś case dla 2 przypadków albo poprostu if dla jednego lub drugiego.
I jak po zalogowaniu pamiętać status użytkownika jakieś zapytanie do bazy zrobic?
john_doe
stwórz sobie dwie funkcje wypisujące menu.
menuAdmin();
menuUser();

potem np.

if(status == 1)
{ echo menuAdmin();} else echo menuUser();

kubagogo
ok zrobiłem tak jak napisałeś i menu się tworzy, ale w dalszym ciągu mam pytania

Na początku to co napisał john zmieniłem nieco ponieważ zawsze występował by warunek else dla niezalogowanego użytkownika dlatego cos takiego napisałem
  1. if($status==1)
  2. echo menu_admin();
  3. else
  4. if($status==2)
  5. echo menu_user();


Myślę, że powinno to tak działać.

A teraz najważniejsze jak się dobrać do tego statusu kiedy użytkownik jest zalogowany?
jakieś zapytanie do bazy? a może jakoś inaczej?

Czy dobrze robię mieszając php z html w taki sposób jak w skrypcie poniżej?


  1. function menu_pionowe_html()
  2. {
  3. ?>
  4. <div id="glowna">
  5. <div id="menu_pionowe_pojemnik">
  6. <div id="menu"
  7. <ul>
  8. <li><a href="index.php">Start</a></li>
  9. <li><a href="logowanie.php">Zalaoguj</a></li>
  10. <li><a href="kontakt.php">Kontakt</a></li>
  11. <?php
  12. if($status==1)
  13. echo menu_admin();
  14. else
  15. if($status==2)
  16. echo menu_user();
  17.  
  18. ?>
  19. </ul>
  20. </div><!--menu-->
  21. <div id="menu_dol">
  22.  
  23. </div><!--menu_dol-->
  24. </div><!--menu_pionowe_pojemnik-->
  25. <div id="tresc">
  26. <?php
  27. }
  28. function menu_admin()
  29. {
  30. ?>
  31. <li><a href="rejstracja.php">Dodaj użytkownika</a></li>
  32. <li><a href="konfiguracja.php">Konfiguracja</a></li>
  33. <li><a href="kontakt.php">Kontakt</a></li>
  34. <li><a href="wyloguj.php">Wyloguj</a><li>
  35.  
  36. <?php
  37. }
  38. function menu_user()
  39. {
  40. ?>
  41. <li><a href="statystyki.php">Statystyki</a></li>
  42. <li><a href="kontakt.php">Kontakt</a></li>
  43. <li><a href="wyloguj.php">Wyloguj</a><li>
  44.  
  45. <?php
  46. }
naitsabes
else
if($status==2)

else znaczy ze $status nie rowna sie 1 wiec nie musisz tego if'a dawac
kubagogo
Cytat
else
if($status==2)

else znaczy ze $status nie rowna sie 1 wiec nie musisz tego if'a dawac


No dobrze, ale co kiedy żaden użytkownik nie jest zalogowany? Wtedy jak zrobie tak jak napisałeś to za kazdym razem jak nie bedzie to admin to będzie się pojawiało menu dla usera.

Jednak w dalszym ciągu nie wiem jak zrobić to sprawdzenie statusu

Pomyślałem o czymś takim

  1. $polaczenie=polacz_bd();
  2. $wynik=$polaczenie->query("select status from uzytkownik where nazwa_uzytkownika='$_SESSION'");
  3. if($wynik==1)
  4. echo menu_admin();
  5. else
  6. if($wynik==2)
  7. echo menu_user();


tylko, że nie działa to tak jak bym chciał nie wiem co dać w klauzuli where bo chciałbym, żeby tam pojawiała się nazwa zalogowanego użytkownika. Może ktoś ma jakiś pomysł jak sie do tego dobrać
Myślałem , że może przez Session ale nic z tego

Czekam na jakieś pomysły
ciekawskiii
  1. if($wynik[0]==1)
  2. echo menu_admin();
  3. else if($wynik[0]==2)
  4. echo menu_user();
kubagogo
wracam do detamu bo dajel mam problem z tym menu

Zrobiłem coś takiego

  1. $polaczenie=polacz_bd();
  2. $wynik1=$polaczenie->query("select status from uzytkownik where nazwa_uzytkownika='kuba'");
  3. if(!$wynik1)
  4. echo 'blad';
  5. else
  6. echo 'dobrze';
  7.  
  8. echo $wynik1;


Jest to tylko pewnien test w którym chciałbym odczytywać z bazy status uzytkownika kuba i w zależności od niego wybieramy menu, ale kiedy napisałem coś takiego pojawił sie błąd niby wsywietla sie opca ifa ze dobrze ale nie wyświetla sie wynik zapytania tylko bład

Catchable fatal error: Object of class mysqli_result could not be converted to string in D:\xampp\xampp\htdocs\projekt\funkcje_wyswietl.php on line 65

Ktoś wie jak się do tego zabrać?
Ulysess
musisz np użyć funkcji

  1.  
  2. $w = mysql_fetch_assoc($wynik1);

i wtedy wyświetlić echo $w['nazwa_pola_z_bazy']
kubagogo
Dzieki wielkie udało mi się to wkońcu zrobić. Działą tak jak chciałem

Jedyna sprawa to to, że u mnie pisałem polecenia do bazy w podejściu obiektowym więc funkcja powinna być taka

  1. $w = $wynik1->fetch_assoc()
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.