Beiträge per php löschen

Override

Grünschnabel
Hallo,

ich habe per Tutorial einen Newsbereich gemacht, lief alles glat und ohne probleme.
Jetzt möchte ich aber unter den geschriebenen Nachrichten einen Button der genau die gewählte Nachricht löscht.

Im Prinzip eine Datenbankabfrage

PHP:
mysql_select_db($database_news, $news);
db_query('DELETE FROM `prefix_newstabelle` WHERE id = "' LIMIT 1');

Den tollen Button bekomme ich hin :-) nur schaffe ich es nicht den Button mit dem Datenbankbefehl zu verknüpfen.

Mit einer Form habe ich es auch schon versucht, nur bekomme ich immer wieder Datenbankfehler. Hier mein Code:

PHP:
<?php require_once('../Connections/news.php'); ?>
<?php



if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}



}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO newstabelle (name, datum, nachricht) VALUES (%s, %s, %s)",
                       GetSQLValueString($_POST['name'], "text"),
                       GetSQLValueString($_POST['datum'], "text"),
                       GetSQLValueString($_POST['nachricht'], "text"));

  mysql_select_db($database_news, $news);
  $Result1 = mysql_query($insertSQL, $news) or die(mysql_error());
}



mysql_select_db($database_news, $news);
$query_news = "SELECT * FROM newstabelle ORDER BY id DESC";
$news = mysql_query($query_news, $news) or die(mysql_error());
$row_news = mysql_fetch_assoc($news);
$totalRows_news = mysql_num_rows($news);
?>

<?
$tag = date("d"); 
$monatZahl = date("m");
$month = date("F");
$jahr = date("Y");
if ($month == "January") {
	$monat = "Januar";
} else if ($month == "February") {
	$monat = "Februar";
} else if ($month == "March") {
	$monat = "März";
} else if ($month == "April") {
	$monat = "April";
} else if ($month == "May") {
	$monat = "Mai";
} else if ($month == "June") {
	$monat = "Juni";
} else if ($month == "July") {
	$monat = "Juli";
} else if ($month == "August") {
	$monat = "August";
} else if ($month == "September") {
	$monat = "September";
} else if ($month == "October") {
	$monat = "Oktober";
} else if ($month == "November") {
	$monat = "November";
} else if ($month == "December") {
	$monat = "Dezember";
} 
$datumT = "$tag. $monat $jahr";
$datumZ = "$tag.$monatZahl.$jahr";
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>News</title>
<style type="text/css">
<!--
.Stil1 {color: #FF0000}
-->
</style>
</head>

<body>
<h1>Hier stehen die News</h1>
<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1">
  <table align="center">
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Name:</td>
      <td><input type="text" name="name" value="" size="32" /></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Nachricht:</td>
      <td><input type="text" name="nachricht" value="" size="32" /></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">&nbsp;</td>
      <td><input type="submit" value="Nachricht senden" /></td>
    </tr>
  </table>
  <div align="center">
    <input type="hidden" name="datum" value="<?php echo $datumZ; ?>" />
    <input type="hidden" name="MM_insert" value="form1" />
  </div>
</form>
<p>&nbsp;</p>
<p>&nbsp;</p>
<?php do { ?>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <table width="200" border="1" align="center">
    <tr>
      <td><p align="center"><strong>Name </strong></p></td>
      <td><div align="center"><span class="Stil1"><?php echo $row_news['name']; ?></span></div></td>
    </tr>
    <tr>
      <td><p align="center"><strong>Datum</strong></p></td>
      <td><div align="center"><span class="Stil1"><?php echo $row_news['datum']; ?></span></div></td>
    </tr>
    <tr>
      <td><strong>Nachricht</strong></td>
      <td bgcolor="#999999"><?php echo $row_news['nachricht']; ?></td>
    </tr>
    <tr>
      <td><p align="center">&nbsp;</p></td>
      <td bgcolor="#999999"><div align="center">
        <form id="form2" name="form2" method="post" action="">
          <input type="submit" name="delete_news" id="delete_news" value="Loeschen" />
        </form>
        </div></td>
    </tr>
  </table>
  
  

  
  <?php } while ($row_news = mysql_fetch_assoc($news)); ?>
  <p>&nbsp;</p>
</body>
</html>
<?php
mysql_free_result($news);
?>

Ich weiß nicht obs was nützt, aber hier mal noch meine sql daten.
Datenbank:gskarmy
Tabelle:newstabelle
Datensatzgruppe für die News:news

Hoffe auf baldige Antwort und Hilfe :rolleyes:

M.f.G. Override
 
Dein SQL-Query ist ja auch nicht gültig. Der müsste wenn schon den schon so aussehen:
PHP:
mysql_select_db($database_news, $news); 
db_query('DELETE FROM `prefix_newstabelle` WHERE id = "'.$id.'" LIMIT 1');

Ansonsten hast du ja schon unten deinen Submit-Button zum Löschen benannt, damit kannst du dann abfragen, ob der gedrückt wurde (Wert von delete_news ist Loeschen). Aber ich gehe mal davon aus, dass du ja nur genau eine Nachricht löschen willst, deshalb denke ich mal auch, dass deine Nachrichten alle eine ID haben, oder?

Und was mir noch aufgefallen ist: du benutzt unten eine Do-While-Schleife, was soviel heißt wie, dass diese Schleife mindestens einmal ausgeführt wird, auch wenn keine Nachrichten existieren. Benutzte dafür lieber eine einfache While-Schleife.
 
Hi einfach nur crack,

sorry das ich jetzt erst antworte und danke für deine Tipps.

Hab noch ewig rumprobiert, (sogar einen supporter von Ilch zu rate gezogen) <-- darf man das schreiben?

Beide haben wir versucht über 2 Stunden eine simple Datenbankabfrage mit Delete hin zu bekommen, und es gab immer wieder errors bis er aufgegeben hat.

Ich hab noch weiter rumprobiert und letztendlich kam das ganze raus:

PHP:
<?php require_once('../Connections/news.php'); ?>
<?php



if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}



}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO newstabelle (name, datum, nachricht) VALUES (%s, %s, %s)",
                       GetSQLValueString($_POST['name'], "text"),
                       GetSQLValueString($_POST['datum'], "text"),
                       GetSQLValueString($_POST['nachricht'], "text"));

  mysql_select_db($database_news, $news);
  $Result1 = mysql_query($insertSQL, $news) or die(mysql_error());
}



