Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] edycja komentarzy, select, update
Sadu2
post
Post #1





Grupa: Zarejestrowani
Postów: 229
Pomógł: 13
Dołączył: 31.05.2007

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
sticker
post
Post #2





Grupa: Zarejestrowani
Postów: 611
Pomógł: 19
Dołączył: 28.02.2005
Skąd: Wrocław

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


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">
Go to the top of the page
+Quote Post
Sadu2
post
Post #3





Grupa: Zarejestrowani
Postów: 229
Pomógł: 13
Dołączył: 31.05.2007

Ostrzeżenie: (10%)
X----


hmm co masz na myśli? (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) bo ja nie widze róznicy ...
Go to the top of the page
+Quote Post
sticker
post
Post #4





Grupa: Zarejestrowani
Postów: 611
Pomógł: 19
Dołączył: 28.02.2005
Skąd: Wrocław

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


zmienna get act (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)
Go to the top of the page
+Quote Post
Sadu2
post
Post #5





Grupa: Zarejestrowani
Postów: 229
Pomógł: 13
Dołączył: 31.05.2007

Ostrzeżenie: (10%)
X----


(IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Czy móglbyś jaśniej? Przepraszam ale raczkuje w tych sprawach.

//EDIT:

Nikt nie wie jak co może być źle?

Ten post edytował Sadu2 11.06.2007, 19:31:22
Go to the top of the page
+Quote Post
Norbas
post
Post #6





Grupa: Zarejestrowani
Postów: 100
Pomógł: 1
Dołączył: 6.02.2006

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


  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


Ten post edytował Norbas 12.06.2007, 12:58:18
Go to the top of the page
+Quote Post
Sadu2
post
Post #7





Grupa: Zarejestrowani
Postów: 229
Pomógł: 13
Dołączył: 31.05.2007

Ostrzeżenie: (10%)
X----


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. (IMG:http://forum.php.pl/style_emoticons/default/dry.gif)

Ten post edytował Sadu2 12.06.2007, 16:30:44
Go to the top of the page
+Quote Post
Norbas
post
Post #8





Grupa: Zarejestrowani
Postów: 100
Pomógł: 1
Dołączył: 6.02.2006

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


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>';
}
//..
Go to the top of the page
+Quote Post
Sadu2
post
Post #9





Grupa: Zarejestrowani
Postów: 229
Pomógł: 13
Dołączył: 31.05.2007

Ostrzeżenie: (10%)
X----


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





Grupa: Zarejestrowani
Postów: 100
Pomógł: 1
Dołączył: 6.02.2006

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


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

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

 



RSS Aktualny czas: 5.10.2025 - 14:09