2 Buttons neben Gästebucheinträge hinzufügen

Hallo allerseits,

ich muss als Hausaufgabe ein Gästebuch schreiben. Leider schaffe ich es nicht, 2 Buttons neben den Gästebucheinträge hinzuzufügen. Eines soll dafür sein, seinen Gästebucheintrag wieder zu löschen (Löschbutton) und einer soll dafür sein, sein Gästebucheintrag editieren zu können.

Die Funktionen hierfür muss ich nachdem ich die 2 Buttons endlich habe, in JS und AJAX schreiben. Leider packe ich es nicht, die Buttons vernünftig einzubinden, so dass sie rechts neben den Gästebucheinträgen erscheinen.

Meine PHP Datei sieht aktuell folgendermaßen aus:

[PHP]<?php
###########################################################
/*

*/
###########################################################

error_reporting(0);
include(„config.php“);

if ($_REQUEST[„do“]==‚add‘) {

$sql = "INSERT INTO ".$SETTINGS["data_table"]." SET date_time=now(), name='".mysql_real_escape_string($_REQUEST["name"])."', email='".mysql_real_escape_string($_REQUEST["email"])."', comment='".mysql_real_escape_string($_REQUEST["comment"])."'";
$sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);

}

?>

Gästebuch Eintrag schreiben
Name
Email
Kommentar
 
<?php $sql = "SELECT * FROM ".$SETTINGS["data_table"]." ORDER BY id DESC"; $sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql); while ($row = mysql_fetch_assoc($sql_result)) { echo "

".stripslashes($row["name"])."

"; echo "gepostet am ".$row["date_time"].""; echo "

".stripslashes(nl2br($row["comment"]))."

"; } ?>[/PHP]

Wäre da jemand mal so lieb und könnte mir da weiterhelfen? Falls der Code nicht ausreichend ist, habe ich mal alle Dateien in den Anhang hier gepackt.

Liebe Grüße
B00ty

Laut dem PHP-Code müsste pro Eintrag ja so ein HTML-Code entstehen:

[html]

irgendein name

gepostet am xx.yy.jjjj

der text selbst

[/html]

Ich würde empfehlen aus den Einträgen eine Liste zu machen, also alles mit

    zu umgeben und dann den Beitrag semantisch besser zu definieren:

    [html]


    • irgendein namegepostet am xx.yy.jjjj

      der text selbst

    • ..
    [/html]

    Die Buttons reichen hier eigentlich als Links und könnten so im HTML-Code integriert werden:

    [html]


    • irgendein namegepostet am xx.yy.jjjjLink 1Link 2

      der text selbst

    • ..
    [/html]

    Per CSS kannst Du sie dann noch positionieren, z.B. mittes „float: right;“ immer am rechten Rand des umgebenden

    stehen lassen.

Also irgendwie mag das nicht so wirklich! Bin doch wirklich zu blöd einfachstes HTML einzusetzen :frowning:

Nach langem rumprobieren, hab ich jetzt mal den Stand gelassen. Das ganze sieht jetzt bei mir grad so aus:
[PHP]<?php $sql = "SELECT * FROM ".$SETTINGS["data_table"]." ORDER BY id DESC"; $sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql); while ($row = mysql_fetch_assoc($sql_result)) { echo "

  • ".stripslashes($row["name"])."

  • "; echo "
  • gepostet am ".$row["date_time"]."Link 1Link 2
  • "; echo "
  • ".stripslashes(nl2br($row["comment"]))."

"; } ?>[/PHP]

Jetzt bekomme ich natürlich den Fehler:

Parse error: syntax error, unexpected ‚button‘ (T_STRING), expecting ‚,‘ or ‚;‘ in C:\xampp\htdocs\guestbook1\guestbook.php on line 61

Mit einem Button hab ich es auch versucht, aber das gleiche Problem!
[PHP]<?php $sql = "SELECT * FROM ".$SETTINGS["data_table"]." ORDER BY id DESC"; $sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql); while ($row = mysql_fetch_assoc($sql_result)) { echo "

  • ".stripslashes($row["name"])."

  • "; echo "
  • gepostet am ".$row["date_time"]." echo "
  • ".stripslashes(nl2br($row["comment"]))."

"; } ?>[/PHP]

Gleicher Fehler wie oben:

Parse error: syntax error, unexpected ‚button‘ (T_STRING), expecting ‚,‘ or ‚;‘ in C:\xampp\htdocs\guestbook1\guestbook.php on line 61

Du musst die " escapen mit
Also in dieser Zeile
[PHP]
echo „

  • gepostet am „.$row[„date_time“].“Link 1Link 2
  • “;
    // also so
    echo „
  • gepostet am „.$row[„date_time“].“<a class="delete" href="#">Link 1<a class="edit" href="#">Link 2
  • “;
    [/PHP]
    Das siehst du auch ganz gut hier im Forum an der Syntax Highlighting.

    Und bei dem zweiten hast du ein Semikolon vergessen, die Fehlermeldung besagt das ja schon.

    [PHP]
    echo "

  • gepostet am „.$row[„date_time“].“
    [/PHP]
    Da musst du aber auch wieder escapen

    Achja und noch etwas, falls auch der Quellcode begutachtet wird bzgl. Hausaufgabe. Dann solltest du dir mysqli_* anschauen, denn mysql_* Funktionen sind deprecated, also veraltet und werden womöglich ab der nächsten PHP Version rausgenommen.

  • ok super, es hat geklappt und formatiert hab ich sie auch mit CSS. Warum muss man denn hier escapen? Das begegnet mir hier zum erstenmal! :frowning:

    Du packst die Strings, die von echo ausgegeben werden sollen, ja bereits in doppelte Anführungszeichen. Deshalb erwartet PHP dann, dass nach dem doppelten Anführungszeichen, dass nach „class=“ steht, die Ausgabe beendet ist und erwartet dahinter entweder ein Semikolon oder halt anderen PHP-Code.
    Du könntest, wenn du das Escapen umgehen möchtest, die echo-Strings in einfache Anführungszeichen packen, also so:

    [php]echo ‚

  • gepostet am ‚.$row[‚date_time‘].‘Link 1Link 2
  • ‘;[/php]

    Edit: Ungetestet, sollte aber klappen