Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapisywanie uprawnień dla określonych rang :(
Forum PHP.pl > Forum > PHP
kubula
Witam, ostatnio prosiłem o pomoc i mi pomogliście. Mam nadzieję, że i w tym przypadku będziecie w stanie mi pomóc smile.gif

Pracuję nad stroną, w której można ustalać odpowiednie uprawnienia dla określonych rang. Wygląda to tak



Problem polega na tym, że jak kliknę w którekolwiek ZAPISZ to zapisuję się wybrana opcja (TAK albo NIE) dla wszystkich rang. A chodzi mi o to, żeby można było to robić dla każdej rangi z osobna.
Liczę na Waszą pomoc, bo już tyle nad tym siedzę a efektów brak sad.gif

Oto fragment kodu

  1. <table width='100%'>
  2. <tr>
  3. <td align="center" bgcolor="red">Ranga</td>
  4. <td align="center" bgcolor="red">Podania</td>
  5. <td align="center" bgcolor="red">Edycja strony dla członków</td>
  6. <td align="center" bgcolor="red">Zapisz
  7.  
  8. </td>
  9.  
  10. </tr>
  11. <?
  12. $sql = "SELECT * from `gangsrang` WHERE `gangid` = '".$gang_class->id."' ORDER BY `ranga` DESC"; 
  13. $result = mysql_query($sql);
  14. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  15. $ranga = ($row['ranga']);
  16. $podania = ($row['podania']);
  17. $infopriv = ($row['infopriv']);
  18. ?>
  19. <tr>
  20. <form method='post'>
  21. <td align="center"><? echo $ranga; ?></td>
  22. <td align="center"><select name="podania"><? 
  23. if ($podania == 0){
  24. echo '<option value="1">Tak</option><option value="0" selected="selected">Nie</option>';
  25.  }else{
  26.  echo '<option value="1" selected="selected">Tak</option><option value="0">Nie</option>';
  27.  }?>
  28. </td>
  29. <td align="center"><select name="infopriv"><? 
  30. if ($infopriv == 0){
  31. echo '<option value="1">Tak</option><option value="0" selected="selected">Nie</option>';
  32.  }else{
  33.  echo '<option value="1" selected="selected">Tak</option><option value="0">Nie</option>';
  34.  }?>
  35. </td>
  36. <td align="center"><input type='submit' name='zapisz' value='Zapisz'>
  37. <?
  38. if ($_POST['zapisz']){
  39. $wpodania = $_POST['podania'];
  40. $winfopriv = $_POST['infopriv'];
  41. $result2 = mysql_query("UPDATE `gangsrang` SET `podania` = '$wpodania', `infopriv` = '$winfopriv' WHERE `gangid`='".$gang_class->id."' AND `ranga`='$ranga'");
  42. }
  43. ?>
  44. </form></td>
  45. </td>
  46. </tr>
  47. <?
  48. }
  49. ?>
