Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Uaktualnienia i usuwanie użytkowników
Forum PHP.pl > Forum > Przedszkole
jerry1984
Witam

Borykam się z problemem dotyczącym jak w temacie, mianowicie studiuję książkę "PHP5, Apache i MySQL. Od podstaw" na potrzeb utworzenia panelu administracyjnego do strony internetowej.Skrypt działa prawie dobrze, problem występuje, gdy zalogowany administrator aktualizuje jednego użytkownika, aktualizuje wszystkich naraz w bazie danych, również przy usuwaniu użytkowników. Usuwam jednego, usuwam wszystkich z bazy danych.
Oto skrypt z książki, sprawdzałem kilka razy kod.
Podam przykład z/w książki, strona 400 jeśli ktoś posiada tą książkę.

delete_user.php

  1. <?php
  2. include "auth_admin.inc.php";
  3. include "conn.inc.php";
  4. if ($_SESSION['admin_level'] == "1") {
  5. if (isset($_POST['submit']) && $_POST['submit'] == "Tak") {
  6. $query_delete = "DELETE FROM user_info " .
  7. "WHERE id = '" . $_POST['id'] . "'";
  8. $result_delete = mysql_query($query_delete)
  9.  
  10. $_SESSION['user_logged'] = "";
  11. $_SESSION['user_password'] = "";
  12.  
  13. header("Refresh: 5; URL=admin_area.php");
  14. echo "Konto zstało usunięte! " .
  15. "Zostaniesz przekierowany do obszaru administracyjnego!<br>";
  16. echo "(Jeśli przeglądarka nie obsługuje przekierowań, " .
  17. "<a href=\"admin_area.php\">kliknij tutaj</a>)";
  18. die();
  19. } else {
  20. ?>
  21. <html>
  22. <head>
  23. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  24. <title>PHP5. Apache i MySQL</title>
  25. </head>
  26. <body>
  27. <h1>Obaszar administracyjny</h1>
  28. <p>
  29. Czy na pewno chcesz usunąć użytkownika?<br />
  30. Tej operacji nie można cofnąć!<br />
  31. <form action="delete_user.php" method="post">
  32. <input type="hidden" name="id" value="<?php echo $_GET['id']; ?>">
  33. <input type="submit" name="submit" value="Tak">  
  34. <input type="button" value=" Nie " onclick="history.go(-1);">
  35. </form>
  36. </p>
  37. </body>
  38. </html>
  39. <?php
  40. }
  41. } else {
  42. ?>
  43. Nie masz wystarczających uprawnień, aby usunąć użytkownika.<br>
  44. <a href="admin_area.php">Kliknij tutaj</a>, aby wrócić.
  45. <?php
  46. }
  47. ?>


a oto skrypt do aktualizacji użytkownika może tu błąd gdzieś występuje ?

