Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Edycja rekordu w bazie MySQL
Forum PHP.pl > Forum > Przedszkole
bialy857
Witam.
Jestem nowy na forum i nie wiem czy to odpowiedni dział dlatego przepraszam jeżeli pomyłka.
Zaczynam programowac w php i mam problem z edycja rekordów przez formularz, który znajduje się w okienku popup.

Mam kod: (część całego kody)

  1. <?
  2. $id = $_GET['id'];
  3.  
  4. $test = mysql_query("SELECT * FROM test2 where id='$id'")
  5. or die('Błąd zapytania');
  6.  
  7. if(mysql_num_rows($test) > 0) {
  8. while($r = mysql_fetch_assoc($test)) {
  9. echo "".$r['imie']."";
  10. }
  11. }
  12.  
  13. ?>


Wiem, że problem jest z id ponieważ gdy przypisze do id np. rekord 25 (where id=25) to wszystko gra ale gdy edycja ma się odbywać po naciśnięciu przycisku "edycja", który znajduje się przy każdym rekordzie w tabeli to nie pojawia się nic we wcześniej wspomnianym okienku popup. Macie jakieś pomysły na rozwiązanie problemu? W jaki sposób zadeklarować to id?
nospor
Problem, jak sam slusznie zauwazyles, nie ma zadnego związku z mysql. Przenosze
radek87urban
W jaki sposób przekazujesz zmienną id do stronki z tym kodem?
bialy857
Chyba najlepiej wkleję cały kod strony.

Dodam tylko że w miejscu "body" okienka popup probowalem juz z komendom include edit.php oraz wklejac kod pliku edit.php i nic nie dalo. Efekt jest taki że nie wyswietla zupełnie nic.

