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

Gästebuch Editor

  • Ersteller Ersteller matibaski
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
M

matibaski

Guest
Moin!
Also ich habe ein Gästebuch mti MySQL erstellt.
Funktioniert soweit so gut. Nun ist es so, dass ich einige Beiträge ändern, bzw. löschen will, falls jemand flucht, das Wort zensieren, oder Spam, zum löschen.

Nun habe ich ein Tool gemacht, bei dem man löschen und ändern kann.
Ich bin momentan beim Editieren von Beiträgen (schwerer als Löschen)

Hier ist der Code (kommentiert, dass ihr auch drauskommt):
PHP:
<?php
include"config.php"; // Beinhaltet Verbindung zur Datenbank, etc...

if(!isset($_GET['id'])) // Aussuchen der Spalten, für Link zum Ändern
{
$zeig = "SELECT
             ID,
             Datum
         FROM
             gaestebuch
         ORDER BY
             ID DESC;
        ";

$result = mysql_query($zeig) OR die(mysql_error());

// Hier wird ein Link gemacht, den man anklicken kan. Wieso? Sieht man unten
echo "Klicke auf einen Beitrag, um diesen zu Bearbeiten:<br />\n";
if(mysql_num_rows($result)) { // gucken ob was im Query drinsteckt
 while($row = mysql_fetch_assoc($result)) 
 {
  echo '<a href="admin.php?site=edit&id=' . $row['ID'] . '">' . $row['ID'] . ' > ' . $row['Datum'] . '<br />'."\n";
 }
} else {
 echo "Es sind keine G&auml;stebucheintr&auml;ge in der Datenbank vorhanden<br />";

// Bis hierhin ist alles normal. Es werden alle Einträge aufgelistet,
// mit ID und Datum
// Wenn man draufklickt erscheint oben id=12 z.B., wenn man die ID 12 ändern will.
}
}
else
{
// Wenn die id= bestimmt ist, dann soll es nun ein Formular ausgeben, in dem die Inhalte vorhanden sind.
// Doch mein Problem ist, ich möchte, dass alle Inhalte 
// schon vorgeschrieben sind, damit ich nur etwas ändern muss
// Wenn ich einen Link angeklickt habe, dann kommt das Formular
// aber es ist alles leer.
// Wie kann ich das machen, dass die Inhalte gefüllt sind?

echo'
<form name="submit" action="admin.php?site=edit&id='.$row['ID'].'&edit=true" method="post">
<h2>Inhalt ändern:</h2>
Name:<br />
<input type="text" name="name" value="'.$row['Name'].'" /><br />
<br />
Email:<br />
<input type="text" name="email" value="'.$row['Email'].'" /><br />
<br />
Homepage:<br />
<input type="text" name="homepage" value="'.$row['Homepage'].'" /><br />
<br />
Inhalt:<br />
<textarea rows="10" cols="40">
'.$row['Inhalt'].'
</textarea><br />
<br />
<br />
<input type="submit" name="submit" value="Ändern" />
<input type="hidden" name="id" value="'.$row['ID'].'" />
</form>';

// Wenn man etwas geändert hat, soll nun edit=true erscheinen übers Form
// doch wenn ich etwas geschrieben habe, auch ohne vorgeschriebenen
// Text, dann steht oben bei der ID: id=&... Also keine Zahl mehr -.- ??
// Ich habe schon einen verstecken Button eingesetzt, damit die ID übermittelt wird
// Aber es zeigt keinen $row[] an.. Check ich ned..

// Also, wenn ich nun etwas neues Geschrieben habe, dann steht unten,   
// nach dem ändern knopf:
/* You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' Email = , Homepage = , Inhalt = WHERE ID =' at line 4 */

if($_GET['edit'] ==  'true')
{
$edit = "UPDATE
             gaestebuch
         SET
             Name = ".$_REQUEST['name'].",
             Email = ".$_REQUEST['email'].",
             Homepage = ".$_REQUEST['homepage'].",
             Inhalt = ".$_REQUEST['inhalt']."
         WHERE
             ID = ".$_GET['id'].";
        ";
        
mysql_query($edit) OR die(mysql_error());
echo'Der Eintrag mit der ID ' . $_GET['id'] . 'wurde erfolgreich geändert';
}
}
?>
Ich hoffe, jemand kann mir helfen!



MfG, matibaski
 
Hallo,

Zeichenketten musst du in MySQL mit ' ' umschließen, also
Code:
Name = '" . $_REQUEST ['name'] . "'
N43
 
Danke!
Das behebt wohl meinen MySQL Fehler, aber das mit den Feldern ist noch nicht glöst.


MfG, matibaski
 
Hallo,

Du musst im else-Zweig von !isset $_GET['id'] den Inhalt noch aus der Datenbank holen, sonst ist $row natürlich nicht vorhanden.



N43
 
Vielen Dank..
Werds mir merken, dass ich das auch bei else machen muss ^^



MfG, matibaski
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben