Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]Edycja wpisów
Forum PHP.pl > Forum > Przedszkole
Lee
Mam kolejny problem, otóż gdy kliknę edycja przy jakimś koncie to nie pokazuje błędów[czyt. jest all ok], ale jak zmienie jakieś dane to niby je zmienia ale dalej w bazie danych i w liście kont są stare dane...

kod odpowiadający za edycję
  1. <?php
  2. $id = $_GET['id'];
  3. $zapytanie = mysql_query("SELECT * FROM main_admins WHERE id = '$id'");
  4. while ($wynik = mysql_fetch_assoc($zapytanie)){
  5. $aNick = $wynik['nick'];
  6. $aEmail = $wynik['email'];
  7. $aName = $wynik['name'];
  8. $aDostep = $wynik['acces'];
  9. }
  10. echo '<table class="text" cellspacing="1" cellpadding="0" align="center">
  11. <form action="index.php?mod=administratorzy&action=edit&PHPSESSID='.session_id().'" method="post">
  12. <tr><td colspan="2">Dodaj nowego administratora:</td></tr>
  13. <tr><td><b>Nick:</b></td><td><input type="text" name="nick" value="'.$aNick.'"></td></tr>
  14. <tr><td><b>Hasło:</b></td><td><input type="password" name="pass"></td></tr>
  15. <tr><td><b>Powtórz hasło:</b></td><td><input type="password" name="pass_repeat"></td></tr>
  16. <tr><td><b>Email:</b></td><td><input type="text" name="email" value="'.$aEmail.'"></td></tr>
  17. <tr><td><b>Imię:</b></td><td><input type="text" name="name" value="'.$aName.'"></td></tr>
  18. <tr><td colspan="2"><input type="checkbox" name="newsy"> Newsy | <input type="checkbox" name="artykuly"> Artykuły | <input type="checkbox" name="dzialy"> Działy | <input type="checkbox" name="godadmin"> GodAdmin</td></tr>
  19. <tr><td colspan="2" align="center"><input type="submit" name="edytuj" value="Edytuj">&nbsp;&nbsp;<input type="reset" name="reset" value="Wyczyść"></td></tr>
  20. </form>
  21. </table>';
  22. if (isset($_POST['edytuj'])){ // 2
  23. $nick = $_POST['nick'];
  24. $pass = $_POST['pass'];
  25. $pass_repeat = $_POST['pass_repeat'];
  26. $email = $_POST['email'];
  27. $name = $_POST['name'];
  28.  
  29. // Jeżeli podane hasła nie są identyczne
  30. if(!$pass == $pass_repeat){
  31. echo '<p class="text">Podane hasła nie są identyczne !</p>';
  32. }
  33. // Jeżeli są identyczne
  34. else if ($pass == $pass_repeat){
  35. // Poziom dostępu (usunąłem, aby kod był czytelniejszy)
  36. $pass = md5($pass);
  37. $wykonaj = mysql_query("UPDATE main_admins SET nick=$nick WHERE id = '$id'");
  38. echo '<p class="text">Wpis zedytowany ! <a href="index.php?mod=administratorzy&PHPSESSID='.session_id().'">Powrót</a></p>';
  39. }
  40. } // 2
  41. ?>


Nie wiem, może coś nie tak wpisałem w kodzie, a może wszystko jest okej (ale wtedy by działało)
Master Miko
bład pewnie tu:


  1. <?php
  2.  
  3. $wykonaj = mysql_query("UPDATE main_admins SET nick=$nick WHERE id = '$id'");
  4.  
  5. ?>


sprobuj:

  1. <?php
  2.  
  3.  
  4. $query = "UPDATE main_admins SET nick=" . $nick . " WHERE id = '" . $id . "'";
  5. $wykonaj = mysql_query($query);
  6.  
  7.  
  8. ?>
Lee
nie działa, może coś z samym formularzem mam nie tak ?
Master Miko
Zobacz tablicę POST. tzn napisz sobie wszędzie:
itd

