Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Wyczytanie praw z tabeli
-Wieviór-
post 7.09.2006, 17:54:37
Post #1





Goście







Mam tabelę "uzytkownicy_prawa" z polami:

Kod
- id
- uzytkownik_id
- prawo


Chcę wyczytać prawa dla użytkownika o danym id, zrobić if, jeśli użytkownik ma prawo F, to ma dostęp do danej akcji. Próbuję to robić w tablicami, ale jestem w je ciemny, więc robię bardziej na czuja z kursu niż z prawdziwej wiedzy, stąd brak odpowiedniego wyniku.

  1. <?
  2. $sql = "SELECT * FROM uzytkownicy_prawa WHERE uzytkownik_id = '".$_SESSION[id]."'";
  3. $wykonaj = mysql_query($sql);
  4. while ($prawobaza = mysql_fetch_array($wykonaj))
  5. {
  6. $prawo[] = $prawobaza['prawo'];
  7. }
  8. if ($prawo == 'B')
  9. { echo 'Dało radę';
  10. } else { 
  11. echo 'Nie masz dostępu'; 
  12. }
  13. ?>


No i coś tu nie pasi. Daje wynik "Nie masz dostępu", w tabeli są dwa rekordy z tym samym uzytkownik_id i prawo: "A" i "B".
Go to the top of the page
+Quote Post
My4tic
post 7.09.2006, 18:04:48
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 0
Dołączył: 4.08.2005

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


Sprawdz taki kod:

  1. <?php
  2. for ($i = 1; $i <= 10; $i++) {$prawo[$i] = $i; echo $prawo[$i].'<br />'; }
  3. ?>


...i mam nadzieje, ze z resztą sobie sam poradzisz smile.gif

http://pl.php.net/manual/pl/ref.array.php" title="Zobacz w manualu php" target="_manual

// edit

A tak w ogóle po co robisz to na tablicach? Zakładam, że w bazie masz tylko jednego usera o danym ID więc po co Ci pętla i tablica do wczytania danych?

Ten post edytował My4tic 7.09.2006, 18:15:05


--------------------
Załóż konto na dropbox.
Go to the top of the page
+Quote Post
-Wieviór-
post 7.09.2006, 18:24:18
Post #3





Goście







O danym id użytkownika mam jednego. Chodzi o to, że w tej tabeli może być(ba, napewno będzie) kilka rekordów z jednym uzytkownik_id i różnymi prawo.

Nie wiem czy do tego użyć tablic, zdawało mi się, że tak najlepiej, ale jak mówię, jestem z nich ciemny.

// EDIT:

Co do tego co mi napisałeś, nie rozumiem czemu chcesz to zrobić przez for, szukam w manualu więcej o tablicach, bo nie wiem jak to ma wyglądać z tym for.

Ten post edytował Wieviór 7.09.2006, 18:26:05
Go to the top of the page
+Quote Post
Ludvik
post 7.09.2006, 18:28:29
Post #4





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Obecność elementu w tabeli sprawdzamy funkcją in_array" title="Zobacz w manualu php" target="_manual smile.gif
  1. <?php
  2. if (in_array('B', $prawo)) {
  3. // Ma prawo B
  4. }
  5. ?>


--------------------
Go to the top of the page
+Quote Post
-Wieviór-
post 7.09.2006, 18:31:20
Post #5





Goście







Cytat(Ludvik @ 7.09.2006, 19:28:29 ) *
Obecność elementu w tabeli sprawdzamy funkcją in_array" title="Zobacz w manualu php" target="_manual smile.gif
  1. <?php
  2. if (in_array('B', $prawo)) {
  3. // Ma prawo B
  4. }
  5. ?>


No i pięknie, bo chodziło mi dokładnie o to! Dzięki biggrin.gif
Go to the top of the page
+Quote Post
My4tic
post 7.09.2006, 18:50:24
Post #6





Grupa: Zarejestrowani
Postów: 260
Pomógł: 0
Dołączył: 4.08.2005

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


Cytat(Wieviór @ 7.09.2006, 17:24:18 ) *
Co do tego co mi napisałeś, nie rozumiem czemu chcesz to zrobić przez for, szukam w manualu więcej o tablicach, bo nie wiem jak to ma wyglądać z tym for.


To co napisałem to był tylko przykład. Myślałem, że sam dojdziesz do swojego błedu - i nie chodziło tu o rodzaj pętli tylko o indeksy w tablicach.

Tutaj:

  1. <?php
  2. if ($prawo == 'B')
  3. ?>


...odwołujesz się do tablicy bez podania indeksu.

  1. <?php
  2. if ($prawo[$index] == 'B')
  3. ?>


...jeśli chciałbyś to tak robić to musiałbyś znowu ładowac pętle więc rozwiązanie Ludvik'a jest lepsze.


--------------------
Załóż konto na dropbox.
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.05.2024 - 19:09