Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Znowu o komentarzach
Forum PHP.pl > Forum > Przedszkole
andrzejlechniak
Witajcie. Już parę razy pisałem na tym forum o moim problemie. Chodzi o komentarze. W ogóle mi to nie chce działać. Raport błędów nie wykazuje błędów, ale skrypt też nie dodaje komentarza do bazy. PROSZĘ o pomoc.

PS. Dodam tylko, że to jest fragment skryptu,który wyświetla tylko jedną wiadomość.
  1. <?php
  2. ...
  3. //WYŚWIETLANIE POJEDYNCZEJ WIADOMOŚCI
  4. if(isset($_GET['idnewsa']))
  5. {
  6. echo '<div class="tytul_strony">
  7. <img src="obrazki/wiadomosc.png" class="komentarz_zdj" />
  8. Dziennik pokładowy - wiadomość
  9. </div>';
  10. $idNews = (int)$_GET['idnewsa'];
  11. $sql = 'select * from wiadomosci where id='.$idNews;
  12. $res = mysql_query($sql) or die(mysql_error());
  13. $id_wiad = $res['id'];
  14. while ($row = mysql_fetch_array($res))
  15. {
  16. $wiadomosc = ereg_replace("\n", '<br>', $row['wiadomosc']);
  17. extract($row);
  18. echo '<div class="newsy">
  19. <div class="newsy_tytul">'.$tytul.' </div>
  20. </div>';
  21. }
  22.  
  23. $sql_2 = 'SELECT w.id wid, k.id kid, k.osoba kosoba, k.data kdata, k.tresc ktresc FROM komentarze_wiadomosci k '.
  24. 'LEFT JOIN wiadomosci w ON w.id = k.id_wiadomosci WHERE k.id_wiadomosci= '.$id.' ORDER BY k.id ASC';
  25. $res_2 = mysql_query($sql_2) or die(mysql_error());
  26.  
  27. $ilosc_komentarzy = mysql_num_rows($res_2);
  28. $text_kom = 'komentarze';
  29.  
  30. echo '<div class="komentarze_tytul_a">
  31. <img src="obrazki/komentarze_main.png" class="komentarz_zdj" />
  32. '.strtoupper($text_kom).' ['.$ilosc_komentarzy.']:
  33. </div>';
  34. echo '<div class="komentarze_main_m">';
  35.  
  36. while ($row = mysql_fetch_array($res_2))
  37. {
  38. extract($row);
  39. if(!isset($wid))
  40. {
  41. echo '<div class="komentarze_main_a">Nie ma wyników dla tej kategorii</div>';
  42. }
  43. else
  44. {
  45. echo '<div class="komentarze_main_a">';
  46. echo '<div class="komentarze_autor">Komentarz nr: <span>'.$kid.'</span> |
  47. dodany przez: <span>'.$kosoba.'</span>';
  48. echo '</div>';
  49. }
  50. }
  51. echo '</div>';
  52.  
  53. if(isset($_POST['submit']))
  54. {
  55. $osoba = mysql_real_escape_string(htmlspecialchars($_POST['osoba']));
  56. $tresc = mysql_real_escape_string(htmlspecialchars($_POST['tresc']));
  57. $id = $_POST['id'];
  58. $id_wiad = $_POST['id_wiadomosci'];
  59.  
  60. if(empty($osoba) || empty($tresc))
  61. {
  62. echo '<div class="niedodanie_komentarza">
  63. Komentarz nie został dodany. Pola nazwy lub treści komentarza są puste! Spróbuj jeszcze raz.
  64. </div>';
  65. }
  66. else if(strlen($_POST['osoba'])<3)
  67. {
  68. echo '<div class="niedodanie_komentarza">
  69. Komentarz nie została dodany. Pole \'OSOBA\' - <span>'.$osoba.'</span> jest za krótkie! Spróbuj jeszcze raz.
  70. </div>';
  71. }
  72. else if(strlen($_POST['tresc'])<4)
  73. {
  74. echo '<div class="niedodanie_komentarza">
  75. Komentarz nie została dodany. Pole \'TREŚĆ\' - <span>'.$tresc.'</span> jest za krótkie! Spróbuj jeszcze raz.
  76. </div>';
  77. }
  78. else
  79. {
  80. $sql['id'] = $idNews;
  81. $sql_3 = "INSERT INTO komentarze_wiadomosci (id,id_wiadomosci,osoba,tresc,data) VALUES ('$id','$id_wiadomosci','$osoba','$tresc',CURDATE());";
  82.  
  83. $result = mysql_query($sql_3) or die(mysql_error());
  84. if($result)
  85. {
  86. echo '<div class="dodanie_komentarza">
  87. Komentarz dodany poprawnie. <a href="index.php?id=wydarzenia&idnewsa='.$idNews.'">Odśwież</a> aby zobaczyć swój komentarz na stronie.</div>';
  88. }
  89. else
  90. {
  91. echo 'Komentarz nie zostal dodany.';
  92. }
  93. }
  94. }
  95.  
  96. echo '<div class="komentarze_tytul_a">
  97. <img src="obrazki/komentarze_add.png" class="komentarz_zdj" /> Napisz komentarz:
  98. </div>';
  99. echo '<div class="komentarze_main">
  100. <form action="index.php?id=wydarzenia&idnewsa='.$idNews.'" method="post">
  101. <div class="formularz_komentarza">
  102. Przedstaw się: <br />
  103. <input type="text" name="osoba" />
  104. </div>
  105. <div class="formularz_komentarza">
  106. Napisz komentarz [Maximum znaków to <strong>250</strong>]:<br />
  107. <div class="liczenie_znakow">Pozostało ci jeszcze:
  108. <strong>
  109. <span id="cnt1">0</span>/250
  110. </strong> znaków.
  111. </div>
  112. <textarea cols="20" rows="5" name="tresc" maxlength="250" onkeyup="LiczZnaki(this,cnt1,250);" onmouseup="LiczZnaki(this,cnt1,250);"></textarea>
  113. </div>
  114. <div class="formularz_komentarza">
  115. <img src="obrazki/uwaga.png" class="komentarz_uwaga" />
  116. Wysłanie komentarza jest równoznaczne z akceptacją regulaminu!<br />
  117. <input type="checkbox" name="nazwa" value="wartość" onclick="this.form.elements[\'submit\'].disabled = !this.checked" />Akceptuję regulamin</a>
  118. <input type="hidden" name="id" />
  119. <input type="hidden" name="id_wiadomosci" value="'.$id_wiad.'" />
  120. <input type="submit" name="submit" value="Dodaj" disabled="disabled" />
  121. <input type="reset" name="reset" value="Wyczyść"/>
  122. <br />
  123. <a href="java script:otwieranieOkna(\'regulamin.html\')" title="Zanim się wpiszesz, przeczytaj regulamin">Regulamin komentarzy</a>
  124. </div>
  125. </form>
  126. </div>';
  127.  
  128. }
  129. ?>
PanGuzol
W zapytaniu korzystasz ze zmiennej id_wiadomosci która nie istnieje czyli dodaje Ci 0.

Funkcje mysql_error oraz mysql_errno zwracają błędy z bazy danych.
andrzejlechniak
Problem w tym, że mysql_error nic nie pokazuje...
Przypisałem
  1. $id_wiadomosci = $sql['id'];

czyli do pierwszego zapytania,ale teraz mam komunikat:
Duplicate entry '3' for key 1

Już sobie poradziłem. Temat do zamknięcia...
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.