echo $nick;
Lee
pokazuje mi nowy nick jaki wpisuje...
Master Miko
czyli błąd jest w zapytaniu SQL. sprawdź jeszcze raz syntax dla update
Lee
tzn. mam wywołać "ręcznie" zapytanie ? jeżeli tak to sprawdziłem i działa (wpisując odpowiednie dane)
j0hny
brakuje apostrofów przy nick'u

  1. <?php
  2.  
  3. $wykonaj = mysql_query("UPDATE main_admins SET nick='$nick' WHERE id = '$id'");
  4.  
  5. ?>
Lee
To nic nie daje...nie wiem co jest nie tak :|

CAŁY kod pliku
  1. <?php
  2. include ('../config.php');
  3. if ($_SESSION['is_admin'] == 'true'){
  4.  
  5. if (empty($_GET['action'])){ // Klamra 1 - początek
  6. echo '<table class="text" cellspacing="1" cellpadding="0" align="center">
  7. <form action="index.php?mod=administratorzy&PHPSESSID='.session_id().'" method="post">
  8. <tr><td colspan="2">Dodaj nowego administratora:</td></tr>
  9. <tr><td><b>Nick:</b></td><td><input type="text" name="nick"></td></tr>
  10. <tr><td><b>Hasło:</b></td><td><input type="password" name="pass"></td></tr>
  11. <tr><td><b>Powtórz hasło:</b></td><td><input type="password" name="pass_repeat"></td></tr>
  12. <tr><td><b>Email:</b></td><td><input type="text" name="email"></td></tr>
  13. <tr><td><b>Imię:</b></td><td><input type="text" name="name"></td></tr>
  14. <tr><td colspan="2"><input type="checkbox" name="newsy"> Newsy | <input type="checkbox" name="artykuly"> Artykuły | <input type="checkbox" name="dzialy"> Działy | <input type="checkbox" name="godadmin"> GodAdmin</td></tr>
  15. <tr><td colspan="2" align="center"><input type="submit" name="dodaj" value="Dodaj">&nbsp;&nbsp;<input type="reset" name="reset" value="Wyczyść"></td></tr>
  16. </form>
  17. </table>';
  18. if (isset($_POST['dodaj'])){ // 2
  19. $nick = $_POST['nick'];
  20. $pass = $_POST['pass'];
  21. $pass_repeat = $_POST['pass_repeat'];
  22. $email = $_POST['email'];
  23. $name = $_POST['name'];
  24.  
  25. // Jeżeli podane hasła nie są identyczne
  26. if(!$pass == $pass_repeat){
  27. echo '<p class="text">Podane hasła nie są identyczne !</p>';
  28. }
  29. // Jeżeli są identyczne
  30. else if ($pass == $pass_repeat){
  31. // Tutaj usunąłem kawałek niewaznego kodu
  32. $pass = md5($pass);
  33. $zapytanie = mysql_query("INSERT INTO main_admins VALUES (NULL, '$nick', '$pass', '$email', '$dostep', '$name')");
  34. }
  35. } // 2
  36.  
  37. echo '<br><center><table class="text" cellspacing="0" cellpadding="0">
  38. <tr>
  39. <td style="border-bottom: 1px solid #000000; width: 100px; background-color: '.$color[1].'">&nbsp;<b>Nick:</b></td>
  40. <td style="border-bottom: 1px solid #000000; width: 100px; background-color: '.$color[2].'">&nbsp;<b>Email:</b></td>
  41. <td style="border-bottom: 1px solid #000000; width: 100px; background-color: '.$color[1].'">&nbsp;<b>Imię</b></td>
  42. <td style="border-bottom: 1px solid #000000; width: 150px; background-color: '.$color[2].'">&nbsp;<b>Stanowisko:</b></td>
  43. <td style="border-bottom: 1px solid #000000; width: 100px; background-color: '.$color[1].'">&nbsp;<b>Opcje:</b></td>
  44. </tr>';
  45. $zapytanie = mysql_query("SELECT * FROM main_admins WHERE id");
  46. while ($wynik = mysql_fetch_array($zapytanie)){
  47. $aKonto[] = $wynik;
  48. }
  49. foreach($aKonto as $konto){ // 3
  50. if ($konto['acces'] == 't-t-n-n'){$stanowisko = 'Newsman';}
  51. else if ($konto['acces'] == 't-t-n-n'){$stanowisko = 'Newsman';}
  52. else if ($konto['acces'] == 'n-t-t-t'){$stanowisko = 'Redaktor';}
  53. else if ($konto['acces'] == 't-t-t-t'){$stanowisko = 'Redaktor | Newsman';}
  54. else if ($konto['acces'] == 'god'){$stanowisko = 'Administrator';}
  55. else if ($konto['acces'] == 'tester'){$stanowisko = 'Tester';}
  56. echo '<tr>
  57. <td style="border-bottom: 1px solid #000000; width: 100px; background-color: '.$color[1].'">&nbsp;'.$konto['nick'].'</td>
  58. <td style="border-bottom: 1px solid #000000; width: 100px; background-color: '.$color[2].'">&nbsp;'.$konto['email'].'</td>
  59. <td style="border-bottom: 1px solid #000000; width: 100px; background-color: '.$color[1].'">&nbsp;'.$konto['name'].'</td>
  60. <td style="border-bottom: 1px solid #000000; width: 150px; background-color: '.$color[2].'">&nbsp;'.$stanowisko.'</td>
  61. <td style="border-bottom: 1px solid #000000; width: 100px; background-color: '.$color[1].'">&nbsp;<a href="index.php?mod=administratorzy&action=edytuj&id='.$konto['id'].'&PHPSESSID='.session_id().'"><font color="#000000">Edytuj</font></a></td>
  62. </tr>';
  63. } // 3
  64. echo '</table></center><br>';
  65. } // Klamra 1 - koniec
  66. if ($_GET['action'] == 'edytuj'){
  67. header ('Location: index.php?mod=administratorzy&action=edit&id='.$_GET['id'].'&PHPSESSID='.session_id().'');
  68. }
  69. if ($_GET['action'] == 'edit'){
  70. $id = $_GET['id'];
  71. $zapytanie = mysql_query("SELECT * FROM main_admins WHERE id = '$id'");
  72. while ($wynik = mysql_fetch_assoc($zapytanie)){
  73. $aNick = $wynik['nick'];
  74. $aEmail = $wynik['email'];
  75. $aName = $wynik['name'];
  76. $aDostep = $wynik['acces'];
  77. }
  78. echo '<table class="text" cellspacing="1" cellpadding="0" align="center">
  79. <form action="index.php?mod=administratorzy&action=edit&PHPSESSID='.session_id().'" method="post">
  80. <tr><td colspan="2">Dodaj nowego administratora:</td></tr>
  81. <tr><td><b>Nick:</b></td><td><input type="text" name="nick" value="'.$aNick.'"></td></tr>
  82. <tr><td><b>Hasło:</b></td><td><input type="password" name="pass"></td></tr>
  83. <tr><td><b>Powtórz hasło:</b></td><td><input type="password" name="pass_repeat"></td></tr>
  84. <tr><td><b>Email:</b></td><td><input type="text" name="email" value="'.$aEmail.'"></td></tr>
  85. <tr><td><b>Imię:</b></td><td><input type="text" name="name" value="'.$aName.'"></td></tr>
  86. <tr><td colspan="2"><input type="checkbox" name="newsy"> Newsy | <input type="checkbox" name="artykuly"> Artykuły | <input type="checkbox" name="dzialy"> Działy | <input type="checkbox" name="godadmin"> GodAdmin</td></tr>
  87. <tr><td colspan="2" align="center"><input type="submit" name="edytuj" value="Edytuj">&nbsp;&nbsp;<input type="reset" name="reset" value="Wyczyść"></td></tr>
  88. </form>
  89. </table>';
  90. if (isset($_POST['edytuj'])){ // 2
  91. $nick = $_POST['nick'];
  92. $pass = $_POST['pass'];
  93. $pass_repeat = $_POST['pass_repeat'];
  94. $email = $_POST['email'];
  95. $name = $_POST['name'];
  96.  
  97. // Jeżeli podane hasła nie są identyczne
  98. if(!$pass == $pass_repeat){
  99. echo '<p class="text">Podane hasła nie są identyczne !</p>';
  100. }
  101. // Jeżeli są identyczne
  102. else if ($pass == $pass_repeat){
  103. // Tutaj usunąłem kawałek nieważnego kodu
  104.  
  105. $pass = md5($pass);
  106. $id = $_GET['id'];
  107. $wykonaj = mysql_query("UPDATE main_admins SET nick='$nick' WHERE id = '$id'");
  108. echo $nick;
  109. echo '<p class="text">Wpis zedytowany ! <a href="index.php?mod=administratorzy&PHPSESSID='.session_id().'">Powrót</a></p>';
  110. }
  111. } // 2
  112. }
  113. }
  114. else if (!$_SESSION['is_admin'] == 'true'){
  115. header ('Location: ../administracja.php');
  116. }
  117.  
  118. ?>
