Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] edycja komentarzy
Forum PHP.pl > Forum > Bazy danych > MySQL
Sadu2
Witam,
Jestem początkujący w tych sprawach i prosze o wyrozumiałość. :) Otóż mam taki kod:


  1. // EDYCJA KOMENTARZY
  2. else if($act == "edycja_kom") {
  3. echo "<center><b>Edytuj komentarz</b></center></br>";
  4. if(!$_POST[Zapisz]) {
  5. $id = $_GET[id];
  6. $id2 = $_GET[id2];
  7.  
  8. $query = "SELECT id, tresc FROM news_kom WHERE id = '$id'";
  9. $result = mysql_query($query) or die(mysql_error());
  10. $db = mysql_fetch_array($result);
  11. $tresc = walidacja2($db[tresc]);
  12. ?>
  13.  
  14. <form method="post" action="admin.php?go=news&act=edytuj_kom&id=<? echo $id; ?>&id2=$id">
  15. <b>Tresć:</b><br>
  16. <textarea name="tresc" cols="50" rows="12"><? echo $tresc; ?></textarea><br>
  17. <input type="submit" name="zapisz" value="Zapisz"></form>
  18. <?
  19. } else {
  20. $tresc = walidacja($_POST[tresc]);
  21.  
  22. $query = "UPDATE news_kom SET tresc = '$tresc' WHERE id = '$id'";
  23. $result = mysql_query($query) or die(mysql_error());
  24.  
  25. if($result) echo "Edycja zakończona !<br>
  26.  <a href="admin.php?go=news"><img src="gfx/powrot.jpeg" alt="powrot"></a>";
  27. if(!$result) echo "Edycja nie powiodła się !<br> 
  28. <a href="admin.php?go=news"><img src="gfx/powrot.jpeg" alt="powrot"></a>";
  29. }
  30. }
  31. }
  32.  
  33. ?>


