Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Formularz typu select pobierający dane z bazy danych zawierający zduplikowane dane, PHP+MySQL+HTML
wendor
post
Post #1





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

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


Witam posiadam stronkę z formularzem która pobiera GET-em i zapytaniem sql dane z z bazy danych. Wszystko działa prawie ok ale mam jeden problem z polem wyboru w formularzu. Gdy wywołuję dane z bazy danych i wybieram uprawnienia przypisane do danego użytkownika to wypisuje mi uprawnienia danego użytkownika kilka razy.Chciałbym by lista pokazywała,że np. dany użytkownik ma uprawnienia użytkownika ale mogę je zmienić na administratora,moderatora,managera czy właściciela firmy.Pytanie brzmi czy macie jakiś pomysł by uprawnienia przypisane do danego użytkownika pojawiały się tylko raz, a lista wypełniana była pozostałymi uprawnieniami pobieranymi z tabeli "Rights". Poniżej przedstawiam zdjęcia obrazujące jak wygląda problem.

Przykładowo dla użytkowika posiadającego uprawnienia zwykłe czyli użytkownik wygląda to tak:

(IMG:http://s1.fotowrzut.pl/N0PV12J8IZ/1_medium.jpg)

A dla użytkownika z uprawnieniami administratora wygląda to tak:

(IMG:http://s1.fotowrzut.pl/49S63I4PV6/1_medium.jpg)

Poniżej przedstawiam fragment kodu z którym mam problem odpowiadający za wypisywanie danych dla pola wyboru w formularzu:

Kod
<tr><td>Prawa: </td><td>';
$question = mysql_query ("SELECT * FROM Rights");
echo '<select name="prawa">';

while($prawa = mysql_fetch_assoc($question)) {
echo"<option value=$dane[prawa]>$dane[prawa]</option>";                 // Wypisuje prawa przypisane dla danego użytkownika
echo"<option value=$prawa[prawa]>$prawa[prawa]</option>";             // Wypisuje wszystkie prawa z tabeli Rights
}
echo '</select></form>';
?>



Z góry dzięki za pomoc (IMG:style_emoticons/default/exclamation.gif) ! Mam nadzieję,że ktoś wpadnie na pomysł jak rozwiązać ten problem (IMG:style_emoticons/default/smile.gif)


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Czemu w petli masz jeszcze wyswietlanie dla kazdego rekordu o tego
echo"<option value=$dane[prawa]>$dane[prawa]</option>";
? Przeciez to ci sie duplikuje za kazdym razem.

przenosze
Go to the top of the page
+Quote Post
wendor
post
Post #3





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

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


Wiem,że się duplikuje pytanie dlaczego? I jak się tej duplikacji pozbyć ?


Linijka echo"<option>$dane[prawa]</option>" ; wyświetla uprawnienia tylko dla danego użytkownia

Natomiast

Linijka echo"<option>$prawa[prawa]</option>" ; // Wypisuje wszystkie prawa z tabeli Rights czyli Administrator, Administrator2, Użytkownik, Moderator itp...

więc bez tego ani rusz...
Trzeba by tu jakiegoś if-a lub selecta zastosować ale niestety nie mam pomysłu jak go skonstruować żeby zadziałał....

Ten post edytował wendor 12.03.2018, 17:47:28
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #4





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Coś mocno przekombinowałeś. Jeśli dobrze rozumiem to:

  1. $dane['prawa'];


zawiera obecne uprawnienie użytkownika. Jest i może być tylko jedno, tak?

Więc podejrzewam, że kod powinien wyglądać mniej więcej tak:

  1. <tr><td>Prawa: </td><td>';
  2. $question = mysql_query ("SELECT * FROM Rights");
  3. echo '<select name="prawa">';
  4.  
  5. while($prawa = mysql_fetch_assoc($question)) {
  6. echo"<option value=$prawa[prawa] ";
  7. echo $prawa['prawa'] == $dane['prawa'] ? 'selected' : null;
  8. echo ">$prawa[prawa]</option>"; // Wypisuje wszystkie prawa z tabeli Rights
  9. }
  10. echo '</select></form>';
  11. ?>
Go to the top of the page
+Quote Post
wendor
post
Post #5





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

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


Dzięki b4rt3kk (IMG:style_emoticons/default/exclamation.gif)

brakowało mi tego wstawienia nulla (IMG:style_emoticons/default/exclamation.gif) Jesteś the best (IMG:style_emoticons/default/exclamation.gif)

Ten post edytował wendor 12.03.2018, 18:04:29
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.10.2025 - 12:10