mysql_select_db($database_news, $news);
$query_news = "SELECT * FROM newstabelle ORDER BY id DESC";
$news = mysql_query($query_news, $news) or die(mysql_error());
$row_news = mysql_fetch_assoc($news);
$totalRows_news = mysql_num_rows($news);

if ((isset($_GET["delete_news"])) && ($_GET["delete_news"] == "Senden")) {
mysql_select_db($database_news, $news); 
db_query('DELETE FROM `prefix_newstabelle` WHERE id = "'.$id.'" LIMIT 1');
}

?>

<?
$tag = date("d"); 
$monatZahl = date("m");
$month = date("F");
$jahr = date("Y");
if ($month == "January") {
	$monat = "Januar";
} else if ($month == "February") {
	$monat = "Februar";
} else if ($month == "March") {
	$monat = "März";
} else if ($month == "April") {
	$monat = "April";
} else if ($month == "May") {
	$monat = "Mai";
} else if ($month == "June") {
	$monat = "Juni";
} else if ($month == "July") {
	$monat = "Juli";
} else if ($month == "August") {
	$monat = "August";
} else if ($month == "September") {
	$monat = "September";
} else if ($month == "October") {
	$monat = "Oktober";
} else if ($month == "November") {
	$monat = "November";
} else if ($month == "December") {
	$monat = "Dezember";
} 
$datumT = "$tag. $monat $jahr";
$datumZ = "$tag.$monatZahl.$jahr";
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>News</title>
<style type="text/css">
<!--
.Stil1 {color: #FF0000}
-->
</style>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1>News</h1>
<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1">
  <table align="center">
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Name:</td>
      <td><input type="text" name="name" value="" size="32" /></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Nachricht:</td>
      <td><input type="text" name="nachricht" value="" size="32" /></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">&nbsp;</td>
      <td><input type="submit" value="Nachricht senden" /></td>
    </tr>
  </table>
  <div align="center">
    <input type="hidden" name="datum" value="<?php echo $datumZ; ?>" />
    <input type="hidden" name="MM_insert" value="form1" />
  </div>
</form>
<p>&nbsp;</p>
<p>&nbsp;</p>
<?php do { ?>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <table width="200" border="1" align="center">
    <tr>
      <td><p align="center"><strong>Name </strong></p></td>
      <td><div align="center"><span class="Stil1"><?php echo $row_news['name']; ?></span></div></td>
    </tr>
    <tr>
      <td><p align="center"><strong>Datum</strong></p></td>
      <td><div align="center"><span class="Stil1"><?php echo $row_news['datum']; ?></span></div></td>
    </tr>
    <tr>
      <td><strong>Nachricht</strong></td>
      <td bgcolor="#999999"><?php echo $row_news['nachricht']; ?></td>
    </tr>
    <tr>
      <td><p align="center">&nbsp;</p></td>
      <td bgcolor="#999999"><div align="center">
        <form id="form2" name="form2" method="post" action="">
          <input type="submit" name="delete_news" id="delete" value="Senden" />
        </form>
        </div></td>
    </tr>
  </table>
  
  

  
  <?php } while ($row_news = mysql_fetch_assoc($news)); ?>
  <p>&nbsp;</p>
</body>
</html>
<?php
mysql_free_result($news);
?>

Zwar bekomme ich jetzt keine ständigen errors mehr, aber mehr tut sich auch nicht.

Und ja, die Nachrichten haben alle eine ID :)