I wszystko jest dobrze, tylko że jak klikam na zapisz, to nie ma zadnej reakcji, nie wyskakuje zaden result ani nie zapisuje sie edycja komentarza. Co zrobiłem nie tak?
Pozdrawiam
sticker
moze to
  1. else if($act == "edycja_kom") {
  2. echo "<center><b>Edytuj komentarz</b></center></br>";
  3.  
  4. ....
  5. <form method="post" action="admin.php?go=news&act=edytuj_kom&id=<? echo $id; ?>&id2=$id">
Sadu2
hmm co masz na myśli? biggrin.gif bo ja nie widze róznicy ...
sticker
zmienna get act snitch.gif
Sadu2
sad.gif Czy móglbyś jaśniej? Przepraszam ale raczkuje w tych sprawach.

//EDIT:

Nikt nie wie jak co może być źle?
Norbas
  1. Przede wszystkim przy indeksach tekstowych dla tablic $_GET oraz $_POST wstawiaj cudzysłowy lub apostrofy, czyli $_POST['nazwa'] albo $_GET["nazwa"]
  2. W wierszu 4. w kodzie, który podałeś powinien być warunek:
    Kod
    if(!isset($_POST['zapisz'])) {
  3. W wierszu 14. masz wstawiony parametr id2, który zawsze będzie równy $id, gdyż nie jest przetwarzany przez interpreter.
  4. Przy wysyłaniu formularza wywołujesz: admin.php?go=news&act=edytuj_kom..., zaś przy sprawdzaniu jaka akcja została wywołana masz ($act == "edycja_kom"), moim zdaniem w wierszu 2. w kodzie który podałeś powinien być warunek:
    Kod
    else if($act == "edytuj_kom") {

    albo należy zmienić parametr act na edycja_kom w formularzu
Sadu2
O przepraszam, tyle razy na to patrzylem i nie zauwazyłem. No to teraz jak kilkam zapisz to żadnej reakcji nie mam, tylko jedynie zmienia sie link z:

admin.php?go=news&act=edytuj_kom&id=16&id2=39

na:

admin.php?go=news&act=edytuj_kom&id=16&id2=

id odpowiada id komentarza, a id2 odpowiada news_id czyli jakiego newsa to tyczy. Więc co nadal jest źle. dry.gif
Norbas
Wiersze 5. i 6. w kodzie, który podałeś wstaw przed warunek sprawdzający czy wysłano formularz, czyli:
Kod
//...
echo '<center><b>Edytuj komentarz</b></center></br>';
$id = intval($_GET['id']);
$id2 = intval($_GET['id2']);
if(!isset($_POST['zapisz']) {
    $query = 'SELECT id, tresc FROM news_kom WHERE id=' . $id;
    $result = mysql_query($query) or die(mysql_error());
    $db = mysql_fetch_array($result);
    echo '<form method="post" action="admin.php?go=news&act=edytuj_kom&id=' . $id . '&id2='. $id2 . '">' . PHP_EOL;
    echo '<b>Tresć:</b><br><textarea name="tresc" cols="50" rows="12">'
    echo htmlspecialchars($tresc) . '</textarea><br>' . PHP_EOL;
    echo '<input type="submit" name="zapisz" value="Zapisz"></form>' . PHP_EOL;
}
else {
    $tresc = walidacja($_POST['tresc']);
    $query = "UPDATE news_kom SET tresc = '$tresc' WHERE id = $id";
    $result = mysql_query($query) or die(mysql_error());
    echo 'Edycja zakończona !<br><a href="admin.php?go=news"><img src="gfx/powrot.jpeg" alt="powrot"></a>';
}
//..
Sadu2
A ja mam oto taki kod:

  1. // TU EDYCJA
  2. if ($act == "edycja_kom") {
  3. if ($_POST['submit'] == 'Zapisz') {
  4. //Sformatowanie danych
  5. $id = $_POST['id'];
  6. $tresc = walidacja($_POST['tresc']);
  7. //Zapytanie
  8. $query = "UPDATE news_kom SET tresc = '$tresc' WHERE id = '$id'";
  9. $result = mysql_query($query) or die(mysql_error());
  10.  
  11. if (mysql_affected_rows() == 1) {
  12. $success_msg = "<P>Twój komentarz został uaktualniony!</P>";
  13. } else {
  14. error_log(mysql_error());
  15. $success_msg = "<P>Nie udalo się zaktualizować!</P>";
  16. }
  17.  
  18. } else {
  19. //Odczytanie komentarza wraz z tytułem
  20. $id = $_GET['id'];
  21. $query = "SELECT id, news_id, tresc FROM news_kom WHERE id = '$id'";
  22. $result = mysql_query($query) or die(mysql_error());
  23. $db = mysql_fetch_array($result);
  24.  
  25. }
  26. $thispage = $SERVER['PHP_SELF'];
  27. $form_page = <<< EOFORMPAGE
  28.  
  29. <form method="post" action="$this_page">
  30. <b>Treść:</b><br>
  31. <textarea name="tresc" cols="50" rows="12"><? $tresc ?></textarea><br>
  32. <input TYPE="hidden" Name="id" value="$id">
  33. <input type="submit" name="submit" value="Zapisz"></form>
  34.  
  35. $success_msg
  36. EOFORMPAGE;
  37. echo $form_page;
  38. }
  39. }


Tylko jest taka sprawa ze nie wyświetla mi treści komentarza w textarea, jest pusto, natomiast jesli wpisze cos i wezme zapisz, to wszystko jest ok. Jedyny problem to to ze nie widze tego komentarza którego edytuje.
Norbas
  1. Po odczytaniu wyniku zapytania nie ustawiasz zmiennej $tresc (instrukcja powinna być w wierszu 24.)
  2. W wierszu 31. usuń znaczniki <? i ?>
  3. Moim zdaniem powinieneś zmienić wiersz 9., gdyż kod poniżej nie wykona się nigdy, gdy będą jakieś błędy w zapytaniu. Propozycja:
    Kod
    $result = @mysql_query($query);
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.