MySQL daten werden nicht gelöscht :(

BerlinerBaer

Mitglied
Hi Community,

ich habe ein Problem. Ich habe an einem Newsscript für meine Website gebastelt. Soweit auch alles gut. Nun will ich aber auch irgendwann einmal meine Daten vom Newsscript löschen.

Hier der script:

PHP:
<?php
include ('config.php');

$abfrage = "SELECT * FROM bb_hp";
$ergebnis = mysql_query($abfrage);
if(($row->intern==2) OR ($row->intern==1))
   {


if($row->id)
   {
$loeschen = "DELETE FROM bb_news WHERE id = '$row->id'";
$loesch = mysql_query($loeschen) or die(mysql_error());
   }


$abfrage = "SELECT * FROM bb_news";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {

echo "<table align=\"center\" width=\"550\">";
echo "<form action=\"index.php?page=news\" method=\"post\">";

echo "<tr>";

echo "<td class=\"body4\" width=\"20\">$row->id</td>";
echo "<td class=\"body4\" width=\"430\">$row->inhalt</td>";
echo "<td class=\"body4\" width=\"50\"><font color=\"$row->farbe\">Farbe</font></td>";
echo "<td class=\"body4\" width=\"50\"><input type=\"submit\" name=\"$row->id\" value=\"löschen\"></td>";

echo "</tr>";
echo "</form>";
echo "</table>";

   }
   }

?>

<br />

Ich würde mich über eure Hilfe sehr freuen.
 
Zuletzt bearbeitet:
Woher kommt den dein $row was zeigt dir echo bzw printr ?
Schon mal $row['id'] probiert?

mfg Spikaner
 
Zuletzt bearbeitet:
Woher kommt den dein $row was zeigt dir echo bzw printr ?
Schon mal $row['id'] probiert?

mfg Spikaner

Wieso fragen mich das alle? Eine Antwort:
$row->id welches oben in der If-Anweisung steht, kommt aus dem Input in meinem formular. Also hiervon:
<input type=\"submit\" name=\"$row->id\" value=\"löschen\">
Das hat den Grund, das auch wirklich die eine ID und nicht jede id bearbeitet, bzw. gelöscht wird. Ich will ja nur das löschen, was ich will, und nicht alles. ;)

$row['id'] == $row->id

if(($row->intern==2) OR ($row->intern==1))
{

Wo ist die schließende Klammer im Skript!!?

ganz unten beim script? Naja, das ist eigentlich nur dafür, das die Admin und Moderatoren meines Boards zugriff darauf haben, und nicht jeder x-beliebige. Also mit dieser If-Anweisung bin ich bislang immer glücklich gewesen, und das dürfte ansich kein Problem sein, da es auch bei meinen anderen scripten, um Daten zu ändern, genauso gut funktioniert. Also, das hat im endeffekt nichts mit dem eigentlichen fehler zu tun. ;)

PHP:
$abfrage = "SELECT * FROM bb_hp";
$ergebnis = mysql_query($abfrage);
if(($row->intern==2) OR ($row->intern==1))
   { // offen 1


if($row->id)
   { // offen 2
$loeschen = "DELETE FROM bb_news WHERE id = '$row->id'";
$loesch = mysql_query($loeschen) or die(mysql_error());
   } // geschlossen 2


$abfrage = "SELECT * FROM bb_news";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   { // offen 3

// tabelle

   } // geschlossen 3
   } // geschlossen 1
 
Zuletzt bearbeitet:
Wieso fragen mich das alle? Eine Antwort:
$row->id welches oben in der If-Anweisung steht, kommt aus dem Input in meinem formular. Also hiervon:
<input type=\"submit\" name=\"$row->id\" value=\"löschen\">
Das hat den Grund, das auch wirklich die eine ID und nicht jede id bearbeitet, bzw. gelöscht wird. Ich will ja nur das löschen, was ich will, und nicht alles. ;)

Und wie kommt es in das Formular?
Ich sehe nirgends in deinem Code, wo die Variable $row herkommt....um $row->id als Namen für das Formularfeld zuzuweisen, müsste ja $row erstmal irgendwo herkommen?
 
Und wie kommt es in das Formular?
Ich sehe nirgends in deinem Code, wo die Variable $row herkommt....um $row->id als Namen für das Formularfeld zuzuweisen, müsste ja $row erstmal irgendwo herkommen?

Hab ich schonmal erwähnt, das ich mich mit php und mysql nicht besonders gut auskenne?

Nunja, also die anderen Abfragen funktionieren alle.


PHP:
echo "<td class=\"body4\" width=\"20\">$row->id</td>"; // ausgabe ohne Probleme
echo "<td class=\"body4\" width=\"430\">$row->inhalt</td>"; // ausgabe ohne Probleme
echo "<td class=\"body4\" width=\"50\"><font color=\"$row->farbe\">Farbe</font></td>"; // ausgabe ohne Probleme
echo "<td class=\"body4\" width=\"50\"><input type=\"submit\" name=\"$row->id\" value=\"löschen\"></td>"; //ausgabe ohne Probleme

Hier sogar der Quelltext zeigt es richtig an:
HTML:
<td class="body4">8</td>
<td class="body4">-- Abwesenheitsmeldung kann man nun nach belieben per Einstellungen ändern!  </td>
<td class="body4"><input type="submit" name="8" value="löschen"></td>

Die 8 ist die $row->id geht von 1 bis offen durch.
 
Sorry, ich hatte Tomaten auf den Augen...

Woher die $row->id im Formular kommt, ist ja doch zu sehen...
Code:
while($row = mysql_fetch_object($ergebnis))

Vorrausgesetzt, jenes funktioniert
Code:
if(($row->intern==2) OR ($row->intern==1))
...warumauchimmer, aber es scheint ja zu funktionieren, sonst würdest du das Formular ja nicht sehen :-)
...
probiere es mal so:
PHP:
<?php
include ('config.php');

$abfrage = "SELECT * FROM bb_hp";
$ergebnis = mysql_query($abfrage);
if(($row->intern==2) OR ($row->intern==1))
  {
    if(isset($_POST['deleteRow']))
      {
        $loeschen = 'DELETE FROM bb_news WHERE id = '.intval($_POST['deleteRow']);
        $loesch = mysql_query($loeschen) or die(mysql_error());
      }
  

$abfrage = "SELECT * FROM bb_news";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
    {

echo "<table align=\"center\" width=\"550\">";
echo "<form action=\"index.php?page=news\" method=\"post\">";

echo "<tr>";

echo "<td class=\"body4\" width=\"20\">$row->id<input type="hidden" name="deleteRow" value=\"$row->id\"></td>";
echo "<td class=\"body4\" width=\"430\">$row->inhalt</td>";
echo "<td class=\"body4\" width=\"50\"><font color=\"$row->farbe\">Farbe</font></td>";
echo "<td class=\"body4\" width=\"50\"><input type=\"submit\"  value=\"löschen\"></td>";

echo "</tr>";
echo "</form>";
echo "</table>";

    }
  }

?>
 
nur das ich bei hidden noch \ hinsetzen musste, muss ich sagen, das es perfekt ist. Vielen lieben danke für eure Hilfe.

hat alles ohne Probleme funktioniert. :)
 
Zurück