PHP Gästebuch Problem

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

      PHP Gästebuch Problem

      PHP Gästebuch Problem
      So liebe Leute. Folgendes Problem.
      Ich möchte ein Gästebuch mit PHP programmieren. Besucher können Einträge vornehmen (Das hab ich geschafft). Besucher, können jedoch nicht auf Beiträge antworten.
      Ein Admin, kann nachdem er sich eingeloggt hat, Beiträge löschen und auf diese Antworten. DIe Beiträge sind in einer SQL Datenbank. Hab ich auch geschafft.
      Nun zum Problem: Die Antworten sollen unter den Beiträgen angezeigt werden. Ich hab das so gelöst, dass neben jedem Beitrag eine Checkbox ist. Wenn man eine Checkbox anhakt und auf antworten klickt, soll die ID des Beitrages übernommen werden. AUf diese ID soll dann geantwortet werden. Das funktioniert jedoch nicht. Er nimmt andauernd die ID 49 wodurch er immer nur auf den selben Beitrag antwortet. Ich suche den Fehler schon seit ner Woche und bin am verzweifeln. Hier der Code, und die Datenbank.

      PHP-Quellcode

      1. <?php
      2. $timestamp = time();
      3. $datum = date("d.m.Y",$timestamp);
      4. $uhrzeit= date("H:i",$timestamp);
      5. if(isset($_POST['adminantwort'])){
      6. $antwort_id=$_POST['antwort_id'];
      7. $_SESSION['antwort_id']=$antwort_id;
      8. $sql2="INSERT INTO tblantworten (verfasser, antwort, datum, uhrzeit, antwort_auf) VALUES ('Administrator','".$_POST['antwort']."','$datum','$uhrzeit','".$_SESSION['antwort_id']."');";
      9. mysql_query($sql2);
      10. header("Location:admin.php");
      11. }
      12. if(isset($_POST['loeschen'])){
      13. $auswahl=$_POST['auswahl'];
      14. foreach($auswahl as $id){
      15. $sql3="DELETE FROM tbleintraege WHERE e_id=".$id.";";
      16. $ergebnis3=mysql_query($sql3);
      17. }
      18. if($ergebnis3){
      19. echo "Löschen erfolgreich!<br/><br/>";
      20. header("Location:admin.php");
      21. }
      22. }
      23. $sql="SELECT * FROM tbleintraege ORDER BY datum DESC, uhrzeit DESC";
      24. $ergebnis=mysql_query($sql);
      25. if(mysql_num_rows($ergebnis)>0){
      26. while($eintrag=mysql_fetch_row($ergebnis)){
      27. echo"<table width='600'><form method='post'>";
      28. echo "<tr><td width='500'><strong>".$eintrag[0]."</strong> schrieb am <strong> ".$eintrag[2]."</strong> um<strong> ".$eintrag[3]." </strong>Uhr folgendes: </td><td> <input type='hidden' name='antwort_id' value='".$eintrag[4]."'><input type='submit' name='antworten' value='Antworten'></td></tr>";
      29. echo "<tr><td><input type='checkbox' name='auswahl[]' value='".$eintrag[4]."'/><i>".$eintrag[1]."</i></td></tr>";
      30. echo "<br/></table>";
      31. if(@$_POST['antwort_id']==$eintrag[4]){
      32. echo "<input type='hidden' name='antwort_id' value='".$eintrag[4]."'>";
      33. echo "<textarea name='antwort'></textarea> ";
      34. echo "<input type='submit' name='adminantwort' value='Posten'>";
      35. echo "<br/><br/>";
      36. }
      37. $sql1="SELECT * FROM tblantworten WHERE antwort_auf='".$eintrag[4]."' ORDER BY datum DESC, uhrzeit DESC";
      38. $ergebnis1=mysql_query($sql1);
      39. if(mysql_num_rows($ergebnis1)>0){
      40. while($antwort=mysql_fetch_row($ergebnis1)){
      41. echo"<br/><table style='margin-left:50px;'>";
      42. echo "<tr><td><strong>".$antwort[0]."</strong> antwortete am <strong> ".$antwort[2]."</strong> um<strong> ".$antwort[3]." </strong>Uhr mit: </td></tr>";
      43. echo "<tr><td><input type='checkbox' name='auswahl[]' value='".$antwort[4]."'/><i>".$antwort[1]."</i></td></tr>";
      44. echo "</table>";
      45. }
      46. }
      47. }
      48. }
      49. if(isset($_POST['logout'])){
      50. header("Location:logout.php");
      51. }
      52. ?>
      53. <br />
      54. <input type="submit" name="loeschen" value="löschen" />
      55. <input type="submit" name="logout" value="logout" />
      56. </form>
      Alles anzeigen


      Und hier die Datenbank

      Brainfuck-Quellcode

      1. -- Datenbank: `gaestebuch`
      2. --
      3. CREATE DATABASE `gaestebuch` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
      4. USE `gaestebuch`;
      5. -- --------------------------------------------------------
      6. --
      7. -- Tabellenstruktur für Tabelle `tblantworten`
      8. --
      9. CREATE TABLE IF NOT EXISTS `tblantworten` (
      10. `verfasser` varchar(50) NOT NULL,
      11. `antwort` text NOT NULL,
      12. `datum` text NOT NULL,
      13. `uhrzeit` text NOT NULL,
      14. `antwort_auf` int(11) NOT NULL
      15. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
      16. -- --------------------------------------------------------
      17. --
      18. -- Tabellenstruktur für Tabelle `tbleintraege`
      19. --
      20. CREATE TABLE IF NOT EXISTS `tbleintraege` (
      21. `verfasser` varchar(50) NOT NULL,
      22. `eintrag` text NOT NULL,
      23. `datum` text NOT NULL,
      24. `uhrzeit` text NOT NULL,
      25. `e_id` int(11) NOT NULL AUTO_INCREMENT,
      26. PRIMARY KEY (`e_id`)
      27. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=85 ;
      28. --
      29. -- Daten für Tabelle `tbleintraege`
      30. --
      31. INSERT INTO `tbleintraege` (`verfasser`, `eintrag`, `datum`, `uhrzeit`, `e_id`) VALUES
      32. ('Elif', 'Elif', '31.01.2014', '21:56', 82),
      33. ('Merve', 'Merve', '31.01.2014', '21:56', 83),
      34. ('Antonio', 'Antonio', '31.01.2014', '21:59', 84);
      35. -- --------------------------------------------------------
      36. --
      37. -- Tabellenstruktur für Tabelle `tbluser`
      38. --
      39. CREATE TABLE IF NOT EXISTS `tbluser` (
      40. `status` varchar(30) NOT NULL,
      41. `username` varchar(50) NOT NULL,
      42. `passwort` int(11) NOT NULL
      43. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
      44. --
      45. -- Daten für Tabelle `tbluser`
      46. --
      47. INSERT INTO `tbluser` (`status`, `username`, `passwort`) VALUES
      48. ('admin', 'Elif', 1234);
      Alles anzeigen


      Wer mir hilft, ist mein Held, und hat sich ein Geschenk verdient. Grüße!





      Robijasi Zenica 88


      Ich leb den Tag und denk seit Jahren über gestern nicht mehr nach.
      Hey.
      Das input Element antwort_id wird doch mit jeder Iteration neu angelegt.
      Ein Name kann aber nur einen Wert haben (Numerisch, Text, Liste, ...) ;)
      Erstelle doch einfach für jedes Kommentar, welches kommentierbar ist, einen Link.
      Beispiel: stagetwo.eu/article/23-MP3-MPE…ittelt-man-die-Spielzeit/

      Zudem lege ich dir sehr sehr stark PDO ans Herz.
      Die mysql_ funktionen sind veraltet und in neueren Versionen werden diese entfernt sein.
      Solltest du nicht umsteigen so nutz doch wenigstens mysql_fetch_assoc um die Lesbarkeit des Codes zu verbessern.
      Du solltest auch etwas auf Whtiespace achten und nicht alles aneinander geklatscht schreiben -,-
      Mehr möchte ich jetzt nicht dazu sagen.

      Gruß Sick^

      hangman schrieb:

      Wenn es bei der deutschen Sprache eine Syntax Prüfung gäbe, wären so einige Menschen stumm


      Ersteinmal danke für deine Mühe! Könntest du das eventuell weiter erläutern? Also deine Idee?

      Der Code ist ganz große Scheisse. Ist auch nicht meiner.





      Robijasi Zenica 88


      Ich leb den Tag und denk seit Jahren über gestern nicht mehr nach.
      Es kommt drauf an.
      Hast du eine eigene Seite für die Kommentar Form oder entsteht diese Form durch Javascript?
      Wenn es eine eigene Seite ist platzierst du unter jedes Kommentar einen Link mit der entsprechenden Kommentar ID.
      <a href="http://deine.domain.de/comment/<commentID>">Antworten</a>

      Bei JavaScript nutzt du die data Attribute.
      <a data-comment-id="<commentID>">Antworten</a>

      hangman schrieb:

      Wenn es bei der deutschen Sprache eine Syntax Prüfung gäbe, wären so einige Menschen stumm