News Editieren wie auch löschen klappt bei mir nicht :(

Giovanni

Mitglied
Hallo erstmal,

ich sitze nun seit ca zwei Wochen und habe mir PHP begebracht leider will noch nicht alles so wie ich es möchte.
Ich hab die Kompletten Grundbefehle für PHP drin,
ich kann auch mit mysql arbeiten also nun zu meinem Problem.

Ich habe ein Admin Bereich erstellt in dem ich mich einloggen muss die User daten sind natürlich in der mysql Datenbank hinterlegt.
Session ist auch gestartet und alles nun bin ich drinnen und Klicke auf den Link News, dabei will ich dann das man Dort die News bearbeiten kann, löschen kann und auch Erstellen kann.

Ich hab das bis jetzt so realisiert das ich eine Liste habe, dort werden Buttons erstellt damit ich dann nur noch auf diesen Knopf drücken muss um den Beitrag zu löschen oder zu Editieren, aber leider klappt das nicht so ganz wie ich das gerne möchte und zwar, wenn ich auf löschen drücke Löscht er mir genau den ersten Beitrag in der mysql datenbank, also das heißt wenn ich 3 news habe löscht er mir News Nr. 1 aber ich wollte News nr 2 löschen, genau das gleiche problem ist es mit dem editieren.

Ich hoffe ihr könnt mir da einwenig weiter helfen denn wenn ich das so zum laufen bekomme, klappt der rest dann auch von selbst. Ich wäre euch sehr dankbar.
Und nun der Code mag sein das er bisschen unübersichtlich ist, da auch keine Kommentare vorhanden sind, aber gute Coder die auch ca in meinem Level sind die müssten Ihne eigendlich recht gut lesen können.

PHP:
<?php
if(!isset($_SESSION["Name"]))
{
  echo "Bitte Loggen Sie sich ein.<br>\n";
  echo "Zum<a href=\"index.php\">Login</a>\n";
}
else
{
  error_reporting(E_ALL);
  echo "Hier k&ouml;nnen Sie nun die News bearbeiten.<br>\n";
  echo "Das hei&szlig;t Sie k&ouml;nnen die News bearbeiten, erstellen und l&ouml;schen.<br><br>\n";
  
  ##---------------------------------------##
  #  Ausgabe der News in einer Tabelle      #
  #  es gibt die M&ouml;glichkeit die News  #
  #  anzuwaehlen und dann per Button den    #
  #  gewuenschten effekt zu erzielen        #
  ##---------------------------------------##
  
  include "mysql.php";
  
  //mysql_query befehle
  //Die News werden nun ausgelesen
  $sql = "SELECT
            ID,
            Titel,
            Inhalt,
            Datum,
            Autor
          FROM
            news
          ORDER BY
            Datum DESC";
            
  $auslesen = mysql_query($sql) OR die(mysql_error());
  if(mysql_num_rows($auslesen))
  {      
    echo "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"border: 2px solid #7f7f7f;\">\n";
    while($row = mysql_fetch_assoc($auslesen))
    {
      echo "<form action=\"admin.php?page=news\" method=\"post\">\n";
      echo "  <tr>\n";
      echo "    <td width=\"30\">".$id_n=$row['ID']."&nbsp;&nbsp;</td>\n";
      echo "    <td width=\"300\">".$titel_n=$row['Titel']."&nbsp;&nbsp;</td>\n";
      echo "    <td width=\"115\" style=\"font-size: 11px;\">&nbsp;&nbsp;".$row['Datum']."&nbsp;&nbsp;</td>\n";
      echo "    <td width=\"100\">".$autor_n=$row['Autor']."&nbsp;&nbsp;</td>\n";
      echo "    <td><input type=\"Submit\" name=\"submit\" value=\"D\"></td>\n";
      echo "    <td><input type=\"Submit\" name=\"submit\" value=\"E\"></td>\n";
      $inhalt_n=$row['Inhalt'];
      echo "  </tr>\n";
      echo"</form>\n";
    };      
    echo "</table>\n";
  }
  else
  {
    echo "<br>Keine News sind vorhanden.<br>\n";
    echo "<br>Sie k&ouml;nnen nun News erstellen<br>\n";
    
  };echo "<br>Neue News <form action=\"admin.php?page=news\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Erstellen\"></form>\n";
            
  
  ##---------------------------------------##
  #  ENDE                                   #
  ##---------------------------------------##
  
  
  if(@$_POST["submit"] == "Erstellen")
  {
   //Hier kann man nun die News Erstellen \\
    echo "<form action\"admin.php?page=news\" method=\"post\">\n";
    echo "<table>\n";
    echo "  <tr>\n";
    echo "    <td>Titel: </td>\n";
    echo "    <td><input type=\"text\" name=\"titel_e\" size=\"80\"></td>\n";
    echo "  </tr>\n";
    echo "  <tr>\n";
    echo "    <td>Inhalt: </td>\n";
    echo "    <td><textarea name=\"inhalt_e\" cols=\"60\" rows=\"10\"></textarea></td>\n";
    echo "  </tr>\n";
    echo "  <tr>\n";
    echo "    <td>Autor: </td>\n";
    echo "    <td><input type=\"text\" name=\"autor_e\" size=\"20\"></input></td>\n";
    echo "  </tr>\n";
    echo "  <tr>\n";
    echo "    <td colspan=\"2\"><center><input type=\"submit\" name=\"submit\" value=\"Eintragen\"></center></td>\n";
    echo "  </tr>\n";
    echo "</table>\n";
    echo "</form>\n";
  };
  if(@$_POST["submit"] == "E")
  {
    $id_e = $id_n;
    //Hier kann man nun den gew&auml;hlten Newsbeitrag Editieren \\
    echo "<form action\"admin.php?page=news\" method=\"post\">\n";
    echo "<table>\n";
    echo "  <tr>\n";
    echo "    <td>Titel: </td>\n";
    echo "    <td><input type=\"text\" name=\"titel_e\" value=\"$titel_n\" size=\"80\"></td>\n";
    echo "  </tr>\n";
    echo "  <tr>\n";
    echo "    <td>Inhalt: </td>\n";
    echo "    <td><textarea name=\"inhalt_e\" cols=\"60\" rows=\"10\">".$inhalt_n."</textarea></td>\n";
    echo "  </tr>\n";
    echo "  <tr>\n";
    echo "    <td>Autor: </td>\n";
    echo "    <td><input type=\"text\" name=\"autor_e\" value=\"$autor_n\" size=\"20\"></input></td>\n";
    echo "  </tr>\n";
    echo "  <tr>\n";
    echo "    <td colspan=\"2\"><center><input type=\"submit\" name=\"submit\" value=\"Edit\"></center></td>\n";
    echo "  </tr>\n";
    echo "</table>\n";
    echo "</form>\n";

  };
  if(@$_POST["submit"] == "D")
  {
    $titel_d = "<div style=\"font-weight:bold;\">".$titel_n."</div>\n"; 
    //Hier kann man die ausgew&auml;hlten Newsbeitraege Loeschen  \\
    $sql = "DELETE FROM News
              WHERE
                id = '".$id_n."' LIMIT 1";
    $result = mysql_query($sql) OR die(mysql_error());
    echo "Der Newseintrag ".$titel_d." wurde gel&ouml;scht.<br>\n";
  };
};
      if(@$_POST["submit"] == "Eintragen")
        {
          $titel_e = trim($_POST["titel_e"]);
          $inhalt_e = trim($_POST["inhalt_e"]);
          $autor_e =trim($_POST["autor_e"]);
          if($titel_e != "" AND $inhalt_e != "" AND $autor_e != "")
          {
            $sql = "INSERT INTO News
                       (
                        Titel,
                        Inhalt,
                        Datum,
                        Autor
                       )
                    VALUES
                       (
                        '$titel_e',
                        '$inhalt_e',
                        NOW(),
                        '$autor_e'
                       )";
            mysql_query($sql) OR die(mysql_error());
            echo "News wurde hinzugef&uuml;gt.<br>\n";
          }
          else
          {
            echo "Bitte f&uuml;llen Sie alle Felder aus.<br>\n";
          };
        };
      if(@$_POST["submit"] == "Edit")
        {
          $titel_e = trim($_POST["titel_e"]);
          $inhalt_e = trim($_POST["inhalt_e"]);
          $autor_e =trim($_POST["autor_e"]);
          if($titel_e != "" AND $inhalt_e != "" AND $autor_e != "")
          {
            echo "News wurde Editiert.<br>\n";
          }
          else
          {
            echo "Bitte f&uuml;llen Sie alle Felder aus.<br>\n";
          };
        };
?>

Ich hoffe ihr könnt mir dabei helfen, danke schon mal im Vorraus

ps: Der Code ist noch nicht fertig also die Edit funktion funktioniert noch nicht, weil ich erst das mit dem Löschen hinbekommen möchte, leider klappt es nicht egal wie ich es versuche den ausgewählten Beitrag zu löschen.
Das mit dem Editieren würde dann höchstwahrscheinlich ohne probleme dann klappen

MfG
Gio
 
Zuletzt bearbeitet:
Ich sehe dich dort überall auf eine Variable $id_n zugreifen, entdecke aber nirgends, woher diese Variable kommen soll, zumindest wird sie übers Formular nicht übergeben.
 
PHP:
$sql = "DELETE FROM News
              WHERE
                id = '".$id_n."' LIMIT 1";

Mach mal LIMIT 1 weg. Ich denke mal das jeder deiner News eine eigene ID haben und somit ist das ja überflüssig. Also ich seh sonst nichts auffälliges.

@Sven Mintel

$id_n wird beim Auslesen der Tabelle eingetragen. Benutz mal die Seite dursuchenfunktion von deinem Browser und such danach.
 
LIMIT 1 habe ich nun entfernt aber es ist immernoch so...

Ich komm einfach nicht dahinter wo der fehler liegen könnte warum beim Löschen immer der erste Beitrag gelöscht wird obwohl ich den 3 oder letzten Beitrag löschen möchte...

Aber danke für eure Hilfe trozdem
 
Hallo!
PHP:
    while($row = mysql_fetch_assoc($auslesen))
    {
      echo "<form action=\"admin.php?page=news\" method=\"post\">\n";
      echo "  <tr>\n";
      echo "    <td width=\"30\">".$id_n=$row['ID']."&nbsp;&nbsp;</td>\n";
      echo "    <td width=\"300\">".$titel_n=$row['Titel']."&nbsp;&nbsp;</td>\n";
      echo "    <td width=\"115\" style=\"font-size: 11px;\">&nbsp;&nbsp;".$row['Datum']."&nbsp;&nbsp;</td>\n";
      echo "    <td width=\"100\">".$autor_n=$row['Autor']."&nbsp;&nbsp;</td>\n";
      echo "    <td><input type=\"Submit\" name=\"submit\" value=\"D\"></td>\n";
      echo "    <td><input type=\"Submit\" name=\"submit\" value=\"E\"></td>\n";
      $inhalt_n=$row['Inhalt'];
      echo "  </tr>\n";
      echo"</form>\n";
    };
Schaue Dir das Formular doch mal an.
Die Daten werden zwar angezeigt, aber beim drücken von "E" oder "D" nicht mitgesendet.

Ausserdem sehe ich auch kein UPDATE-Query (zum editieren).

.....warum beim Löschen immer der erste Beitrag gelöscht wird obwohl ich den 3 oder letzten Beitrag löschen möchte...
Da keine ID übergeben wird, wird per default der erste Eintrag gelöscht.

Gruss Dr Dau
 
Zuletzt bearbeitet:
Danke, das habe ich jetzt nun auch gesehn,
man da kann man schnell blind werden.

Aber wie kann ich das nun am besten machen das ich die Daten mitsenden kann?

Danke im vorraus
 
Naja, um das Layout nicht auf den Kopf zu stellen, könntest Du die Daten z.b. über ein <input type="hidden">-Element mitsenden.
 
habe ich gemacht und es klappt ohne probleme :) danke

nun kann ich die News erstellen, bearbeiten und löschen ohne probleme.
 
Zurück