• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

2 Buttons neben Gästebucheinträge hinzufügen

bigbootykilla

Neues Mitglied
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);

}

?>

</div>
<form id="GuestBookFrm" name="GuestBookFrm" onsubmit="return false;">
<table width="100%" border="0" cellspacing="0" cellpadding="5">
  <tr>
    <td colspan="2"><strong>Gästebuch Eintrag schreiben</strong></td>
    </tr>
  <tr>
    <td>Name</td>
    <td><label>
      <input type="text" name="your_name" id="your_name" />
    </label></td>
  </tr>
  <tr>
    <td>Email</td>
    <td><input type="text" name="email" id="email" /></td>
  </tr>
  <tr>
    <td>Kommentar</td>
    <td><label>
      <textarea name="comment" id="comment" rows="5"></textarea>
    </label></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><label>
      <input type="button" name="button" id="button" value="Senden" onclick="SubmitComment()" />
      <input type="reset" name="reset" id="reset" value="Reset" />
    </label></td>
  </tr>
</table>
</form>

<div id="Comments">

<?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 "<div><h2>".stripslashes($row["name"])."</h2>";
    echo "<span>gepostet am ".$row["date_time"]."</span>";
    echo "<p>".stripslashes(nl2br($row["comment"]))."</p></div>";
}
?>

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
 

Anhänge

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

HTML:
<div><h2>irgendein name</h2><span>gepostet am xx.yy.jjjj</span><p>der text selbst</p></div>

Ich würde empfehlen aus den Einträgen eine Liste zu machen, also alles mit <ul> zu umgeben und dann den Beitrag semantisch besser zu definieren:

HTML:
<ul>
...
<li><p><strong>irgendein name</strong><span>gepostet am xx.yy.jjjj</span></p><p>der text selbst</p></li>
..
</ul>

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


HTML:
<ul>
...
<li><p><strong>irgendein name</strong><span>gepostet am xx.yy.jjjj</span><a href="#" class="delete">Link 1</a><a href="#" class="edit">Link 2</a></p><p>der text selbst</p></li>
..
</ul>

Per CSS kannst Du sie dann noch positionieren, z.B. mittes "float: right;" immer am rechten Rand des umgebenden <p> stehen lassen.
 
Also irgendwie mag das nicht so wirklich! Bin doch wirklich zu blöd einfachstes HTML einzusetzen :(

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 "<div><ul><li><h2>".stripslashes($row["name"])."</h2></li>";
    echo "<li><span>gepostet am ".$row["date_time"]."</span><a class="delete" href="#">Link 1</a><a class="edit" href="#">Link 2</a></li>";
    echo "<li><p>".stripslashes(nl2br($row["comment"]))."</p></li></ul></div>";
}
?>

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 "<div><ul><li><h2>".stripslashes($row["name"])."</h2></li>";
    echo "<li><span>gepostet am ".$row["date_time"]."</span><input type="button" name="delete" id="delete" value="Löschen" />
    echo "<li><p>".stripslashes(nl2br($row["comment"]))."</p></li></ul></div>";
}
?>

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 "<li><span>gepostet am ".$row["date_time"]."</span><a class="delete" href="#">Link 1</a><a class="edit" href="#">Link 2</a></li>";
// also so
echo "<li><span>gepostet am ".$row["date_time"]."</span><a class=\"delete\" href=\"#\">Link 1</a><a class=\"edit\" href=\"#\">Link 2</a></li>";
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 "<li><span>gepostet am ".$row["date_time"]."</span><input type="button" name="delete" id="delete" value="Löschen" />
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.
 
Zuletzt bearbeitet:
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! :(
 
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 '<li><span>gepostet am '.$row['date_time'].'</span><a class="delete" href="#">Link 1</a><a class="edit" href="#">Link 2</a></li>';

Edit: Ungetestet, sollte aber klappen
 
Zurück
Oben