Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Ustawienie Typu kont użytkowników
Forum PHP.pl > Forum > Przedszkole
gogomania
Posiadam taki kod:
  1. <?php
  2. include 'rdzen/init.php';
  3. protect_page();
  4. admin_protect();
  5. include 'zawartosc/ogolne/header.php';
  6. ?>
  7.  
  8. <h2>Zarządzanie użytkownikami</h2>
  9.  
  10. <?php
  11. $mysql_server = 'localhost';
  12. $mysql_imie = 'root';
  13. $mysql_password = '';
  14. $mysql_database = 'serwis';
  15. $mysql_table = 'ik_users';
  16.  
  17. $user_id = isset($_REQUEST['user_id']) ? $_REQUEST['user_id'] : '';
  18. $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
  19. $login = isset($_REQUEST['login']) ? $_REQUEST['login'] : '';
  20. $first_name = isset($_POST['first_name']) ? $_POST['first_name'] : '';
  21. $last_name = isset($_POST['last_name']) ? $_POST['last_name'] : '';
  22. $email = isset($_POST['email']) ? $_POST['email'] : '';
  23. $status = isset($_POST['status']) ? $_POST['status'] : 0;
  24. $type = isset($_POST['type']) ? $_POST['type'] : 0;
  25.  
  26. $db = mysql_connect($mysql_server, $mysql_imie, $mysql_password);
  27. mysql_query("SET NAMES 'utf8'");
  28. if (!$db) {
  29. die('Błąd: Nie mogę się połączyć z bazą danych!<br>'.mysql_error());
  30. }
  31. mysql_select_db($mysql_database, $db) or die('Błąd: Nie mogę wybrać tablicy bazy danych!<br>'.mysql_error());
  32. if (!empty($action)) {
  33. if ($action == 'delete') {
  34. $sql = "DELETE FROM ".$mysql_table." WHERE ".$mysql_table.".user_id = '$user_id'";
  35. mysql_query($sql, $db);
  36. header('Location: '.basename(__FILE__));
  37. } else
  38. $sql = "UPDATE `".$mysql_table."` SET `login` = '$login', ";
  39. if (!empty($_POST['password'])) {
  40. $crypt_pass = md5($_POST['password']);
  41. $sql = $sql . "`password` = '$crypt_pass',";
  42. }
  43. $sql = $sql . " `last_name` = '$last_name', `first_name` = '$first_name', `email` = '$email', `status` = $status, `type` = $type WHERE `user_id` = $user_id";
  44. if ($action == 'update') {
  45. mysql_query($sql, $db);
  46. header('Location: '.basename(__FILE__));
  47. } else
  48. if ($action == 'create') {
  49. $sql = "SELECT first_name FROM ".$mysql_table." WHERE first_name = '".$_POST['first_name']."'";
  50. $result = mysql_query($sql, $db);
  51. if ($data = mysql_fetch_array($result)) {
  52. echo 'Taki użytkownik już istnieje!';
  53. }
  54. $crypt_pass = md5($_POST['password']);
  55. $sql = "INSERT `".$mysql_table."` (`login`, `first_name`, `last_name`, `password`, `email`, `datarejestracji`, `status`, `ip`, `type`) VALUES ('$login', '$first_name', '$last_name', '$crypt_pass', '$email', NOW(), '$status', '".$_SERVER['REMOTE_ADDR']."', '$type')";
  56. mysql_query($sql, $db);
  57. header('Location: '.basename(__FILE__));
  58. }
  59. }
  60. ?>
  61.  
  62. <style type="text/css">
  63. th
  64. {
  65. font-family: Tahoma;
  66. font-weight: normal;
  67. text-decoration: none;
  68. background-color: #878787;
  69. color: #FFFFFF;
  70. text-align: left;
  71. }
  72. td
  73. {
  74. font-family: Tahoma;
  75. font-weight: normal;
  76. text-decoration: none;
  77. color: #000000;
  78. }
  79. </style>
  80.  
  81. <?php
  82. if (!empty($action)) {
  83. if (($action == 'edit') || ($action == 'new')) {
  84. $login_value = '';
  85. $imie_value = '';
  86. $nazwisko_value = '';
  87. $email_value = '';
  88. $status_value = '';
  89. $type_value = '';
  90.  
  91. $sql = "SELECT * FROM ".$mysql_table." WHERE user_id = '".$user_id."' AND type = type";
  92.  
  93. $result = mysql_query($sql, $db);
  94. if ($data = mysql_fetch_array($result)) {
  95. $user_id_value = $data['user_id'];
  96. $login_value = $data['login'];
  97. $imie_value = $data['first_name'];
  98. $nazwisko_value = $data['last_name'];
  99. $email_value = $data['email'];
  100. $ip_value = $data['ip'];
  101. $status_value = $data['status'];
  102. $type_value = $data['type'];
  103. }
  104. ?>
  105. <center>
  106.  
  107. <?php echo "<form action=\"" . basename(__FILE__) . "\" method=\"POST\">\n"; ?>
  108. <table border="0" style="text-align: right;">
  109. <?php
  110. if ($action == 'new') {
  111. echo "<input type=\"hidden\" name=\"action\" value=\"create\">\n";
  112. } else {
  113. echo "<input type=\"hidden\" name=\"action\" value=\"update\">\n";
  114. }
  115. ?>
  116. <input type="hidden" name="user_id" value="<?php echo $user_id ; ?>">
  117. <tr>
  118. <td>Login:</td>
  119. <td><input type="text" size="50" name="login" value="<?php echo $login_value ; ?>"></td>
  120. <tr>
  121. <td>Imie:</td>
  122. <td><input type="text" size="50" name="first_name" value="<?php echo $imie_value ; ?>"></td>
  123. </tr>
  124. <tr>
  125. <td>Nazwisko:</td>
  126. <td><input type="text" size="50" name="last_name" value="<?php echo $nazwisko_value ; ?>"></td>
  127. </tr>
  128. <tr>
  129. <td>E-mail:</td>
  130. <td><input type="text" size="50" name="email" value="<?php echo $email_value ; ?>"></td>
  131. </tr>
  132. <tr>
  133. <td>Hasło:</td>
  134. <td><input type="password" size="50" name="password" value=""></td>
  135. </tr>
  136. <tr>
  137. <td>Status:</td>
  138. <td style="text-align:left">
  139. <select name="status" size="1">
  140. <option <?php echo ($status_value == "0" ? "selected " : ""); ?> value="0">Nie Aktywny</option>
  141. <option <?php echo ($status_value != "0" ? "selected " : ""); ?> value="1">Aktywny</option>
  142. </select>
  143. </td>
  144. </tr>
  145. <tr>
  146. <td>Typ:</td>
  147. <td style="text-align:left">
  148. <!-- <select name="type" size="1"> //Moja wesoła twórczość stworzyła coś takiego - ale to nie działa.
  149. <option <?php //echo ($type_value == "0" ? "selected" : ""); ?> value="0">Zwykły użytkownik</option>
  150. <option <?php //echo ($type_value == "1" ? "selected" : ""); ?> value="1">Pracownik</option>
  151. <option <?php //echo ($type_value == "2" ? "selected" : ""); ?> value="2">Administrator</option>
  152. </select> -->
  153. </td>
  154. </tr>
  155. <tr>
  156. <td>&nbsp;</td>
  157. <td style="text-align:left"><input type="submit" name="cmdSubmit" value="Zapisz">
  158. <span>&nbsp;&nbsp;</span>
  159. <input type="reset" name="cmdReset" value="Resetuj">&nbsp;&nbsp;
  160. <input type="button" name="cmdBack" value="Wróć" onclick="<?php echo "location.href='" . basename(__FILE__) . "'";?>"></td>
  161. </tr>
  162. </table>
  163. </form>
  164. </center>
  165. <?php
  166. }
  167. } else {
  168. ?>
  169. <table id="tabelka" class="display">
  170. <thead>
  171. <tr>
  172. <th><center>Login</center></th>
  173. <th><center>Imie</center></th>
  174. <th><center>Nazwisko</center></th>
  175. <th><center>E-mail</center></th>
  176. <th><center>IP</center></th>
  177. <th><center>Typ</center></th>
  178. <th><center>Status</center></th>
  179. <th><center>Data Rejestracji</center></th>
  180. <th><center>Akcja</center></th>
  181. </tr>
  182. </thead>
  183. <tbody>
  184. <tr>
  185. <?php
  186. $sql = "SELECT * FROM ".$mysql_table." ORDER BY user_id ASC";
  187. $result = mysql_query($sql, $db);
  188. while ($data = mysql_fetch_array($result)) {
  189. ?>
  190. <td><center><?php echo $data['login']; ?></center></td>
  191. <td><center><?php echo $data['first_name']; ?></center></td>
  192. <td><center><?php echo $data['last_name']; ?></center></td>
  193. <td><center><?php echo $data['email']; ?></center></td>
  194. <td><center><?php echo $data['ip']; ?></center></td>
  195. <td><center><?php echo ($data['type'] == "1" ? "Pracownik" : "Administrator"); ?></center></td>
  196. <td><center><?php echo ($data['status'] == "0" ? "Nie Aktywny" : "Aktywny"); ?></center></td>
  197. <td><center><?php echo $data['datarejestracji']; ?></center></td>
  198. <td>
  199. <center>
  200. <?php echo "<a href=\"" . basename(__FILE__) . "?action=edit&user_id=" . $data['user_id'] . "\">"; ?>
  201. <input type="image" src="images/user_edit_24x24.png" title="Edytuj użytkownika" style="padding: 1px 10px 1px 0;"></a>
  202. <?php echo "<a href=\"" . basename(__FILE__) . "?action=delete&user_id=" . $data['user_id'] . "\" onclick = \"if (! confirm('Czy na pewno usunąć użytkownika?')) return false;\">"; ?>
  203. <input type="image" src="images/user_delete_24x24.png" title="Usuń użytkownika" style="padding: 1px 0 1px 10px;"></a>
  204. </center>
  205. </td>
  206. </tr>
  207.  
  208. <?php
  209. }
  210. ?>
  211.  
  212. </tbody>
  213. <tfoot>
  214. <tr>
  215. <th><center>Login</center></th>
  216. <th><center>Imie</center></th>
  217. <th><center>Nazwisko</center></th>
  218. <th><center>E-mail</center></th>
  219. <th><center>IP</center></th>
  220. <th><center>Typ</center></th>
  221. <th><center>Status</center></th>
  222. <th><center>Data Rejestracji</center></th>
  223. <th><center>Akcja</center></th>
  224. </tr>
  225. </tfoot>
  226. </table><br />
  227. <?php
  228. echo "<center><p><a href=\"" . basename(__FILE__) . "?action=new\"><input type=\"image\" src=\"images/user_add_48x48.png\" title=\"Utwórz nowego użytkownika\"></a></p></center>\n";
  229. }
  230. include 'zawartosc/ogolne/footer.php'; ?>


