Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Aktualizacja tabel...
Forum PHP.pl > Forum > Przedszkole
Reiven
Witam, wziąłem się za pisanie takiego swojego mini cms'a i mam problem z aktualizacją tabel. Dane wyświetla normalnie w formularzu ale żeby je uaktualnić to już nie chce.


  1. <?php
  2. function edit_news()
  3. {
  4. $id = $_GET['id'];
  5. echo '<b>Edycja News'a:.</b>';
  6. $query2 = "SELECT * FROM news WHERE id_n='$id'";
  7. $result2 = mysql_query ($query2);
  8. $row2 = mysql_fetch_array($result2);
  9.  
  10. $id = $row2['id_n'];
  11. $tytul = $row2['tytul'];
  12. $tresc = $row2['tresc'];
  13. $autor = $row2['autor'];
  14.  
  15. echo '<form action="index.php" method="POST" style="border: 0px;"><table><tr><td>Tytul Newsa:</td><td><input type="text" name="tytul" value="'.$tytul.'"></td></tr><tr><td>Tresc:</td><td><textarea name="text" rows="15" cols="80" style="width: 100%">'.$tresc.'</textarea></td></tr>
  16.  
  17.  
  18. <tr><td>Dodal:</td><td>'.$autor.'</td></tr>
  19. <tr>
  20. <td style="color:797979;" valign="top">akcje:</td>
  21. <td valign="top">
  22. <input type="hidden" name="id" value="'.$id.'">
  23. <input type="hidden" name="cmd" value="edit_n_ok">
  24. <input class="button" type="submit" style="font-weight: bold;" value="Edytuj">
  25. </form></td>
  26. </tr>
  27. </table>';
  28. }
  29.  
  30. function edit_n_ok()
  31. {
  32. global $tytul,$tresc,$autor,$id;
  33. $tresc= nl2br($tresc);
  34. $query = "UPDATE news SET tytul='$tytul', tresc='$tresc' WHERE id='$id'";
  35.  
  36.  
  37.  $result = mysql_query($query);
  38. echo "<script>self.location.href=" index.php?cmd=4";</script>";
  39. }
  40. ?>


a tak wyglądają linki:

  1. <?php
  2. elseif ($cmd == 'edit_n') {
  3. include ("f/news.php");
  4. edit_news();
  5. } elseif ($cmd == 'edit_n_ok') {
  6. include ("f/news.php");
  7. edit_n_ok();
  8. }
  9. ?>


próbowałem też tak:

  1. <?php
  2. $query = "UPDATE `news` SET `tytul`='$_POST["tytul"]', `tresc`='$_POST["tresc"]' WHERE `id`=$_POST["id"]'";
  3. ?>


i też nic to nie dało sad.gif
kossa
masz błąd w tym kodzie:

Cytat
$query = "UPDATE `news` SET `tytul`='$_POST["tytul"]', `tresc`='$_POST["tresc"]' WHERE `id`=$_POST["id"]'";


powino być:
  1. $query = "UPDATE news SET tytul='".$_POST["tytul"]."', tresc='".$_POST["tresc"]."' WHERE id=".$_POST["id"]." ";

Łukasz
Reiven
zmieniłem i nadal nic....
Neojawor
a czy nie powinno być $_POST['tytul'] zamiast $_POST["tytul"]?

ale przede wszystkim:
1) napisałeś funkcję edit_n_ok() i nigdzie jej nie wywołujesz, więc jak ma coś uaktualnić?
2) zmienne $tytul, $tresc i pozostałe w funkcji edit_n_ok() dostają atrybut global (nie wiem po co), a nie dostają żadnej wartości. Wyechuj w tej funkcji wszystkie te zmienne, to zobaczysz, że nic nie zawierają. Musisz im podać wartości wzięte z formularza, a więc:
$tytul = .... i tu bym coś wpisał, ale widzę, że przecież Ty nie masz formularza, który by zmieniał jakąkolwiek wartość