bim2
Daj echo '<select name="info_'.$row['id'].'">'; tongue.gif W sumie to ja bym zrobił coś w stylu Edytuj i tam miał zmiany (jak będzie tego dużo, możesz się pogubić tongue.gif
kubula
Dzięki za odpowiedź, zaraz będę testował tylko jak ma teraz wyglądać składnia:

  1. <?php
  2. $winfopriv = $_POST['info'];
  3. ?>


tak?

  1. <?php
  2. $winfopriv = $_POST['info_'.$row['id'].''];
  3. ?>
bim2
Yhy, i pobierze tego posta co zmieniasz. smile.gif Tylko dodaj coś do WHERE, żebyś wiedział, że zmieniasz to prawo. W osobnych formach to daj smile.gif
kubula
Cytat(bim2 @ 15.02.2008, 18:40:33 ) *
Yhy, i pobierze tego posta co zmieniasz. smile.gif Tylko dodaj coś do WHERE, żebyś wiedział, że zmieniasz to prawo. W osobnych formach to daj smile.gif


No i właśnie z WHERE mam problem, bo $ranga jest zmienną, którą użytkownik może sobie sam dodawać, bądź usuwać. I teraz nie wiem jak to rozwiązać, żeby te dane z formularza przypisywały się do konkretnej rangi. Jakiś pomysł?

P.S
Osobne formy być nie mogą, bo jak będzie 8 opcji do wyboru to użytkownik mnie zastrzeli, że musi każdą akpceptować jedna po drugiej, więc to musi byc hurtem smile.gif
bim2
Tyy chesz wszystko na raz? To zrób tak jak mówiłem, daj name="cos_'.$row['id'].'" i później dasz kilka update (nie znam twojej bazy danych)
kubula
Zrobiłem tak jak mówiłeś, ale niestety to dalej nie rozwiązuje mojego problemu, bo, fakt, przycisk ZAPISZ zapisuje dane tylko z danego rzędu, ale nadal zapisuje ustawienia dla wszystkich rang.

Kod wygląda tak:

  1. ?>
  2. <table width='100%'>
  3. <tr>
  4. <td align="center" bgcolor="red">Ranga</td>
  5. <td align="center" bgcolor="red">Podania</td>
  6. <td align="center" bgcolor="red">Edycja strony dla członków</td>
  7. <td align="center" bgcolor="red">Zapisz
  8.  
  9. </td>
  10.  
  11. </tr>
  12. <?
  13. $sql = "SELECT * from `gangsrang` WHERE `gangid` = '".$gang_class->id."' ORDER BY `ranga` DESC"; 
  14. $result = mysql_query($sql);
  15. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  16. $ranga = ($row['ranga']);
  17. $podania = ($row['podania']);
  18. $infopriv = ($row['infopriv']);
  19. ?>
  20. <tr>
  21. <form method='post'>
  22. <td align="center"><? echo $ranga; ?></td>
  23. <td align="center"><?echo '<select name="podania_'.$row['id'].'">';?><? 
  24. if ($podania == 0){
  25. echo '<option value="1">Tak</option><option value="0" selected="selected">Nie</option>';
  26.  }else{
  27.  echo '<option value="1" selected="selected">Tak</option><option value="0">Nie</option>';
  28.  }?>
  29. </td>
  30. <td align="center"><?echo '<select name="infopriv_'.$row['id'].'">';?><? 
  31. if ($infopriv == 0){
  32. echo '<option value="1">Tak</option><option value="0" selected="selected">Nie</option>';
  33.  }else{
  34.  echo '<option value="1" selected="selected">Tak</option><option value="0">Nie</option>';
  35.  }?>
  36. </td>
  37. <td align="center"><input type='submit' name='zapisz' value='Zapisz'>
  38. <?
  39. if ($_POST['zapisz']){
  40. $wpodania = $_POST['podania_'.$row['id'].''];
  41. $winfopriv = $_POST['infopriv_'.$row['id'].''];
  42. $result2 = mysql_query("UPDATE `gangsrang` SET `podania` = '$wpodania', `infopriv` = '$winfopriv' WHERE `gangid`='".$gang_class->id."' AND `ranga`='$ranga'");
  43. }
  44. ?>
  45. </form></td>
  46. </td>
  47. </tr>
  48. <?
  49. }
  50. ?>


Nie wiem jak zmusić to zapisywania zmian przy odpowiedniej randze. Gdyby rangi były stałe nie było by problemu bo mógłbym zrobić

  1. <?
  2. $result3 = mysql_query("UPDATE `gangsrang` SET `podania` = '$wpodania', `infopriv` = '$winfopriv' WHERE `gangid`='".$gang_class->id."' AND `ranga`='ranga1'");
  3.  
  4. $result4 = mysql_query("UPDATE `gangsrang` SET `podania` = '$wpodania', `infopriv` = '$winfopriv' WHERE `gangid`='".$gang_class->id."' AND `ranga`='ranga2'");
  5. ...
  6. ?>


i tak dalej, ale problem polega na tym, że w innym formularzu jest możliwość dodawania usuwania rang, więc ich nazwy się zmieniają. Już nie wiem co z tym zrobić sad.gif
bim2
To daj w poscie na jakiej randze własnie operujesz smile.gif Typu <inpu type="hidden" name="ranga_'.$row['id'].'" /> i później w zaputaniu dajesz WHERE ranga = '.$_POST['ranga'.$row['id']] Kapujesz?
Pamiętaj, że tak będziesz miał kilka updatów smile.gif
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.