Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Dodawanie komentarza do wiadomości
Forum PHP.pl > Forum > Przedszkole
andrzejlechniak
Witam
Mam pewien problem. Chodzi o dodawanie komentarzy do wiadomości. Tzn. sam komentarz dodaje się do bazy, ale nie przypisuje się do konkretnej wiadomości. Nie bardzo wiem dlaczego.

Mam 2 tabele: wiadomości (id, tresc,...) i komentarze (id, id_wiadomosci,tresc,...). Id_kategorii jest równy id (w tab. komentarze_wiadomosci). Oto kawałek kodu odpowiedzialny za dodawanie komentarza:

  1. if(isset($_POST['submit']))
  2. {
  3. $osoba = mysql_real_escape_string(htmlspecialchars($_POST['osoba']));
  4. $tresc = mysql_real_escape_string(htmlspecialchars($_POST['tresc']));
  5. $id = $_POST['id'];
  6. $id_kategorii = $_POST['id_kategorii'];
  7.  
  8. if(empty($osoba) || empty($tresc))
  9. {
  10. echo '<div class="niedodanie_komentarza">
  11. Komentarz nie został dodany. Pola nazwy lub treści komentarza są puste! Spróbuj jeszcze raz.
  12. </div>';
  13. }
  14. else if(strlen($_POST['osoba'])<3)
  15. {
  16. echo '<div class="niedodanie_komentarza">
  17. Komentarz nie została dodany. Pole OSOBA - <span>'.$osoba.'</span> jest za krótkie! Spróbuj jeszcze raz.
  18. </div>';
  19. }
  20. else if(strlen($_POST['tresc'])<4)
  21. {
  22. echo '<div class="niedodanie_komentarza">
  23. Komentarz nie została dodany. Pole TREŚĆ - <span>'.$tresc.'</span> jest za krótkie! Spróbuj jeszcze raz.
  24. </div>';
  25. }
  26. else
  27. {
  28. $id_kategorii['id_wiadomosci'] = $idNews;
  29. $sql = "INSERT INTO komentarze_wiadomosci (id,osoba,tresc,data) VALUES ('$id','$osoba','$tresc',CURDATE());";
  30. $result = mysql_query($sql) or die( mysql_error()) ;
  31.  
  32. if($result)
  33. {
  34. echo '<div class="dodanie_komentarza">
  35. Komentarz dodany poprawnie. <a href="index.php?id=wydarzenia&idnewsa='.$idNews.'">Odśwież</a> aby zobaczyć swój komentarz na stronie.</div>';
  36. }
  37. else
  38. {
  39. echo 'Komentarz nie zostal dodany.';
  40. }
  41. }
  42. }


Bardzo proszę o podpowiedź lub pomoc. Pozdrawiam
mat-bi
A gdzie masz prypisanie id wiadomości do komentarza? Bo nie sądzę, że to id...
andrzejlechniak
Przypisanie id_wiadomości do id komentarza mam wcześniej,gdy wyświetlam wszystkie wiadomości:

  1. $sql_2 = 'SELECT w.id wid, k.id kid, k.osoba kosoba, k.data kdata, k.tresc ktresc FROM komentarze_wiadomosci k '.
  2. 'LEFT JOIN wiadomosci w ON w.id = k.id_wiadomosci WHERE k.id_wiadomosci= '.$id.' ORDER BY k.id ASC';
  3. $res_2 = mysql_query($sql_2) or die(mysql_error());
  4. while ($row = mysql_fetch_array($res_2))
  5. {
  6. extract($row);
  7. if(!isset($wid))
  8. {
  9. echo '<div class="komentarze_main_a">Nie ma wyników dla tej kategorii</div>';
  10. }
  11. else
  12. {
  13. echo '<div class="komentarze_main_a">';
  14. echo '<div class="komentarze_autor">Komentarz nr: <span>'.$kid.'</span> | dodany przez: <span>'.$kosoba.'</span> | dnia: <span>'.$kdata.'</span></div>';
  15. echo '<div class="komentarze_tresc">'.$ktresc.'</div>';
  16. echo '</div>';
  17. }
  18.  
  19. }
  20. echo '</div>';


i czy w dodawaniu komentarzy też przypisać id_wiadomości do id komentarza?
Fifi209
A pokaż formularz, który przesyłasz do skryptu (tego co dodaje)
andrzejlechniak
Przesyłanie danych przez formularz:

  1. echo '<div class="komentarze_main">
  2. <form action="index.php?id=wydarzenia&idnewsa='.$idNews.'" method="post">
  3. <div class="formularz_komentarza">
  4. Przedstaw się: <br />
  5. <input type="text" name="osoba" />
  6. </div>
  7. <div class="formularz_komentarza">
  8. Napisz komentarz:<br /> <textarea cols="20" rows="5" name="tresc"></textarea>
  9. </div>
  10. <div class="formularz_komentarza">
  11. <img src="obrazki/uwaga.png" class="komentarz_uwaga" />
  12. Wysłanie komentarza jest równoznaczne z akceptacją regulaminu!<br />
  13. <input type="checkbox" name="nazwa" value="wartość" onclick="this.form.elements[\'submit\'].disabled = !this.checked" />Akceptuję regulamin</a>
  14. <input type="submit" name="submit" value="Dodaj" disabled="disabled" />
  15. <input type="reset" name="reset" value="Wyczyść"/>
  16. <br />
  17. <a href="java script:otwieranieOkna(\'regulamin.html\')" title="Zanim się wpiszesz, przeczytaj regulamin">Regulamin komentarzy</a>
  18. </div>
  19. </form>
  20. </div>';


Nie wiem czemu nie przypisuje się automatycznie id_wiadomosci do komentarza, znaczy komentarz dodaje się ale nie jest przypisany do konkretnej, jednej wiadomości.
Fifi209
id_news'a podajesz w get, a chcesz odbierać w post.
drPayton
  1. $id_kategorii['id_wiadomosci'] = $idNews;


A gdzie jest deklarowane "$idNews"?
andrzejlechniak
W początkowych wersach skryptu jest:

  1. $idNews = (int)$_GET['idnewsa'];
  2. $sql = 'select * from wiadomosci where id='.$idNews;
  3. $res = mysql_query($sql) or die(mysql_error());


$idNews - służy do wyświetlania jednej, konkretnej wiadomości.
drPayton
a post @Fifi209'a widział, hę? oneeyedsmiley02.png
andrzejlechniak
Nie rozumiem, przecież $idNews przesyłam wewnątrz pętli a i powinienem odbierać je także wewnątrz pętli. Innymi słowy, widzę gdzie jest problem:

  1. $id_kategorii['id_wiadomosci'] = $idNews;

ale wciąż nie wiem jak to zmienić....
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.