Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][mysql]Edycja wpisów
Lee
post
Post #1





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

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


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)


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
Master Miko
post
Post #2





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


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


--------------------
Go to the top of the page
+Quote Post
Lee
post
Post #3





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

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


nie działa, może coś z samym formularzem mam nie tak ?


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
Master Miko
post
Post #4





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


Zobacz tablicę POST. tzn napisz sobie wszędzie:
itd

echo $nick;


--------------------
Go to the top of the page
+Quote Post
Lee
post
Post #5





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

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


pokazuje mi nowy nick jaki wpisuje...


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
Master Miko
post
Post #6





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


czyli błąd jest w zapytaniu SQL. sprawdź jeszcze raz syntax dla update


--------------------
Go to the top of the page
+Quote Post
Lee
post
Post #7





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

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


tzn. mam wywołać "ręcznie" zapytanie ? jeżeli tak to sprawdziłem i działa (wpisując odpowiednie dane)


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
j0hny
post
Post #8





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 23.04.2006

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


brakuje apostrofów przy nick'u

  1. <?php
  2.  
  3. $wykonaj = mysql_query("UPDATE main_admins SET nick='$nick' WHERE id = '$id'");
  4.  
  5. ?>
Go to the top of the page
+Quote Post
Lee
post
Post #9





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

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


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


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
-Gość_nobody-
post
Post #10





Goście







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.
Go to the top of the page
+Quote Post
Lee
post
Post #11





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

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


ale klikając w link edytuj przekazuje w URL'u numer ID danego konta...


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
-Gość_nobody-
post
Post #12





Goście







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.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 20:35