Chcę zrobić wybieranie rodzaju/typu konta użytkownika podczas edycji jego konta. Obecne rozwiązanie nie nadaje się do niczego. Jak to zrobić by było poprawne?
Turson
Mogłeś od razu napisać w której z tych 250 linii znajduje się to czego szukamy...

Cytat
//Moja wesoła twórczość stworzyła coś takiego - ale to nie działa.

Select się nie wyświetla? Selected nie działa? Co znaczy, że nie działa? sad.gif
gogomania
Przepraszam...
Chdzi mi o to, że mam jedną tabelę która nazywa się ik_users i w niej pole 'type' chciałbym aby w zależności od typu konta dany użytkownik miał możliwość ogladania strony, które mu pozwalam oglądać.
0 - normalny użytkownik,
1 - pracownik,
2 - administrator.
Wiem jak to rozwiązać przy pomocy dodatkowej tabeli w mysql ale chcę tego uniknąć, więc postanowiłem zrobić to za pomocą php.
Gdy mam ustawione tylko to:
  1. <tr>
  2. <td>Status:</td>
  3. <td style="text-align:left">
  4. <select name="status" size="1">
  5. <option <?php echo ($status_value == "0" ? "selected " : ""); ?> value="0">Nie Aktywny</option>
  6. <option <?php echo ($status_value != "0" ? "selected " : ""); ?> value="1">Aktywny</option>
  7. </select>
  8. </td>
  9. </tr>
  10. <tr>

