2 Probleme: Kein INSERT - Textumbruch in Textarea

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

  • 2 Probleme: Kein INSERT - Textumbruch in Textarea

    //Gesplittet von http://www.easy-coding.de/problem-mit-md5-verschluesselung-t3661.html
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Ein Problem gelöst und schon taucht das nächste auf...
    Wollte dafür nicht extra einen neuen Thread auf machen.
    So und zwar möchte ich einen Datensatz in meine SQL-Tabelle einfügen. Zwar handelt es sich um ein Gästebuch, ich registriere mich, logge mich ein und kann dann mit dem eingeloggten Account meine Nachricht über ein Formular eingeben. Nun habe ich zwei Probleme, wenn ich mein INSERT-Statement manuell ausführe klappt alles super, aber wird das im PHP-Skript ausgeführt passiert nichs. Und außerdem wie bekomme ich es hin, dass die textarea wenn die Zeichen am Rand des darstellbaren ankommen einen automatischen Umbruch machen und wie übernehme ich diese Zeilenumbrüche in PHP bzw. die Datenbank?

    Quellcode

    1. <?php
    2. include ("session_check.php");
    3. // Daten in Variablen speichern
    4. $eintrag = $_POST['nachricht'];
    5. $nick = $_SESSION['user_nickname'];
    6. $vorname = $_SESSION['user_vorname'];
    7. $nachname = $_SESSION['user_nachname'];
    8. $user_id = $_SESSION['user_id'];
    9. // Aufbauen einer Db-Verbindung
    10. $SQL_verbindung = mysql_connect ("localhost","d0050379","gaestebuch");
    11. // Daten in die Tabelle, die zum Gästebuch gehört Speichern!
    12. $sql = "INSERT INTO guestbook(Vorname, Nachname, Nickname, Nachricht, FK_Id) VALUES('$vorname','$nachname','$nickname','$eintrag','$user_id')";
    13. // Query an DB losschicken
    14. mysql_query($sql);
    15. if (mysql_affected_rows($SQL_verbindung) > 0)
    16. {
    17. //header("Location: eintrag_erfolgreich.php");
    18. echo "<br> Erfolgreich!";
    19. }
    20. else
    21. {
    22. //header("Location: eintrag_err.php");
    23. echo "<br>Fehler";
    24. }
    25. ?>
    Alles anzeigen
  • Am einfachsten wäre es, wenn du in deiner mysql Datenbank den Eintrag als Text speicherst und nicht als varchar(?) - Leider hab ich keine Ahnung, wie du deine Datenbank designt hast.

    Ich nehme mal an, dass du vergessen hast eine datenbank auszuwählen (mysql_select_db) - ups, steht ja da ;)

    Also, du solltest dir mal $sql ausgeben lassen und dass manuell einegeben, wenn du das meintest, was du probiert hast, musst es irgendwie an der Datenbankverbindung liegen. Hatte so ein Problem letztens auch und es lag daran, dass ich zu blöd zum tippen war ;)
  • "Chris2k" schrieb:

    Ein Problem gelöst und schon taucht das nächste auf...
    Wollte dafür nicht extra einen neuen Thread auf machen.

    Am besten ist es wenn du für jedes Problem einen Thread aufmachst. Und wenn es 10 Threads gleichzeitig sind. Das ist immernoch übersichtlicher als mehrere Probleme in einem abzuhandeln.

    "BennyBunny" schrieb:

    Ich nehme mal an, dass du vergessen hast eine datenbank auszuwählen (mysql_select_db) - ups, steht ja da Wink

    Wo steht das? Das fehlt :roll:
  • Okay, sry.
    Also in meiner Datenbank werden alle Felder als varchar gespeichert, nur das Feld Nachricht hat die Eigenschaft Text.

    // Edit

    Hab mir mal $sql ausgeben lassen und das Ergebnis sieht wie folgt aus :

    INSERT INTO guestbook(Vorname, Nachname, Nickname, Nachricht, FK_Id) VALUES('Admin','Mustermann','','dxsdsds','15')

    Also Scheinbar liegt es an der Variablen $nickname, die scheint irgendwie nicht richtig übergeben zu werden, obwohl vorher der richtige Inhalt drin ist.

    // Edit #2:

    Fehler gefunden, die Variable mit dem Inhalt heißt $nick und nicht $nickname....
    Aber irgendwie funktioniert das Insert Statement immernoch nicht, zwar stehen jetzt die korrekten Daten drin, aber bekomme immernoch die Fehlermeldung bei else nach dem query`n der DB.
  • Hat auch nicht funktioniert, aber ich hab den Fehler gefunden, aber warum das nicht funktionierte ist mir nicht klar....
    Hatte in meinen vorherhigen Dateien, diese Schleife zusätzlich:

    Quellcode

    1. if (!mysql_select_db ("d0050379",$SQL_verbindung))
    2. {
    3. //die ("<br>Es konnte keien Verbindung zur Datenbank hergestellt werden!");
    4. }
    5. else
    6. {
    7. //echo "<br><br>Verbindung wurde erfolgreich hergestellt\n<br>";
    8. }


    Die macht ja eigentlich so ziemlich gar nichts, hab die nun in meine Datei eingefügt und es funktioniert alles.....
    Aber danke für die Hilfe, hat mich auf jeden Fall zum Nachdenken gebracht. Aber von euch hat zufälliger keiner Ahnung wie das mit den Zeilenumbrüchen geht oder?
  • [phpdoc]mysql_affected_rows[/phpdoc]
    Get number of affected rows in previous MySQL operation
    Der INSERT muss die letzte Operation sein.

    Wo ist denn das Problem mit den Zeilenumbrüchen in der Textarea? Das klappt doch schon von Haus aus.
    Wenn sie mit Zeilenumbruch gespeichert werden, werden Sie auch mit Zeilenumbruch ausgegeben. Das Zeichen dafür ist \n

    Quellcode

    1. echo "Zeile1\nZeile2";

    Schau dir mal die Browserausgabe und den Quelltext dazu an. Dann verstehst du, was ich meine.
  • Ja, klappt jetzt alles soweit wunderbar, nur die blöden Zeilenumbrüche bringen mich zum verzweifeln!
    Sie werden zwar in der DB genauso wie eingegeben abgespeichert, aber beim Ausgeben passt irgendwas nicht.

    Quellcode

    1. while ($daten = mysql_fetch_assoc($result))
    2. {
    3. //Ausgabelayout
    4. echo "<div>";
    5. echo " <div class=\"daten\" align=\"center\">\n";
    6. echo " ".$daten['Vorname']." / ".$daten['Nickname']." / ".$daten['Nachname']." ".$daten['Datum']." folgendes: \n";
    7. echo " </div>\n";
    8. echo "<br>\n";
    9. echo " <div class =\"daten\" align=\"center\">\n";
    10. echo " ".$daten['Nachricht']." \n";
    11. echo " </div>\n";
    12. echo "</div>\n";
    13. echo "<br>\n";
    14. }
    Alles anzeigen