Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql+php]Edycja rekordu w bazie
Forum PHP.pl > Forum > Bazy danych > MySQL
piottro1
Nie jestem autorem poniższego skryptu, "raczkuję" w używaniu języka php. W związku z tym proszę o pomoc osoby, które mogą i zechcą jej udzielić.

Skrypt działa poprawnie jeśli chodzi o dodawanie nowych rekordów oraz ich usuwanie. Problem dotyczy edycji.

index.php
  1. <?
  2. if(isset($_POST['pass'])) //Haslo przechowujemy w sesjach
  3. {
  4. if($_POST['pass']=='1234') //Wpisz haslo w miejsce "1234"
  5. {
  6. $_SESSION['admin']='ok';
  7. }
  8. }
  9. if((!isset($_SESSION['admin']) || $_SESSION['admin']!='ok') && $_GET['admin']!='wyloguj')
  10. {
  11. echo '<form method="POST" action="index.php?main=admin">
  12. <p align="center">
  13. Niestety nie jesteś zalogowany.<br> Proszę podać hasło:<br>
  14. <input type="password" name="pass" size="20"><br>
  15. <input type="submit" value="OK"></p>
  16. </form>';
  17. }
  18. if(isset($_GET['admin']) && $_GET['admin']=='wyloguj')
  19. {
  20. $_SESSION['admin']='';
  21. echo 'Nastapiło wylogowanie!<br />Przejdź do <a href="/index.php">Strony Głównej<br /> Przejdź do <a href="/news/">News</a></a>';
  22. }
  23. if($_SESSION['admin']=='ok')
  24. {
  25. $uchwyt=mysql_connect('adres bazy','nazwa bazy','haslo bazy')
  26. or die('Nieudane polaczenie z baza danych...');
  27. or die('Nie udalo sie wybrac bazy danych...');
  28.  
  29. echo '<center><strong>NEWS′Y:</strong></center><br /><br />';
  30. $link=mysql_query('SELECT * FROM news ORDER BY id desc');
  31. while($wiersz=mysql_fetch_array($link))
  32. {
  33. echo '<strong>'.$wiersz['tytul'].'</strong>';
  34. echo ' - ';
  35. echo $wiersz['data'];
  36. echo ' : ';
  37. echo '<a href="index.php?newsy=edytuj&id='.$wiersz['id'].'"><span style="color:green">edytuj</span></a>';
  38. echo ' / ';
  39. echo '<a href="index.php?newsy=usun&id='.$wiersz['id'].'"><span style="color:red">usuń</span></a>';
  40. echo "<br />\n";
  41. }
  42. echo '<br /><center><strong>Dodaj newsa:</strong><br>';
  43. echo '<form method="POST" action="index.php?newsy=dopisz">
  44. Autor:<br />
  45. <input type="text" name="autor" size="24"><br>
  46. Tytuł:<br />
  47. <input type="text" name="tytul" size="64"><br />
  48. Treść:<br />
  49. <textarea rows="5" name="tresc" cols="42"></textarea><br />
  50. <input type="submit" value="Dodaj">
  51. </form>';
  52. if(isset($_GET['newsy']) && $_GET['newsy']=='edytuj' && isset($_GET['id']))
  53. {
  54. $id=$_GET['id'];
  55. $link=mysql_query("SELECT * FROM news WHERE id='$id'");
  56. $wiersz=mysql_fetch_array($link);
  57.  
  58. echo '<strong>Edytuj newsa:</strong><br />';
  59. echo '<form method="POST" action="index.php?newsy=edytuj&id='.$wiersz['id'].'">
  60. Napisał:<br />
  61. <input type="text" name="autor" size="24" value="'.$wiersz['autor'].'"><br />
  62. Tytuł:<br />
  63. <input type="text" name="tytul" size="64" value="'.$wiersz['tytul'].'"><br />
  64. Treść:<br />
  65. <textarea rows="5" name="tresc" cols="42">'.$wiersz['tresc'].'</textarea><br />
  66. <input type="submit" value="Edit">
  67. </form>';
  68. }
  69. elseif(isset($_GET['newsy']) && $_GET['newsy']=='dopisz')
  70. {
  71. $autor=$_POST['autor'];
  72. $tytul=$_POST['tytul'];
  73. $tresc=$_POST['tresc'];
  74. $data=date('d.m.Y, H:i');
  75.  
  76. mysql_query("INSERT INTO news VALUES(0,'$autor','$tytul','$tresc','$data')");
  77. echo 'Pomyślnie dodałem newsa<br /><br /><strong>Autor:</strong> '.$autor.'<br /><strong>Nowy tytuł:</strong><br />'.$tytul.'<br /><strong>Treść:</strong><br />'.$tresc.'<br /><strong>Data: </strong>'.$data.'.<br /><br />';
  78.  
  79. }
  80. elseif(isset($_GET['newsy']) && $_GET['newsy']=='wyedytuj' && isset($_GET['id']))
  81. {
  82. $autor=$_POST['autor'];
  83. $tytul=$_POST['tytul'];
  84. $tresc=$_POST['tresc'];
  85. $id=$_GET['id'];
  86.  
  87. mysql_query("UPDATE news SET autor='$autor' tytul='$tytul' tresc='$tresc' WHERE id='$id'");
  88. echo 'Pomyślnie edytowałem newsa! <br /><br /><strong>Autor:</strong><br />'.$autor.',<br /><strong>Nowy tytuł:</strong><br />'.$tytul.',<br /><strong>Nowa treść:</strong><br />'.$tresc.'<br /><br />';
  89.  
  90. }
  91. elseif(isset($_GET['newsy']) && $_GET['newsy']=='usun' && isset($_GET['id']))
  92. {
  93. $id=$_GET['id'];
  94.  
  95. mysql_query("DELETE FROM news WHERE id='$id'");
  96. echo 'Pomyślnie usunąłem newsa numer '.$id.'!<br />';
  97.  
  98. }
  99. ?>
  100. <a href="/news/news.php?admin=wyloguj"><span style="color:red"><strong>Wyloguj</strong></span></a></center><br /><br /><br />
  101. <?
  102. }
  103. ?>


