Gästebuch mit PHP und MySQL

  • Guten Tag liebe Programmierer.
    Ich möchte ein Gästebuch mit PHP und MySQL programmieren. Ich habe einen Server auf dem MySQL läuft und ich eine Datenbank mit z.B. dem Namen Datenbank eingerichtet hab. Jetzt möchte ich damit ein Gästebuch machen aber irgendwie klappt das noch nicht richtig. Ich schreib mal den HTML/PHP Code hier hin. Vielleicht könnt ihr mir ja sagen was daran falsch ist...


    erste Seite gaestebuch.htm:


    zweite Seite insert.php:


    dritte Seite gaestebuch.php:



    Was ist da jetzt falsch? Ich kann gaestebuch.htm öffnen und ein Text schreiben, dann komm ich auf insert.php und dann klicke ich weiter und dann kommt diese Fehlermeldung:
    Parse error: parse error in /homepages/7/*********/******/hol/gaestebuch.php on line 20
    Die * hab ich eingefügt damit ich hier nicht irgendwas hinschreib was ihr nicht wissen dürft ;)



    Hoffe ihr könnt mir helfen,
    Gruß, datmoe

    datmoe

  • Hallo!


    Code
    echo "<tr><td>$name</td><td>$kommentar</td></tr>;

    vor dem abschliessenden ; fehlt ein "


    Gruss :) 3dc


    PS: Poste das nächste Mal doch bitte mit [code] - Tag, das wär' super :top:

  • Ja gut, Danke. Ich habs jetzt geändert und komme auch auf die Seite gaestebuch.php aber da steht jetzt nur NAME und KOMMENTAR aber halt nicht mein Eintrag den ich vorher gemacht hab.
    Ich glaube ja das hier:

    PHP
    odbc_exec($id, $sql);


    noch was falsch ist. Es müsste glaube ich

    PHP
    mysql_exec($id, $sql);

    heißen und nicht odbc... aber damit klappt es auch nicht...


    :confused:

    datmoe

  • Hallo,


    ich mach' das immer (:p, ich lerne auch noch ;)) so, dass ich mir eine config.php (o.ä.) anlege, die ich dann includen lasse.:


    config.php:

    PHP
    $server ="localhost"; // IP-Adresse: meist localhost
    $user ="username"; // name des DB-Users
    $pass ="password"; // dein passwort
    $dataBase ="datenbankname"; // die datenbank die benutzt werden soll
    $dbHandle =mysql_connect($server,$user,$pass)
    or die("Verbindung zur Datenbank konnte nicht hergestellt werden.<br />\n".mysql_error());
    mysql_select_db($dataBase,$dbHandle)
    or die("&ouml;ffnen der Datenbank ".$dataBase." nicht m&ouml;glich.<br />\n".mysql_error());


    anzeige.php:

    Beim aufruf von zeigediesunddas() wird dann das Ergebnis aus $sql ausgegeben. In $zeile[0] steht der Inhalt des ersten Spalte (wahrscheinlich in deinem Fall "SELECT *" die Eintrags-ID), in $zeile[1] der Inhalt d. zweiten Spalte usw.. Wie es bei Arrays nun mal so ist ;) Über das odbc_exec hatte ich mich schon gewundert, aber ich dachte mir, dass du vielleicht via ODBC auf eine DB zugreifst und es somit richtig ist. Normalerweise(afaik) ist die Verfahrensweise zum Verbinden & Daten auslesen aber so, wie ich oben geschrieben habe. Wobei das natürlich nicht unbedingt über eine function realisiert werden muss...


    Hilft dir das weiter? :confused: :rolleyes:


    Gruss - 3dc

  • hm... danke, aber irgendwie kann ich damit nix anfangen... :rolleyes: bin wohl einfach zu blöd und uninformiert...
    Hat vielleicht jemand ein vorprogrammiertes bei dem ich mir das angucken kann wie das geht? Also schon was fertiges? Ich hab schon bei diesen ganzen Skriptsammlungen im Internet geguckt aber da sind dann immer gleich 20 Datein und ich weiß überhaupt nicht was ich da machen muss...


    :rolleyes:

    datmoe

  • Hi, nur eine Anmerkung zu insert.php: Da Du Texte in die Datenbank reinschreibst, die von beliebigen Benutzern frei eingegeben werden und dann einfach in das INSERT-Statement eingefügt werden, solltest Du bestimmte Sonderzeichen darin maskieren (z.B. das Hochkomma), wenn diese im in die Datenbank einzufügenden Text vorkommen, schlägt sonst im Regelfall der INSERT fehl (und im schlimmsten Fall stellt es eine Sicherheitslücke dar)


    Beispiel 1: "INSERT INTO table ( field ) VALUES ( '$field_val' )" mit $field_val = "foo'bar" ergibt dann "INSERT INTO table ( field ) VALUES ( 'foo'bar' )" --> Strings im SQL nicht richtig abgeschlossen, Statement schlägt fehl


    Beispiel 2: SQL wie oben, $field_val = "foo' ); DELETE FROM table; INSERT INTO table ( field ) VALUES ( 'aetsch!" --> "INSERT INTO table ( field ) VALUES ( 'foo' ); DELETE FROM table; INSERT INTO table ( field ) VALUES ( 'aetsch!' ) --> wenn mysql_query mehrere, durch Strichpunkt getrennte Statements im SQL-String zulässt, hast Du danach Tabelle table mit einem einzigen Eintrag 'aetsch!'...


    Ergo:
    * Das Hochkomma durch Verdoppeln maskieren ( ' wird zu '' )
    * Ebenfalls schadet es nicht, das Pipe-Symbol | ebenso zu maskieren
    * hmm... war da noch was?
    (Hinweis: Auch mal die PHP-Einstellung magic-quotes anschauen)


    Und zum SELECT (gaestebuch.php): Du könntest Dir z.B. einen Wrapper schreiben, den Du dann per include() in Deine Seite einbindest... siehe http://www.peceny.de/misc/php_…e_access_abstraction.html für einen Wrapper, der Dir das Ergebnis des SELECT in einem ganz gewöhnlichen PHP-Array zurückgibt



    Ciao
    Michael

    History: Motorola e930, t720, RAZR V3, MOTORAZR maxx V6, MOTOROKR Z6, MOTOROKR E8, MOTOZINE ZN5, Samsung S8000 Jet

  • Ach wie blöd von mir! Da hätte ich ja auch allein drauf kommen können...
    Wenn ich ehrlich bin hab ich nichts verstanden :D:rolleyes:
    Trotzdem Dank für eure Mühen. Ich werd mich jetzt mal n bisschen dran setzen und versuchen irgendwelche Infos aus euren Texten rauszufiltern und gucken ob ich damit Erfolg hab... :rolleyes:


    Gruß, datmoe :)

    datmoe

  • Also ich hab da jetzt nochmal was gefunden aber das klappt nicht.



    Es kann aber leider keine Verbindung aufgebaut werden und es werden diese Fehlermeldung angezeigt:


    Warning: Unknown MySQL Server Host 'http' (2) in /homepages/.../gaesteb_ein.php3 on line 6


    Warning: MySQL Connection Failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /homepages/.../gaesteb_ein.php3 on line 9


    Warning: MySQL: A link to the server could not be established in /homepages/.../gaesteb_ein.php3 on line 9


    Warning: -1 is not a MySQL link index in /homepages/.../gaesteb_ein.php3 on line 11
    Datensatz erfolgreich eingetragen



    Es wäre sehr nett wenn ihr mir weiterhelfen könnt. Ich bin schon am verzweifeln... :(

    datmoe

  • Mußt du dich am Server nicht mit Benutzername und Passwort authentifizieren? Das fehlt bei deinem Script irgenwie oder hast du es nur "hier" vergessen? Nur der Hostname bzw. die IP-Adresse reicht nicht.
    Du bekommst im Moment erstmal nur die Verbindung zum Server nicht hin (1. Warnmeldung) - alles andere sind folge Fehler weil du trotzdem versuchst einen Befehl an der DB auszuführen obwohl du nicht verbunden bist.

    -> Tristan @ Work <-
    --

  • Zitat

    Original geschrieben von datmoe
    mysql_connect("http://hier hab ich die IP des Servers eingegeben");


    diese Fehlermeldung angezeigt:


    Warning: Unknown MySQL Server Host 'http' (2) in /homepages/.../gaesteb_ein.php3 on line 6


    du musst einfach nur den domainnamen bzw. die IP eingeben.
    Internet != http://WWW. Das HTTP Protokoll wird tatsächlich nur für einen winzigen Bruchteil der Dienste im Internet genutzt (auch wenn diese das grösste Angebot stellen). Aber zwischen PHP und mysql hat es nix verloren. ;)


    mysql_connect("127.0.0.1");


    edit: Mist zu langsam. McTristan hat natürlich recht: Ggf. brauchst du noch Zugangsdaten für deinen Server bei der Anweisung: http://de.php.net/manual/de/function.mysql-connect.php

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!