Gość_nobody
Wydaje mi sie, ze w pewnym momencie gubisz ID, dla ktorego ma zostac zrobiony update.

Najpierw masz:
Kod
if ($_GET['action'] == 'edytuj'){
    header ('Location: test.php?mod=administratorzy&action=edit&id='.$_GET['id'].'&PHPSESSID='.session_id().'');

}
if ($_GET['action'] == 'edit'){
phpinfo ();
        $id = $_GET['id'];

i tutaj przekazujesz ID przez GET i ona jest w tej tablicy. Ale teraz tworzysz FORM'a
Kod
<form action="help.php?mod=administratorzy&action=edit&PHPSESSID='.session_id().'" method="post">

, przy ktorym nie przekazujesz nigdzie zmiennej przechowujacej ID (ani przez POST ani przez GET).
Kod
        if (isset($_POST['edytuj'])){ // 2
        $nick = $_POST['nick'];
        $pass = $_POST['pass'];
        $pass_repeat = $_POST['pass_repeat'];
        $email = $_POST['email'];
        $name = $_POST['name'];
...
...
                $id = $_GET['id'];
                $wykonaj = mysql_query("UPDATE main_admins SET nick='$nick' WHERE id = '$id'");
                echo $nick;
                echo '<p class="text">Wpis zedytowany ! <a href="help.php?mod=administratorzy&PHPSESSID='.session_id().'">Powrót</a></p>';
            }
        } // 2

