Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Dziwny problem z komentarzami...
-Uerty-
post
Post #1





Goście







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ć (IMG:http://forum.php.pl/style_emoticons/default/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. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
robos85
post
Post #2





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


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





Goście







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ć?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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





Goście







Czyli co mam konkretnie zrobić? Dać żeby zmienna GET była równa tej id, ale przed pętlą ?
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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





Goście







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?
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: 22.08.2025 - 16:42