Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Dziwny problem z komentarzami...
Forum PHP.pl > Forum > Przedszkole
Uerty
Mam problem z komentarzami. Piszę system newsów i chcę zrobić coś takiego jak w większości systemów, że wyświetla komentarze które zostały wprowadzone do odpowiedniego newsa, ale z tym sobie poradzę. Problem jest w czymś innym. Jak klikam na newsa o id= 1 i piszę komentarz i wysyłam go to do bazy to zamiast o id równym newsa tego co kliknąłem, trafia komentarz o id newsa równym 2. Bazę mam tak skonstruowaną żeby jak najmniej COUNT() używać smile.gif , więc po to pole newsid jest. Co jest tego przyczyną? Cały kod:

  1. <?php
  2.  
  3. mysql_connect('localhost','root','mentormiszcz1e');
  4. mysql_select_db('system');
  5.  
  6. $select= "SELECT id,subject,content,author,date FROM news";
  7. $display= mysql_query($select);
  8.  
  9. while ($show= mysql_fetch_assoc($display)) {
  10.  
  11. $_GET['id']= $show['id'];
  12. $id= htmlspecialchars($_GET['id']);
  13.  
  14. echo '<div id="subject">'. $show['subject'] . '</div>'
  15. . '<div id="content">' . $show['content'] . '</div>'
  16. . '<div id="authdate">' . 'Author: ' . $show['author'] . 'Added: ' . $show['date']
  17. . '<a href="show.php?show=true&amp;id='.$id.'">comments</a>'
  18.  . '</div>';
  19.  
  20.  
  21. } // end while $show
  22.  
  23. if (htmlspecialchars($_GET['show'])== "true") {
  24.  
  25. if ($_GET['id']) {
  26. echo '<form action="show.php?show=true&amp;id='.$id.'" method="post">
  27. <div id="form">
  28. <label>Nick: <input type="text" name="author" /></label>
  29. <textarea name="content" cols="35" rows="15"></textarea>
  30. <input type="submit" value="Add my comment" />
  31. </div>
  32. </form>';
  33. }
  34.  
  35. if (!empty($_POST['author']) && !empty($_POST['content'])) {
  36.  
  37. $date= date("d.m.Y");
  38. $insert= "INSERT INTO `comments` (author,content,date,newsid) VALUES
  39. ('".$_POST['author']."','".$_POST['content']."','$date','$id')";
  40. mysql_query($insert);
  41. } // end empty $_POST
  42.  
  43. } // end $_GET['show']== "true"
  44.  
  45. ?>
robos85
może w formularzu dorób
  1. <input type="hidden" />
i daj mu wartość równą temu id pobranemu z GET?
Ja zawsze tak robię i działa.
Uerty
Nie działa tak. Wydaje mi się że trzeba ifa z $_GET['show'] inaczej zrobić tylko właśnie jak. Nie mam pomysłu. Ifa z $_GET['id'] też usunąłem bo niepotrzebny ale i tak dalej nic. Macie może jakieś pomysły jak to rozwiązać?
nospor
w petli wyswietlajacej newsy masz:
  1. <?php
  2. $_GET['id']= $show['id'];
  3. $id= htmlspecialchars($_GET['id']);
  4. ?>

przeciez ty tu do GET a potem do $id przypisujesz id z petli.

potem ty to ID wykorzystujesz do dodania komenta dla konretnego newsa z konkretnym ID. Ale to ID ty juz zmieniles (nadpisales) w tej petli i zawsze komentujesz ostatniego newsa.
Uerty
Czyli co mam konkretnie zrobić? Dać żeby zmienna GET była równa tej id, ale przed pętlą ?
nospor
masz nie nadpisywac tego id w petli. Jak to zrobic? No zastanow sie odrobine. Dostales blad jak na tacy, byloby milo jakbys sprobowal naprawic go sam. I nie pisz ze jestes poczatkujacy - tutaj potrzeba odrobiny pomyslenia i zastanowienia sie nad problemem. Im szybciej sie tego nauczysz tym lepiej dla ciebie.
Uerty
Mam coś takiego. Teraz dzieje się tak, że zapisuje id=1, ale też o id=2 no i sie dwa formularze przy newsach pojawiają. To jest wina tego, że wszystko jest w pętli. Więc jak to rozwiązać, żeby tego w pętli było? Warunek z ifem czy co?
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.