Eintrag aus Mysql Tabelle löschen / In Formular Button Ändern und Löschen anfügen.

mint223

Grünschnabel
Hier der Code beidem Eintrag eingetragen, geändert aber noch nicht gelöscht wird:
PHP:
<?PHP

include "mysql.php";

$table = ENTRIES;


if (empty($_GET[querytype]) && !empty($_POST)) {
$sql    = "INSERT INTO $table SET
TITLE   = '$_POST[title]',
SUMMARY = '$_POST[summary]',
CONTENT = '$_POST[content]'";
$query  = @mysql_query($sql);
}


if ($_GET[querytype] == 1 && !empty($_POST)) {
$sql    = "UPDATE $table SET
TITLE   = '$_POST[title]',
SUMMARY = '$_POST[summary]',
CONTENT = '$_POST[content]' WHERE ID = '$_GET[id]'";
$query  = @mysql_query($sql);
}

//Wie kann ich hier einen Eintrag mit $_GET[id] löschen?

include "entries.php";

?>

Hier das Formular:

PHP:
 <a href="insert.php">Add New Post</a> 
 <hr>
 
<?PHP
include "mysql.php";
$table = ENTRIES;
$SQL = "SELECT * from $table";
$result = mySQL_query( $SQL ); while( $row = mySQL_fetch_array( $result ) ) {

echo "<h1>$row[TITLE]</h1>";
echo "<p><B>$row[SUMMARY]</B></p>";
echo "<p>$row[CONTENT]</p>";
echo "<p><a href=\"insert.php?id=$row[ID]\">Edit</a></p>";
//Hier möchte ich auch noch einen Button mit Ändern und Löschen anfügen. Wie geht das?

}
?>
 
Weder ein INSERT noch ein UPDATE löscht Daten.

Ich versteh darum nicht wo du was löschen willst.
 
Ja, das ist richtig.

Daten in die DB einzufügen oder zu ändern funktioniert soweit tadellos.

Ich möchte aber auch betehende Datensätze löschen ( Erster Code)

und im Formular einen Button für löschen und ändern anfügen.

Im erstenen Code wird doch unterschieden ob Formular leer ist oder nicht. Ich weiss nicht wie ich diesen Code ändern muss, damit unterschieden wird zwischen leer, ändern und neu löschen.

Ich denke den ändern Button musste
echo "<p><a href=\"insert.php?id=$ändern[ID]\">Edit</a></p>";

und der löschen Button müsste
echo "<p><a href=\"insert.php?id=$löschen[ID]\">Delete</a></p>";

sein.

Aber diese Button müssten wieder im ersten Code definiert werden.

Wie muss ich diese zwei Codes ändern?
 
Zuletzt bearbeitet:
Der Code funktioniert nun soweit;

ich kann Daten eingeben, bearbeiten und löschen.

Kann darin etwas verbessert werden/ hat es Fehler drinn?

PHP:
<?PHP

include "mysql.php";

$table = ENTRIES;

//Leeres Formular
if (empty($_GET[querytype]) && !empty($_POST)) {
$sql    = "INSERT INTO $table SET
TITLE   = '$_POST[title]',
SUMMARY = '$_POST[summary]',
CONTENT = '$_POST[content]'";
$query  = @mysql_query($sql);
}

//Formualar bearbeiten
if ($_GET[querytype] == 1 && !empty($_POST)) {
$sql    = "UPDATE $table SET
TITLE   = '$_POST[title]',
SUMMARY = '$_POST[summary]',
CONTENT = '$_POST[content]' WHERE ID = '$_GET[id]'";
$query  = @mysql_query($sql);
}

//Prüfen ob die action 'delete' ist
if($_GET[action] == 'delete'){
    $sql = "DELETE FROM $table WHERE ID = '$_GET[id]'";
    //und ausführen
    mysql_query($sql);
}  
 
//Eintröge abrufen
$SQL = "SELECT * from $table";
$result = mySQL_query( $SQL ); while( $row = mySQL_fetch_array( $result ) ) {

echo "<h1>$row[TITLE]</h1>";
echo "<p><B>$row[SUMMARY]</B></p>";
echo "<p>$row[CONTENT]</p>";
echo "<p><a href=\"dbinsert.php?id=$row[ID]\">Bearbeiten</a></p>";
echo "<p><a href=\"dbinsert.php?id=$row[ID]&action=delete\">Löschen</a><br><br>"; 

}

//Abfrage um bestehenden Eintrag anzuzeigen.
$SQL = "SELECT * from $table WHERE ID = '$_GET[id]'"; $result = @mySQL_query( $SQL ); $row = @mySQL_fetch_array( $result );

echo $_GET[id];

if (!empty($_GET[id])) {
$querytype = 1;
}
?>

<!-- Formular, insert/update -->
<form name="form1" method="post" action="dbinsert.php?querytype=<?php echo $querytype; ?>&id=<?php echo $_GET[id]; ?>">
<p>Title 
<input type="text" name="title" size="50" value="<?php echo $row[TITLE]; ?>">
<br>
Summary 
<input type="text" name="summary" size="50" value="<?php echo $row[SUMMARY]; ?>">
<br>
Content 
<textarea name="content" cols="60" rows="15"><?php echo $row[CONTENT]; ?></textarea>
</p>
<p> 
<input type="submit" name="Submit" value="Submit">
</p>

<p> 
<input type="reset" value="Zurücksetzen" />
</p>
</form>
 
Jepp, kann.
Grundsätzlich ist es so richtig. Aber

item: Du solltest von mysql_* auf mysqli_* wechseln da mysql_* veraltet ist und in Zukunft irgendwann nicht mehr funktionieren.

item;: Ich würde noch mit mysql_affected_rows() bzw. mysqli_affected_rows() verwenden um nachzuprüfen ob überhaubt etwas gemacht wurde

item: Beim INSERT gibts du keine ID mit. Ergo wird das Feld ID ein autoinkrement-Feld sein, was wiederum bedeutet dass es eine Zahl ist. Zahlen sollte man in SQL auch als Zahlen behandeln und nich zu Strings konvertieren. Darum bei der WHERE die ID nicht in ' setzen (gilt auch für den UPDATE).
SQL:
WHERE ID = '$_GET[id]'
-- ersetzen durch
WHERE ID = $_GET[id]
 
Zuletzt bearbeitet von einem Moderator:
Zurück