A więc zawartość index.php:

  1. <html>
  2. <head>
  3. <title></title>
  4. <meta http-equiv=content-type content="text/html; charset=iso-8859-2">
  5. <meta http-equiv="Content-Language" content="pl">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <meta charset="UTF-8">
  8. <!-- Latest compiled and minified CSS -->
  9. <link rel="stylesheet" href="min1.css">
  10. <link rel="Stylesheet" type="text/css" href="docs.css" />
  11. <link rel="Stylesheet" type="text/css" href="style.css" />
  12. <script type="text/javascript" src="jquery.min.js"></script>
  13. <script type="text/javascript" src="popup.js"></script>
  14. <!-- JavaScript plugins (requires jQuery) -->
  15. <script src="jquery.js"></script>
  16. <!-- Latest compiled and minified JavaScript -->
  17. <script src="min.js"></script>
  18. </head>
  19.  
  20. <body>
  21. <?php
  22.  
  23. //adres ip serwera
  24. $adres_ip_serwera_mysql_z_baza_danych = 'localhost';
  25.  
  26. //nazwa bazy danych
  27. $nazwa_bazy_danych = 'test';
  28.  
  29. //nazwa uzytkownika bazy danych $nazwa_bazy_danych
  30. $login_bazy_danych = 'login';
  31.  
  32. //haslo uzytkownika bazy danych $nazwa_bazy_danych
  33. $haslo_bazy_danych = 'haslo';
  34.  
  35. $formularz_dodaj_uzytkownika = '
  36. <!-- Przycisk uruchamiający modal -->
  37. <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#myModal">Dodaj</button>
  38.  
  39. <!-- Modal -->
  40. <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  41. <div class="modal-dialog">
  42. <div class="modal-content">
  43. <div class="modal-header">
  44. <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Zamknij</span></button>
  45. <h4 class="modal-title" id="myModalLabel">Wstawianie nowego rekordu</h4>
  46. </div>
  47. <div class="modal-body">
  48. <FORM method="POST" action="">
  49. Ime: <INPUT type="text" name="imie">
  50.  
  51. <br />Mail: <INPUT type="text" name="email">
  52.  
  53.  
  54. </div>
  55. <div class="modal-footer">
  56. <button type="button" class="btn btn-default" data-dismiss="modal">Zamknij</button>
  57. <button type="submit" class="btn btn-primary">Zapisz zmiany</button>
  58. </div>
  59. </div>
  60. </div>
  61. </div></FORM>
  62. ';
  63.  
  64.  
  65.  
  66. //Kod programu
  67.  
  68. //Ustanawiamy połączenie z serwerem mysql
  69. if ( !mysql_connect($adres_ip_serwera_mysql_z_baza_danych,
  70.  
  71. $login_bazy_danych, $haslo_bazy_danych) ) {
  72. echo 'Nie moge polaczyc sie z baza danych';
  73. exit (0);
  74. }
  75. //Wybór bazy danych
  76. if ( !mysql_select_db($nazwa_bazy_danych) ) {
  77. echo 'Blad otwarcia bazy danych';
  78. exit (0);
  79. }
  80.  
  81. //Sprawdzamy czy zmienna $_POST["mail"] jest zdefiniowana
  82. if ( isset($_POST["email"]) ){
  83.  
  84. //Porzadkujemy dane
  85. SkorygujZmienneZFormularza($imie,$email);
  86. //Sprawdzamy czy poprawne dane
  87. $czy_poprawne_dane = SprawdzPoprawnoscDanych ($imie,
  88.  
  89. $email);
  90. if ($czy_poprawne_dane == "dane_ok") {
  91.  
  92. $zapytanie = "INSERT INTO `test2` (`id`, `imie`,
  93.  
  94. `email`, `data`) ";
  95. $zapytanie .= "VALUES ('', '$imie', '$email', now())";
  96. //zapytanie na bazie mysql
  97. $wynik_zapytania = mysql_query($zapytanie);
  98. //cz baza danych zwrocila blad
  99. if (!$wynik_zapytania) {
  100. echo("<br />Nie moge dodać rekordu do bazy!<br /><br />");
  101. } else {
  102. header( 'Location: index.php' ) ;
  103.  
  104. }
  105. } else {
  106.  
  107. echo "Wprowadziles niepoprawne dane do formularza.
  108. Być może nie wszystkie pola sa wypelnione";
  109. echo "<br />Spróbuj ponownie:";
  110. echo $formularz_dodaj_uzytkownika;
  111.  
  112. }
  113. } else {
  114.  
  115. echo $formularz_dodaj_uzytkownika;
  116. }
  117.  
  118.  
  119. //zapytanie do tabeli
  120. $wynik = mysql_query("SELECT * FROM test2 ORDER BY `id` DESC")
  121. or die('Błąd zapytania');
  122.  
  123. if(mysql_num_rows($wynik) > 0) {
  124.  
  125. echo "<div id=\"tabela\">";
  126. echo "<table width=\"50%\" rules=cols cellpadding=\"5\" >";
  127. echo "<tr>";
  128. echo "<th>ID</th><th>Imie</th><th>Email</th><th>Data</th><th>Opcje</th>";
  129. echo "</tr>";
  130. while($r = mysql_fetch_object($wynik)) {
  131.  
  132. echo "<tr>";
  133. echo "<td align=\"left\">".$r->id."</td>";
  134. echo "<td align=\"left\">".$r->imie."</td>";
  135. echo "<td align=\"left\">".$r->email."</td>";
  136. echo "<td align=\"center\">".$r->data."</td>";
  137. echo "<td>";?>
  138.  
  139. <!-- Przycisk uruchamiający popup -->
  140. <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#myModal2">
  141. Edycja-NIEDZIALAJACA
  142. </button>
  143.  
  144. <!-- POPUP -->
  145. <div class="modal fade" id="myModal2" tabindex="-1" role="dialog" aria-labelledby="myModalLabel2" aria-hidden="true">
  146. <div class="modal-dialog">
  147. <div class="modal-content">
  148. <div class="modal-header">
  149. <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Zamknij</span></button>
  150. <h4 class="modal-title" id="myModalLabel2">Edycja rekordu</h4>
  151. </div>
  152. <div class="modal-body">
  153. <?
  154. $id = $_GET['id'];
  155.  
  156. $test = mysql_query("SELECT * FROM test2 where id='$id'")
  157. or die('Błąd zapytania');
  158.  
  159. if(mysql_num_rows($test) > 0) {
  160. while($r = mysql_fetch_assoc($test)) {
  161. echo "".$r['imie']."";
  162. }
  163. }
  164.  
  165. ?>
  166. </div>
  167. <div class="modal-footer">
  168. <button type="button" class="btn btn-default" data-dismiss="modal">Zamknij</button>
  169. <button type="button" class="btn btn-primary">Zapisz zmiany</button>
  170. </div>
  171. </div>
  172. </div>
  173. </div>
  174.  
  175.  
  176. <?php
  177.  
  178.  
  179. echo "
  180. <a href=\"edit.php?a=edit&id={$r->id}\"/><button class=\"btn btn-primary btn-sm\" data-toggle=\"modal\" data-target=\"#myModal\">Edycja</button></a>
  181. <a href=\"usuwanie.php?a=del&id={$r->id}\"><button class=\"btn btn-primary btn-sm\" data-toggle=\"modal\" data-target=\"#myModal\">Usuń</button></a>
  182. ";
  183. echo "</td>";
  184. echo "</tr>";
  185. }
  186. echo "</table>";
  187. echo "</div>";
  188. }
  189.  
  190.  
  191.  
  192. //zamknięcie połączenia z bazą danych
  193. if ( !mysql_close() ) {
  194. echo 'Nie moge zakonczyc polaczenia z baza danych';
  195. exit (0);
  196. }
  197.  
  198.  
  199. //Funkcja porządkuje dane wprosprawdzone do formularza:
  200.  
  201. function SkorygujZmienneZFormularza(&$imie,&$email) {
  202. if ( isset($_POST["imie"]) )
  203. $imie = trim($_POST["imie"]);
  204. else
  205. $imie = "";
  206.  
  207. if ( isset($_POST["email"]) )
  208. $email = trim($_POST["email"]);
  209. else
  210. $email = "";
  211.  
  212. }
  213.  
  214.  
  215. //Funkcja sprawdza czy dane sa poprawne czyli czy nie sa puste
  216.  
  217. function SprawdzPoprawnoscDanych ($imie, $email) {
  218. if ( ($imie=="") || ($email=="") )
  219. return "zle_dane";
  220. return "dane_ok";
  221. }
  222.  
  223. ?>
  224.  
  225. </body>
  226. </html>
  227.  