Pozniej po zatwierdzeniu FORM'a z formularza do tablicy _POST ida tylko zmienne nick, pass, pass_repeat, email i name, ale tablica GET posiada tylko zmienne, do ktorej odwoluje sie FORM (czyli ?mod=administratorzy&action=edit&PHPSESSID='.session_id().'"), ale juz bez ID. Dlatego tez moze byc problem z UPDATE, bo baza danych nie wie ktore dane ma zmienic, bo ID nie istnieje.
Lee
ale klikając w link edytuj przekazuje w URL'u numer ID danego konta...
Gość_nobody
Ale FORMem przesylasz POSTem:

  1. <?php
  2.  
  3.  <form action="index.php?mod=administratorzy&action=edit&PHPSESSID='.session_id().'" method="post">
  4.  
  5. ?>

Ale URL strony sie nie zmienia i zostaje ten co byl wczesniej:

  1. <?php
  2.  
  3. header ('Location: index.php?mod=administratorzy&action=edit&id='.$_GET['id'].'&PHPSESSID='.session_id().'');
  4.  
  5. ?>

Tablice globalne POST i GET sa wypelniane na nowo, teraz tylko danymi idacymi z FORM'a.
Sprobuj w FORMie przekazac ID np.
<input type="hidden" name="id" value="$_GET['id']">
i teraz jak bedziesz robil UPDATE to :
$id=$_POST['id'];
i potem
mysql_query("UPDATE main_admins SET nick='$nick' WHERE id = '$id'")
Powinno dzialac.
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.