ten Twój form może nas przenieść do jakiejś strony, gdzie będzie inny form z polami wypełnionymi już obecną zawartością danego rekordu i tam dopiero wpiszesz nowe wartości i klikniesz submit-a który wywoła update
Reiven
oj źle zauważyłeś winksmiley.jpg)
  1. <?php
  2. elseif ($cmd == 'edit_n_ok') {
  3. include ("f/news.php");
  4. edit_n_ok();
  5. ?>


funkcja jest wykonywana.


hmm co do tego co napisałeś w pkt2
zrobiłem tak:

  1. <?php
  2. global $tytul,$tresc,$id;
  3. $tresc= nl2br($tresc);
  4. $query = "UPDATE news SET tytul='".$_POST["tytul"]."', tresc='".$_POST["tresc"]."' WHERE id=".$_POST["id"]." ";
  5.  
  6. echo $tytul;
  7. echo $tresc;
  8. echo $id;
  9.  $result = mysql_query($query);
  10. ?>


i mi wyświetliło zmieniony tytuł i ID lecz treści nie wyświetliło.. a w bazie danych i tak nawet tytułu nie zmieniło.
Neojawor
oki, widzę że nie mogę sie połapać w Twoim kodzie, ale wiem dlaczego. Nie zauważyłem że masz w jednej linijce całą zawartość form-a i tylko widziałem dwa pola typu hidden (linia 15) smile.gif
Mam jednak pytania, żeby się połapać w plikach:
- czy ten pierwszy kod który podałeś to jest index.php ?
- w jakim pliku zawierają się te wywołania edit_news() i edit_n_ok() ?
- zastanawiam się, skąd się mają wziąć wartości zmiennych $tytul, $tresc, $autor, $id w funkcji edit_n_ok()? - przekazujesz je metodą POST z tego formularza, który masz w 15 linii? jeśli tak, to na początku funkcji zrobiłbym coś takiego:
$tytul=$_POST['tytul];
$tresc=$_POST['text'];
$id = $_POST['id];
natomiast zmienną $autor bym pominął bo do update nie jest potrzebna
a co do zapytania to dałbym je w takiej wersji jak podałeś na początku, z małą zmianą - id nie dajemy w ciapki, bo to liczba, a nie tekst:
  1. <?php
  2. $query = "UPDATE news SET tytul='$tytul', tresc='$tresc' WHERE id=$id";
  3. ?>


i mała uwaga:
- jeśli już używasz tablic referencyjnych, to identyfikatory bierz w apostrofy, a nie cudzysłowy, czyli daj $_POST['tytul'] zamiast $_POST["tytul"] - nie jestem pewien czy to ma znaczenie, ale na wszelki wypadek lepiej trzymać się standardu.
Reiven
nie ten 1 kod to nie index.php
to jest część pliku: f/news.php

w index.php mam ten kod:
  1. <?php
  2. elseif ($cmd == 'edit_n') {
  3. include ("f/news.php");
  4. edit_news();
  5. } elseif ($cmd == 'edit_n_ok') {
  6. include ("f/news.php");
  7. edit_n_ok();
  8. }
  9. ?>


co do kolejnego pytania... to się trochę rozpędziłem i dodałem $autor w globalach. Chciałbym dodać że jestem początkujący z php =) więc proszę o cierpliwość winksmiley.jpg dodałem na początku funkcji to co napisałeś, zmieniłem zapytanie i dalej nic...

już zrobiłem, miałem konflikt ze zmiennymi =) lecz teraz nie chce mi pobierać ID w innym skrypcie :| też związane z update.

Oto skrypt:
f/strony.php
  1. <?php
  2. function strony_ok() {
  3. global $cmd,$zaloguj_login,$tytul,$text;
  4. $query = "INSERT INTO strony VALUES(NOT NULL, '$tytul', '$text')";
  5. mysql_query($query);
  6. echo "<script>self.location.href=" index.php?cmd=2";</script>";
  7. }
  8.  
  9. function strony_edit() {
  10.  
  11. global $ids, $titles, $teksts;
  12. $id = $_GET['id'];
  13. $query2 = "SELECT * FROM strony WHERE id_s='$id'";
  14. $result2 = mysql_query ($query2);
  15. $r2 = mysql_fetch_array($result2);
  16.  
  17. $id = $r2['id_s'];
  18. $titles = $r2['tytul'];
  19. $teksts = $r2['text'];
  20.  
  21.  
  22. echo '<form name="form_1" method="POST" action="index.php">
  23. <table align="center" border="0" cellspacing="3" cellpadding="0">
  24. <tr>
  25. <td align="right" valign="top" class="uni_01">tytuł</td>
  26. <td class="next">
  27. <input type="text" name="tytul" size="35" value="'.$titles.'">
  28. </td>
  29. </tr>
  30. <tr>
  31. <td align="right" valign="top" class="uni_01">zawartość</td>
  32. <td class="next">
  33. <textarea name="text" rows="15" cols="80" style="width: 100%">'.$teksts.'</textarea>
  34. </td>
  35. </tr>
  36. <tr>
  37. <td align="right" valign="top" class="uni_01">&nbsp;</td>
  38. <td class="next">
  39. <input type="hidden" name="id" value="'.$id.'">
  40. <INPUT type="hidden" name="cmd" value="strony_up">
  41. <input style="font-weight: bold;" type="submit" name="ok" value="zapisz">
  42. <input type="reset" name="Reset" value="wyczyść">
  43. </td>
  44. </tr>
  45. </table>
  46. </form>
  47. ';
  48. }
  49.  
  50. function strony_up() {
  51.  
  52.  
  53.  
  54. $titles = $_POST['tytul'];
  55. $teksts = $_POST['text'];
  56. $id = $_GET['id_s'];
  57.  
  58.  
  59.  
  60. $query = "UPDATE strony SET tytul='$titles', text='$teksts' WHERE id_s=$id";
  61.  
  62. echo $query;
  63.  $result = mysql_query($query);
  64.  
  65. }
  66. ?>


a w index.php mam tak:

  1. <?php
  2. elseif ($cmd == '2') {
  3.  include ("f/strony.php");
  4. echo 'Strony Serwisu';
  5. echo '<table align="center" width="100%"><tr><td height="20%" bgcolor="#F4F4F4">ID</td><td height="20%" bgcolor="#F4F4F4">Tytuł</td><td height="20%" bgcolor="#F4F4F4">Akcja</td></tr>';
  6.  strony();
  7.  echo '</table>';
  8.  dodaj_s();
  9. } elseif ($cmd == 'strony_ok') {
  10.  include ("f/strony.php");
  11. echo 'Strony Serwisu - Dodaj Informacje';
  12.  strony_ok();
  13. } elseif ($cmd == 'strony_edit') {
  14.  include ("f/strony.php");
  15. echo '<BR>Aktualizacja danych<BR>';
  16.  strony_edit();
  17. } elseif ($cmd == 'strony_up') {
  18.  include ("f/strony.php");
  19. echo '<BR>Aktualizacja danych<BR>';
  20.  strony_up();
  21. }
  22. ?>


jak widzicie w 1 skrypcie umieściłem echo $query; żeby wyswietliło mi jakie zapytanie z tego wychodzi i tylko ID nie chce pobrać....

-------------

temat do zamknięcia, problem rozwiązałem.
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.