System newsów z dodawaniem komentarzy

0

Witam
Mam taki problem z dodawaniem komentarzy do newsów, myślę że to bardzo proste, ale nie mogę dojść jak to zrobić. Mianowicie system dodawania newsów mam opanowany(robię to w innym pliku), wyświetlanie komentarzy też działa poprawnie, dodawanie komentarzy działa prawie dobrze. Tu jest właśnie problem, nie potrafię dodać komentarza do konkretnego newsa. Problem tkwi w przypisanym $id, który jest pobierany z pętli while. $id przyjmuje zawsze wartość ostatniego newsa i w zostaje dodane do ostatniego newsa.

Chce żeby komentarz po dodaniu był przypisany do odpowiedniego newsa.

 
<?php
  include("../db_login.php");
  $zmienna = mysql_query("Select * from news order by id");
    while($wynik = mysql_fetch_array($zmienna)){
      $id = $wynik['id'];
      $date = $wynik['date'];
      $text = $wynik['text'];
      $title= $wynik['title'];
      echo  ("<h2 class=\"blog-post-title\"><a name=\"home\">$title</a></h2>".
            "<p class=\"blog-post-meta\">$date</p>"."<br />"."<p>$text</p>" . "<br />".
            "<hr>");

      echo 
        '<form method="post" action="index.php">
        <table>
          <p2>Komentarz</p2>
          <tr><td>Login:<input type="text" name="login"></td></tr>
          <tr><td>text: <input type="textarea" name="text"></td></tr>
          <tr><td><input type="submit" name="submit" value="wyslij"></td></tr>
        </table>
        </form>'."<hr>";

      $zmienna2 = mysql_query("SELECT * FROM komentarze WHERE id_news = $id order by id");
        while($wynik2 = mysql_fetch_array($zmienna2)){
          $date = date("Y-m-d H:i:s");
          $login = $wynik2['login'];
          $koment=$wynik2['koment'];
          echo("<h4>$login</h4>");
          echo ("<p>$date</p>"."<br />"."<p>$koment</p>" . "<br />");
        }
  }  
      $login = $_POST['login'];
      $text2 = $_POST['text'];
      $submit = $_POST['submit'];
      if($submit){
        if($login && $text2){
          mysql_query("INSERT INTO komentarze VALUES ('','$login','$text2','$id')");       
          header('location: succes.php');
        }
      }
?>
 <!--tabela bazy danych komentarzy (SELECT `id`, `login`, `koment`, `id_news` FROM `komentarze` WHERE 1-->
0

na szybki rzut oka kod wygląda ok (oprócz megapoważnej dziury SQL Injection i zapewne XSS). pokaż zrzut danych z bazy.

Ty mówisz, że "$id przyjmuje zawsze wartość ostatniego newsa i w zostaje dodane do ostatniego newsa." --- brzmi jakby wszystkie komentarze były wyświetlane TYLKO pod ostatnim newsem - czy tak jest? Czy może wszystkie komentarze są pod wszystkimi newsami?

0

Rozumiem że wrzucić screen danych z bazy? Z jakimś konkretnym zapytaniem czy jak? Sam jestem ciekawe o jakiej dziurze mówisz.

Sytuacja jest taka, że jak np mam 3 newsy i dla każdego z nich możliwość dodawania komentarzy. Niezależnie do którego newsa dodam komentarz ten zawsze wyświetla mi się pod ostatnim newsem. Czyli mój id_news=$id zawsze przyjmuje wartość ostatniego id newsa.
Jeśli dobrze rozumiem działanie skryptu najpierw wykonuje się pętla while i id zmienia wraz z każdym newsem. W momencie dodania komentarza(poza pętlą while) wartość id jest już przypisana do ostatniego newsa i przypisuje taką wartość do id_news.

0

zrzut z phpmyadmin -> szukaj opcji "eksport", ale to już nieważne, właśnie mnie uświadomiłeś co ty w tym kodzie wyprawiasz (sorry, ale masz beznadziejne wcięcia i tego NIE WIDAĆ)

po jaką cholerę w ogóle ładujesz newsy podczas ich dodawania?!

albo dodawanie komentarza, albo ładowanie newsów, ew. jak koniecznie chcesz w jednym zapytaniu to PIERWSZE dodaj, potem odczytaj.
id newsa TEŻ powinien iść razem z komentarzem do serwera, inaczej nie da rady.

myślałem, że to jakiś nieoczywisty bug, a tu mocne problemy z podstawami/algorytmami

0

hmm php zajmuje sie od paru dni więc jestem laikiem. Tak dla ścisłości.

Może nie wyraziłem się jasno. Ten kod jest na stronie index.php, która ma za zadanie wyświetlać newsy wraz z komentarzami i dać możliwość dodawania komentarzy. Newsy są dodawane na innej stronie, dostępnej dla admina.
Przyznam że nie bardzo rozumiem to co napisałeś jak to poprawić. Przyjąłem to na prostą logikę. Najpierw wyświetlam newsa, niżej formularz do komentarza, niżej komentarze zamieszczone wcześniej i nie wiem gdzie umieścić zapytanie do dodania nowego komentarza, żeby działało poprawnie

1 użytkowników online, w tym zalogowanych: 0, gości: 1