Evtl. fällt dir ja noch der ein oder andere Fehler auf.

L.G. Override
 
So müsste es gehen:
PHP:
<?php require_once('../Connections/news.php'); ?>
<?php



if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}



}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO newstabelle (name, datum, nachricht) VALUES (%s, %s, %s)",
                       GetSQLValueString($_POST['name'], "text"),
                       GetSQLValueString($_POST['datum'], "text"),
                       GetSQLValueString($_POST['nachricht'], "text"));

  mysql_select_db($database_news, $news);
  $Result1 = mysql_query($insertSQL, $news) or die(mysql_error());
}



mysql_select_db($database_news, $news);
$query_news = "SELECT * FROM newstabelle ORDER BY id DESC";
$news = mysql_query($query_news, $news) or die(mysql_error());
$row_news = mysql_fetch_assoc($news);
$totalRows_news = mysql_num_rows($news);


if ((isset($_POST["delete_news"])) && ($_POST["delete_news"] == "Senden")) { 
mysql_query('DELETE FROM `newstabelle` WHERE `id` = "'.$_POST['delete_id'].'"');
} 

?>

<?
$tag = date("d"); 
$monatZahl = date("m");
$month = date("F");
$jahr = date("Y");
if ($month == "January") {
	$monat = "Januar";
} else if ($month == "February") {
	$monat = "Februar";
} else if ($month == "March") {
	$monat = "März";
} else if ($month == "April") {
	$monat = "April";
} else if ($month == "May") {
	$monat = "Mai";
} else if ($month == "June") {
	$monat = "Juni";
} else if ($month == "July") {
	$monat = "Juli";
} else if ($month == "August") {
	$monat = "August";
} else if ($month == "September") {
	$monat = "September";
} else if ($month == "October") {
	$monat = "Oktober";
} else if ($month == "November") {
	$monat = "November";
} else if ($month == "December") {
	$monat = "Dezember";
} 
$datumT = "$tag. $monat $jahr";
$datumZ = "$tag.$monatZahl.$jahr";
?>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>News</title>
<style type="text/css">
<!--
.Stil1 {color: #FF0000}
-->
</style>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1>News</h1>
<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1">
  <table align="center">
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Name:</td>
      <td><input type="text" name="name" value="" size="32" /></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Nachricht:</td>
      <td><input type="text" name="nachricht" value="" size="32" /></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">&nbsp;</td>
      <td><input type="submit" value="Nachricht senden" /></td>
    </tr>
  </table>
  <div align="center">
    <input type="hidden" name="datum" value="<?php echo $datumZ; ?>" />
    <input type="hidden" name="MM_insert" value="form1" />
  </div>
</form>
<p>&nbsp;</p>
<p>&nbsp;</p>
<?php do { ?>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <table width="200" border="1" align="center">
    <tr>
      <td><p align="center"><strong>Name </strong></p></td>
      <td><div align="center"><span class="Stil1"><?php echo $row_news['name']; ?></span></div></td>
    </tr>
    <tr>
      <td><p align="center"><strong>Datum</strong></p></td>
      <td><div align="center"><span class="Stil1"><?php echo $row_news['datum']; ?></span></div></td>
    </tr>
    <tr>
      <td><strong>Nachricht</strong></td>
      <td bgcolor="#999999"><?php echo $row_news['nachricht']; ?></td>
    </tr>
    <tr>
      <td><p align="center">&nbsp;</p></td>
      <td bgcolor="#999999"><div align="center">
        <form id="form2" method="post">           
        <input type="hidden" name="delete_id" value="<?php echo $row_news['id']; ?>" />          
        <input type="submit" name="delete_news" id="delete" value="Senden" />         
        </form> 
        </div></td>
    </tr>
    <td>&nbsp;</td>
  </table>
  
  

  
  <?php } while ($row_news = mysql_fetch_assoc($news)); ?>
  <p>&nbsp;</p>
</body>
</html>
<?php
mysql_free_result($news);
?>

EDIT: Du hast einen falschen Tabellennamen angegeben.
 
Zuletzt bearbeitet:
Hi,

die ID müsstest Du aber vorher noch auf Gültigkeit prüfen, Benutzereingaben sollten niemals ungeprüft in DB-Abfragen gesteckt werden (auch ein hidden Field in einem Formular kann manipuliert werden).

LG
 
Zurück