I jeszcze plik edit.php który działa prawidłowo pod przyciskiem "Edycja" lecz otwiera formularz w nowym oknie a mi zależy aby otwierane było w okienku popup:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html>
  3. <head>
  4. <title></title>
  5. <meta http-equiv=content-type content="text/html; charset=iso-8859-2">
  6. <meta http-equiv="Content-Language" content="pl">
  7. </head>
  8.  
  9. <body>
  10. <?php
  11. $adres_ip_serwera_mysql_z_baza_danych = 'localhost';
  12.  
  13. $nazwa_bazy_danych = 'test';
  14.  
  15. $login_bazy_danych = 'login';
  16.  
  17. $haslo_bazy_danych = 'haslo';
  18.  
  19. if ( !mysql_connect($adres_ip_serwera_mysql_z_baza_danych,
  20.  
  21. $login_bazy_danych, $haslo_bazy_danych) ) {
  22. echo 'Nie moge polaczyc sie z baza danych';
  23. exit (0);
  24. }
  25.  
  26. if ( !mysql_select_db($nazwa_bazy_danych) ) {
  27. echo 'Blad otwarcia bazy danych';
  28. exit (0);
  29. }
  30.  
  31. $a = trim($_REQUEST['a']);
  32. $id = $_GET['id'];
  33.  
  34. if($a == 'edit' and !empty($id)) {
  35. /* zapytanie do tabeli */
  36. $wynik = mysql_query("SELECT * FROM test2 WHERE
  37. id='$id'")
  38. or die('Błąd zapytania');
  39.  
  40. if(mysql_num_rows($wynik) > 0) {
  41. /* odczytujemy zawartość wiersza z tabeli */
  42. $r = mysql_fetch_assoc($wynik);
  43.  
  44.  
  45.  
  46. <form action="index.php" method="post">
  47. <input type="hidden" name="a" value="save" />
  48. <input type="hidden" name="id" value="'.$id.'" />
  49. imię:<br />
  50. <input type="text" name="imie"
  51. value="'.$r['imie'].'" /><br />
  52. e-mail:<br />
  53. <input type="text" name="email"
  54. value="'.$r['email'].'" /><br />
  55. <input type="submit" value="popraw" />
  56. </form>
  57.  
  58. ';
  59. }
  60. }
  61. elseif($a == 'save') {
  62. /* odbieramy zmienne z formularza */
  63. $id = $_POST['id'];
  64. $imie = trim($_POST['imie']);
  65. $email = trim($_POST['email']);
  66. /* uaktualniamy tabelę test2 */
  67. mysql_query("UPDATE test2 SET imie='$imie',
  68. email='$email' WHERE id='$id'")
  69. or die('Błąd zapytania');
  70. echo 'Dane zostały zaktualizowane';
  71. header( 'Location: index.php' ) ;
  72. }
  73.  
  74. ?>


Żadnych pomysłów?
radek87urban
Dodaj taki input na końcu pętli while wyświetlającej dane (ok 137 linijki):

  1. echo "<input type=\"button\" value=\"PUPAP\" onclick=\"openNewPopup('edit.php?a=edit&id=$r->id')\"/>";?>


Następnie gdzieś niżej daj taki kod js:

  1. function openNewPopup(url) {
  2. popupWindow = window.open(
  3. url,'popUpWindow','height=700,width=800')
  4. }
bialy857
Ok dzięki bardzo. Jak wrócę do domu to sprawdzę. Tylko czy to nie tworzy nowego okienka popup (wyglad)? Nie da rady wyświetlić tego w tym okienku które juz mam w kodzie? Ewentualnie zadeklarować wygląd okienka tego co podałeś na to co ja mam?

macie inne pomysły? moze to okienko popup ma zablokowane wyswietlanie edycji? kod okienka jest z jquery. Wstawilem powyzszy kod i w okienku popup java wyswietla sie wszystko tylko ze wyglada to brzydko.

Czytałem trochę i może ta edycję zrobić w ajax? Tylko mógłby ktoś chociaż podpowiedzieć jak?
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.