W bazie danych stworzyłem tabelę z następującymi polami:

  1. CREATE TABLE `news` (
  2.  
  3. `id` INT NOT NULL AUTO_INCREMENT ,
  4.  
  5. `autor` TINYTEXT NOT NULL ,
  6.  
  7. `tytul` TINYTEXT NOT NULL ,
  8.  
  9. `tresc` TEXT NOT NULL ,
  10.  
  11. `data` VARCHAR( 50 ) NOT NULL ,
  12.  
  13. PRIMARY KEY ( `id` )
  14.  
  15. );


Za wyświetlanie News'ów odpowiada plik:

news.php
  1. <?
  2. $uchwyt=mysql_connect('adres bazyl','nazwa bazy','haslo bazy')
  3. or die('Nieudane polaczenie z baza danych...');
  4. or die('Nie udalo sie wybrac bazy danych...');
  5. $link=mysql_query("SELECT * FROM news ORDER BY id desc LIMIT 4");
  6. while($wiersz=mysql_fetch_array($link))
  7. {
  8. echo "<br />\n";
  9. echo "<hr />\n";
  10. echo "<br />\n";
  11. echo "<br />\n";
  12. echo ' (';
  13. echo $wiersz['data'];
  14. echo ') ';
  15. echo '<strong>';
  16. echo $wiersz['tytul'];
  17. echo '</strong><br />';
  18. echo '<strong> ';
  19. echo $wiersz['autor'];
  20. echo '</strong> napisał:';
  21. echo "<br />\n";
  22. echo "<br />\n";
  23. echo $wiersz['tresc'];
  24. echo "<br />\n";
  25. echo "<br />\n";
  26. echo "<br />\n";
  27. echo "<hr />\n";
  28. if($_SESSION['admin']=='ok')
  29. {
  30. echo '<a href="/news/index.php?newsy=edytuj&id='.$wiersz['id'].'"><span style="color:green">edytuj</span></a>';
  31. echo ' / ';
  32. echo '<a href="/news/index.php?newsy=usun&id='.$wiersz['id'].'"><span style="color:red">usuń</span></a>';
  33. echo ' / ';
  34. echo '<a href="/news/index.php?admin=wyloguj"><span style="color:red"><strong>Wyloguj Admin</strong></span></a>';
  35. }
  36. }
  37. mysql_close($uchwyt);
  38. ?>


Tak jak wspomniałem, dodawanie i usuwanie nowych rekordów przebiega prawidłowo (no może nie idealnie, bo po dodaniu newsa i odświeżeniu formularza/strony, dodaje się ponownie news w następnym rekordzie).
Jeśli chodzi o edycję to nie dzieje się nic, nie następują żadne zmiany w bazie.
Za pomoc z góry dziękuję.
kefirek
tam gdzie masz
  1. echo '<form method="POST" action="index.php?newsy=edytuj&id='.$wiersz['id'].'">


zmien na
  1. echo '<form method="POST" action="index.php?newsy=wyedytuj&id='.$wiersz['id'].'">
piottro1
Po tej zmianie w skrypcie na stronie pojawia się (poza tytułami istniejących news'ów i formularzem do dodania nowego):

Pomyślnie edytowałem newsa!

Autor:
(tutaj to co edytowałem)
Nowy tytuł:

(tutaj to co edytowałem)
Nowa treść:
(tutaj to co edytowałem)

ale w bazie nadal nic się nie zmieniło (odświeżyłem).
Quadina
  1. mysql_query("UPDATE news SET autor='$autor', tytul='$tytul', tresc='$tresc' WHERE id='$id'");

Były zjedzone przecinki w linii 89.
piottro1
Panowie, dzięki bardzo za pomoc.
Dzięki Wam dodawanie, usuwanie i edycja działają poprawnie snitch.gif !

Mam jeszcze kłopot z tym, że po dodaniu newsa i odświeżeniu formularza/strony, dodaje się ponownie news w następnym rekordzie, i tak za każdym odświeżeniem. Da się jakoś temu zaradzić?
nospor
Cytat
Mam jeszcze kłopot z tym, że po dodaniu newsa i odświeżeniu formularza/strony, dodaje się ponownie news w następnym rekordzie, i tak za każdym odświeżeniem. Da się jakoś temu zaradzić?

1) wyszukiwarka
2) Przypiety temat
http://forum.php.pl/index.php?showtopic=44...t=0&start=0
piottro1
Cytat

Dzięki za pomoc.
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.