update_user.php

  1. <?php
  2. include "auth_admin.inc.php";
  3. include "conn.inc.php";
  4. ?>
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  8. <title>PHP5. Apache i MySQL</title>
  9. </head>
  10. <body>
  11. <h1>Aktualizacja informacji o użytkowniku</h1>
  12. <p>
  13. <?php
  14. if (isset($_POST['submit']) && $_POST['submit'] == "Uaktualnij") {
  15. $query_update = "UPDATE user_info SET username = '" .
  16. $_POST['username'] . "', password = (PASSWORD('" .
  17. $_POST['password'] . "')), first_name = '" .
  18. $_POST['first_name'] . "', last_name = '" .
  19. $_POST['last_name'] . "', email = '" .
  20. $_POST['email'] . "', city = '" .
  21. $_POST['city'] . "', state = '" .
  22. $_POST['state'] . "', hobbies = '" .
  23. implode(", ", $_POST['hobbies']) . "' " .
  24. "WHERE id = '" . $_POST['id'] . "'";
  25. $result_update = mysql_query($query_update)
  26.  
  27. $query = "SELECT * FROM user_info WHERE id = '" . $_POST['id'] . "'";
  28. $result = mysql_query($query)
  29.  
  30. $row = mysql_fetch_array($result);
  31. $hobbies = explode(" , ", $row['hobbies'])
  32. ?>
  33. <b>Informacje zotały uaktualnione.</b><br />
  34. <a href="admin_area.php">Kliknij tutaj</a>, aby powrócić do obszaru
  35. administracyjnego.
  36. <form action="update_user.php" method="post">
  37. <input type="hidden" name="id" value=<?php echo $_POST['id']; ?>">
  38. Nazwa użytkownika: <input type="text" name="username"
  39. value="<?php echo $row['username']; ?>"><br />
  40. Hasło: <input type="password" name="password"
  41. value="">Nie jest wyświetlane<br />
  42. Imię: <input type="text" name="first_name"
  43. value="<?php echo $row['first_name']; ?>"><br />
  44. Nazwisko: <input type="text" name="last_name"
  45. value="<?php echo $row['last_name']; ?>"><br />
  46. Adres email: <input type="text" name="email"
  47. value="<?php echo $row['email']; ?>"><br />
  48. Miasto: <input type="text" name="city"
  49. value="<?php echo $row['city']; ?>"><br />
  50. Województwo: <input type="text" name="state"
  51. value="<?php echo $row['state']; ?>"><br />
  52. Zainteresowania: lub hobby (należy wybrać co najmniej jedno):<br />
  53. <select name="hobbies[]" size="10" multiple>
  54. <option value="Golf"<?php
  55. if (in_array("Golf", $hobbies)) {
  56. echo " select";
  57. } ?>>Golf</option>
  58. <option value="Wędkarstwo"<?php
  59. if (in_array("Wędkarstwo", $hobbies)) {
  60. echo " select";
  61. } ?>>Wędkarstwo</option>
  62. <option value="Czytanie"<?php
  63. if (in_array("Czytanie", $hobbies)) {
  64. echo " select";
  65. } ?>>Czytanie</option>
  66. <option value="Taniec"<?php
  67. if (in_array("Taniec", $hobbies)) {
  68. echo " select";
  69. } ?>>Taniec</option>
  70. <option value="Internet"<?php
  71. if (in_array("Internet", $hobbies)) {
  72. echo " select";
  73. } ?>>Internet</option>
  74. <option value="Podróże"<?php
  75. if (in_array("Podróże", $hobbies)) {
  76. echo " select";
  77. } ?>>Podróże</option>
  78. <option value="Komputer"<?php
  79. if (in_array("Komputer", $hobbies)) {
  80. echo " select";
  81. } ?>>Komputer</option>
  82. <option value="Inne niż wymienione"<?php
  83. if (in_array("Inne niż wymienione", $hobbies)) {
  84. echo " select";
  85. } ?>>Inne niż wymienione</option>
  86. </select><br /><br />
  87. <input type="submit" name="submit" value="Uaktualnij">
  88. </form>
  89. <?php
  90. } else {
  91. $query = "SELECT * FROM user_info WHERE id = '" . $_GET['id'] . "'";
  92. $result = mysql_query($query)
  93.  
  94. $row = mysql_fetch_array($result);
  95. $hobbies = explode(", ", $row['hobbies'])
  96. ?>
  97. <form action="update_user.php" method="post">
  98. <input type="hidden" name="id" value=<?php echo $_GET['id']; ?>">
  99. Nazwa użytkownika: <input type="text" name="username"
  100. value="<?php echo $row['username']; ?>"><br />
  101. Hasło: <input type="password" name="password"
  102. value="">Nie jest wyświetlane<br />
  103. Imię: <input type="text" name="first_name"
  104. value="<?php echo $row['first_name']; ?>"><br />
  105. Nazwisko: <input type="text" name="last_name"
  106. value="<?php echo $row['last_name']; ?>"><br />
  107. Adres email: <input type="text" name="email"
  108. value="<?php echo $row['email']; ?>"><br />
  109. Miasto: <input type="text" name="city"
  110. value="<?php echo $row['city']; ?>"><br />
  111. Województwo: <input type="text" name="state"
  112. value="<?php echo $row['state']; ?>"><br />
  113. Zainteresowania: lub hobby (należy wybrać co najmniej jedno):<br />
  114. <select name="hobbies[]" size="10" multiple>
  115. <option value="Golf"<?php
  116. if (in_array("Golf", $hobbies)) {
  117. echo " select";
  118. } ?>>Golf</option>
  119. <option value="Wędkarstwo"<?php
  120. if (in_array("Wędkarstwo", $hobbies)) {
  121. echo " select";
  122. } ?>>Wędkarstwo</option>
  123. <option value="Czytanie"<?php
  124. if (in_array("Czytanie", $hobbies)) {
  125. echo " select";
  126. } ?>>Czytanie</option>
  127. <option value="Taniec"<?php
  128. if (in_array("Taniec", $hobbies)) {
  129. echo " select";
  130. } ?>>Taniec</option>
  131. <option value="Internet"<?php
  132. if (in_array("Internet", $hobbies)) {
  133. echo " select";
  134. } ?>>Internet</option>
  135. <option value="Podróże"<?php
  136. if (in_array("Podróże", $hobbies)) {
  137. echo " select";
  138. } ?>>Podróże</option>
  139. <option value="Komputer"<?php
  140. if (in_array("Komputer", $hobbies)) {
  141. echo " select";
  142. } ?>>Komputer</option>
  143. <option value="Inne nię wymienione"<?php
  144. if (in_array("Inne nię wymienione", $hobbies)) {
  145. echo " select";
  146. } ?>>Inne niż wymienione</option>
  147. </select><br /><br />
  148. <input type="submit" name="submit" value="Uaktualnij">  
  149. <input type="button" value="Anuluj" onclick="history.go(-1);">
  150. </form>
  151. <?php
  152. }
  153. ?>
  154. </body>
  155. </html>


