Warum trägt er nicht ein?

  • Warum trägt er nicht ein?

    Hallo.
    Kann mir bitte jemand helfen, warum er bei diesem Skript nicht in die DB einträgt?
    Hab schon ewig lange gesucht, mit anderen Skripts verglichen aber ich denk anscheinden zu kompliziert...

    Quellcode

    1. <?php
    2. $verbindung = mysql_connect("localhost", "rezensionen" , "***")
    3. or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
    4. mysql_select_db("rezensionen") or die ("Datenbank konnte nicht ausgewählt werden");
    5. $user = $_POST["user"];
    6. $titel = $_POST["titel"];
    7. $aufgabe = $_POST["aufgabe"];
    8. $datum_aufgabe = $_POST["datum_aufgabe"];
    9. if($datum_aktuell == "" OR $user == "" OR $titel == "" OR $aufgabe == "" OR $datum_aufgabe == "")
    10. {
    11. echo "Eingabefehler. Bitte alle Felder korrekt ausfüllen. <a href=\"eintragen.php\">Zurück</a>";
    12. exit;
    13. }
    14. $ergebnis = mysql_query("SELECT user, titel, aufgabe, datum_aufgabe FROM aufgabe1);
    15. $anzahl = mysql_num_rows($ergebnis);
    16. if($anzahl == 0)
    17. {
    18. $entry = "INSERT INTO aufgabe1 (user, titel, aufgabe, datum_aufgabe) VALUES ('$user', '$titel', '$aufgabe', '$datum_aufgabe')";
    19. $eintrag = mysql_query($entry);
    20. if($eintrag == true)
    21. {
    22. echo "Eintrag erstellt. <br> <a href=\"aufgaben.php\">Zu den Aufgaben</a><br />\n";
    23. echo "<br />";
    24. echo "<br />";
    25. echo "Eintrag erstellt. <br> <a href=\"index.php\">Zum Index</a>";
    26. }
    27. else
    28. {
    29. echo "Fehler beim Eintragen";
    30. }
    31. }
    32. else
    33. {
    34. echo "Fehler";
    35. }
    36. ?>
    37. </body>
    38. </title>
    Alles anzeigen


    Die HTML-Datei wäre:

    Quellcode

    1. <html>
    2. <head>
    3. <title>Neues Loginsystem</title>
    4. </head>
    5. <body background="grafiken/bg.gif">
    6. <center>
    7. <table bgcolor="#ffffff" border="3">
    8. <tr><td>
    9. <center><font size="6" face="Arial">&nbsp;&nbsp;&nbsp;Tragen Sie hier Ihre Aufgaben ein, die Sie erledigen müssen&nbsp;&nbsp;&nbsp;</font>
    10. </tr></td>
    11. </table>
    12. <br />
    13. <br />
    14. <table bgcolor="#ffffff" border="3">
    15. <tr><td>
    16. <form action="eintragen.php" method="post">
    17. <table border="0">
    18. <tr><td width="250">
    19. Ihr Name:&nbsp;</td><td>
    20. <input type="text" size="24" maxlength="30"
    21. name="user">
    22. </td>
    23. </tr>
    24. <tr>
    25. <td>
    26. Titel der Aufgabe:&nbsp;</td><td>
    27. <input type="text" size="24" maxlength="50"
    28. name="titel">
    29. </td>
    30. </tr>
    31. <tr>
    32. <td>
    33. Beschreibung der Aufgabe:&nbsp;</td><td>
    34. <input type="text" cols="30" rows="12" size="24" maxlength="50"
    35. name="aufgabe">
    36. </td>
    37. </tr>
    38. <tr>
    39. <td>
    40. Datum, um die Aufgabe zu erledigen:&nbsp;</td><td>
    41. <input type="text" size="24" maxlength="30"
    42. name="datum_aufgabe">
    43. </td>
    44. </tr>
    45. <tr>
    46. <td>
    47. </table>
    48. <br /><br />
    49. <center>Danke für den Eintrag.</center>
    50. <br />
    51. <center><input type="submit" value="Aufgabe eintragen"></center>
    52. </form>
    53. </tr></td>
    54. </table>
    55. <a href="aufgaben.php">Zu den Aufgaben</a>
    56. </center></center>
    57. </body>
    58. </html>
    Alles anzeigen


    Danke ;)
    Nach langer Zeit wieder ein bisschen als Programmierer tätig
  • Jetzt zeigt er die Meldung von Zeile 43 ("Fehler") an...
    Außerdem hab ich in Zeile 14

    Quellcode

    1. if($datum_aktuell == "" OR $user == "" OR $titel == "" OR $aufgabe == "" OR $datum_aufgabe == "")

    das $datum_aktuell rausgenommen, da das ja ncht definiert ist, oder?
    Nach langer Zeit wieder ein bisschen als Programmierer tätig
  • Auch ich das schonmal irgendwem gesagt hab: Das direkte Eintragen von Werten in die Datenbank ist gefährlich (SQL-Injections). Du solltest die Strings vor dem Eintragen in die Datenbank escapen :!:
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • der html code ist nicht eingerückt, den hab ich mir nicht angeschaut
    aber es zählt sowieso nur das was ankommt

    ich nehme an mit der Abfrage willst du erreichen, dass die selben Daten nicht 2x abgeschickt werden, oder?

    dann musst du das auch so formulieren:

    Quellcode

    1. SELECT user, titel, aufgabe, datum_aufgabe FROM aufgabe1
    2. WHERE user = '$user'
    3. AND titel = '$titel'
    4. AND aufgabe = '$aufgabe'
    5. AND datum_aufgabe = '$datum_aufgabe';


    Über Sinnigkeit lässt sich jedoch streiten. Schöner wäre ein sauberer Primärschlüssel.
    Würde dir das quakenet Tutorial (Punkt 34) empfehlen oder eben ein PHP/MySQL Buch
  • Tut mir leid, aber wir haben Verständigungsschwierigkeiten. Ich will, dass ich 4 Sachen eingebe und er diese in die Datenbank einträgt. Fertig. Mehr will ich nicht. Das hat schon einmal mit dem Code funktioniert, nur jetzt geht es nicht mehr. Ich habe mich als hilfesuchend hier her gewendet...
    Nach langer Zeit wieder ein bisschen als Programmierer tätig
  • Wenn du keine Überprüfung machen willst, dann kannst du die ganze Bedingung auch weglassen. Das wären #20 bis #24 und #35 bis #38

    Ich sag ja nur, dass du mit deinem aktuellen Code die Anzahl aller Einträge überprüfst.
    Und in Abhängigkeit derer machst du dann einen Eintrag (falls die ganze Tabelle leer ist) oder du gibst eben einen Fehler aus (wenn schon irgendetwas drinne steht)

    Das ist das, was dein code sagt.
  • Das müsste dann so aussehen, oder?

    Quellcode

    1. <?php
    2. $verbindung = mysql_connect("localhost", "rezensionen" , "***")
    3. or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
    4. mysql_select_db("rezensionen") or die ("Datenbank konnte nicht ausgewählt werden");
    5. $user = $_POST["user"];
    6. $titel = $_POST["titel"];
    7. $aufgabe = $_POST["aufgabe"];
    8. $datum_aufgabe = $_POST["datum_aufgabe"];
    9. if($datum_aktuell == "" OR $user == "" OR $titel == "" OR $aufgabe == "" OR $datum_aufgabe == "")
    10. {
    11. echo "Eingabefehler. Bitte alle Felder korrekt ausfüllen. <a href=\"index.html\">Zurück</a>";
    12. exit;
    13. }
    14. $entry = "INSERT INTO aufgabe1 (user, titel, aufgabe, datum_aufgabe) VALUES ('$user', '$titel', '$aufgabe', '$datum_aufgabe')";
    15. $eintrag = mysql_query($entry);
    16. if($eintrag == true)
    17. {
    18. echo "Eintrag erstellt. <br> <a href=\"aufgaben.php\">Zu den Aufgaben</a><br />\n";
    19. echo "<br />";
    20. echo "<br />";
    21. echo "Eintrag erstellt. <br> <a href=\"index.html\">Zum Index</a>";
    22. }
    23. else
    24. {
    25. echo "Fehler beim Eintragen";
    26. }
    27. ?>
    Alles anzeigen


    Das funkt aber leider nicht. Dann bringt er die Fehlermeldung aus Zeile 16...

    Edit: Problem gelöst. Ich hatte im "if" das $datum_aktuell noch drin...
    Nach langer Zeit wieder ein bisschen als Programmierer tätig