to działa.

Ale gdy dodam jeszcze swoją wesołą twórczość czyli:
  1. <tr>
  2. <td>Typ:</td>
  3. <td style="text-align:left">
  4. <select name="type" size="1">
  5. <option <?php //echo ($type_value == "0" ? "selected" : ""); ?> value="0">Zwykły użytkownik</option>
  6. <option <?php //echo ($type_value == "1" ? "selected" : ""); ?> value="1">Pracownik</option>
  7. <option <?php //echo ($type_value == "2" ? "selected" : ""); ?> value="2">Administrator</option>
  8. </select>
  9. </td>
  10. </tr>

to nie działa prawidłowo - wiem, że to jest zły sposób, dlatego pytam o dobry, który pozwoli mi pokazać jakie uprawnienie posiada edytowany użytkownik.
Chodzi o to, żeby pokazywało za pomocą selecta jakie uprawnienia ma obecnie użytkownik.
Obecnie jest tak, że select mi pokazuje cały czas jedno gdy wchodzę w edycje użytkownika: "Zwykły użytkownik", mimo tego, że wybiore mu administrator, ale tym samym wyłącza poprawne działanie "Aktywny"/"Nie Aktywny".
Mam nadzieję, że w miaro jasno opisałem problem.

Edit:
Po części znalazłem gdzie jest problem. PHP mnie oszukało. Otóż dane w bazie sie zmieniają, tylko wyświetlanie nie jest poprawne.
Problem tkwi w wierszu 202:
  1. <td><center><?php echo ($data['type'] == "1" ? "Pracownik" : "Administrator"); ?></center></td>

Brakuje mi tutaj trzeciej zmiennej, jak zrobić by były 3 pola...? Da się w ogole? Czy muszę przerobić większość kodu?
Wszelkie podpowiedzi (w miare szczegółowe) mile widziane.
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.