Prosiłbym o pomoc, bo już sobie nie radzę.

Pytanko drugie:

Nie wiem czy mam racje ale książka narzuciła mi taki skrypt jako tworzenie nowego użytkownika w bazie danych:

  1. CREATE TABLE user_info (
  2. email varchar (50) NOT NULL,
  3. username varchar (50) NOT NULL,
  4. ....
  5. ....
  6. ....
  7. id int(10) NOT NULL DEFAULT '0'
  8. );


Czy "id int(10) NOT NULL default '0'" przypisuje wszystkim użytkownikom "id" 0 ?
Zauważyłem, że w PHPMyAdmin wszyscy użytkownicy mają nadaną wartość "id" 0.
Czy to nie powoduje właśnie mojego problemu ?

Przepraszam za taką pisownie ale nie znam jeszcze fachowego języka jak większość tu ludzi posługuje się.

Pozdrawiam i z góry dziękuje.
mat-bi
zwykle dla id daje sie auto increment, poczytaj sobie.
jerry1984
Możesz mi wytłumaczyć czemu w książce napisali tak, a nie jak mówisz żeby dać auto increment ? Wiem, że funkcja "auto increment" nadaje użytkownikom liczby 0-10 ale jakiś musiał być powód, że napisali tak.

Pozdrawiam
sadistic_son
Wg mnie też powinno być AUTO INCREMENT, id po to właśnie jest aby można było odróżnić rekordy od siebie, aby zawsze była to liczba niepowtarzalna. Podejrzewam, że to błąd w książce, choć nie wykluczam, że służy to jakiemuś celowi o którym nigdy nie słyszałem. Z tego co wiem to w relacyjnych bazach id można pominąć w tabeli łącznikowej relacji ale tutaj to nie jest tego typu tabela.

Cytat(jerry1984 @ 10.04.2011, 22:21:41 ) *
funkcja "auto increment" nadaje użytkownikom liczby 0-10
Skąd pomysł, że od 0 tylko do 10?
jerry1984
Cytat(sadistic_son @ 10.04.2011, 23:23:46 ) *
Skąd pomysł, że od 0 tylko do 10?


Hehe wiem, że trochę dziwacznie to wygląda.Chciałem wyrazić swoją odpowiedz ale jak widzę, nie błysnąłem ;P

Mieliście racje , że powinno być "AUTO INCREMENT". Panel administracyjny działa poprawnie w całej okazałości.
Dziękuję i...

Pozdrawiam
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.