&do=newsdel&Id=$zeile->Id

Headymaster

Erfahrenes Mitglied
Hallo!

habe wieda ein Prob bei meinem newsscript:

PHP:
<?php
 // Benötigte Dateien includen
include("config/checkuser.php");

   // Verbindung zur Datenbank herstellen
   function dbconnect()
   {
    
     // benötigte Dateien
     include("config/sql.php");
     
     $connect = mysql_connect($dbserver, $dbuser, $dbpw) or die ("Es konnte keine Verbindung mit der DB hergestellt werden");
     $dbselect = mysql_select_db($dbname, $connect) or die ("DB-Table konnte nicht ausgewählt werden");
   }

if($_GET['do'] == "addform")
{
// Formular generieren + DB-Einträge einfügen
echo <<<EOL

<h1 style="text-align:center;">News hinzufügen</h1>
<p></p>
<p align="center"><b>Es wird html unterstützt!</b></p>
<p></p>
<form action="$PHP_SELF?section=news" method="post">
 <table align="center" style="width:600; background-color:#CCCCCC">
  <tr>
   <td><b>Titel:</b></td><td><input type="text" name="title"></td>
  </tr>
  <tr>
   <td></td><td><textarea name"newsinhalt" rows="15" cols="40"></textarea></td>
  </tr>
  <tr>
   <td><b>Quelle:</b></td><td><input type="text" name="quelle"></td>
  </tr> 
  <tr>
   <td colspan="2" align="center">
    <input type="submit" name="save" value="Save">
    <input type="hidden" name="do" value="newsadd">
   </td>
  </tr>
 </table>
</form>

EOL;
}

//News hinzufügen
if($_POST['do'] == "newsadd")
{
  dbconnect();
  
  //Zeit generieren
  $time = date("m.d.y G:i");
  
  // Datensätze in Datenbank schreiben
  $sql = ("INSERT INTO news 
  (datum, title, newsinhalt, quelle) VALUES 
  ('".$time."', '".$_POST['title']."', '".$_POST['newsinhalt']."', '".$_POST['quelle']."');");
  $ausfuehren = mysql_query($sql);
  
  	 	 if ($ausfuehren)
         {
             echo "Die Einträge wurden erfolgreich hinzugefügt";
         } 
         else
         {
             echo "Die Einträge konnten nicht hinzugefügt werden!";
         }
}

//News editieren
if($_POST['do'] == "newsupdate")
{

}

//News löschen
if($_GET['do'] == "newsdel")
{
   dbconnect();
   
   $sql = "DELETE * FROM news where Id='".$_GET['Id']."'";
   $result = mysql_query($sql);
   
   if($result)
   {
   echo "Delete successfull!";
   }
   else
   {
   echo "Löschen fehlgeschlagen!";
   }
}
//########################################     	 
//########################################
// Startanzeige der alten/bestehenden News
dbconnect();
   
//Datensätze aus Datenbank holen
$sql = "SELECT * FROM news";
$result = mysql_query($sql);
   
// Link zum Newsadden
echo "<p align=\"center\"><a href=\"$PHP_SELF?section=news&do=addform\"><font color=\"#000000\">News hinzufügen</font></a></p>";
   
// Tableheader generieren
   
echo <<<EOL
<table align="center" cellpadding="4" cellspacing="1" style="width:500">
 <tr bgcolor="#666666">
  <td><b>Datum</b></td><td><b>Titel</b></td><td><b>Aktionen</b></td>
 </tr>
EOL;

//Datensätze auslesen
while ($zeile = mysql_fetch_object($result)) {

 echo "<tr bgcolor=\"#666666\">";
 echo "<td>$zeile->datum</td><td>$zeile->title</td><td align=\"center\">
 <a href=\"$PHP_SELF?section=news&do=newsupdate&Id=$zeile->Id\"><img src=\"../Bilder/aktionen/edit.gif\"></img></a>
 <a href=\"$PHP_SELF?section=news&do=newsdel&Id=$zeile->Id\"><img src=\"../Bilder/aktionen/delete.gif\"></img></a>
 </td>";
  }
 // ende des Tables generieren
 echo "</tr>";
 echo"</table>";
?>


Und zwar werden die schon vorhandenen News prima ausgegeben....
So nun will ich hinter jeder News ein Edit und einDelbutton haben.
Der Delbutton leitet dann an die eigne php-datei weiter und übergibt an "newsdel".....so das Problem ist nur.....das das Deleten der News nicht funktioniert.....woran kann das liegen.....ich kanns einfach net finden....obwohl des ja eig total simpel ist

dbconnecten---->und dann einträge löschen wo Id=($_POST['Id'])


MFG Niels
 
hey

das da kann meines erachtens nicht funktionieren...

PHP:
   $sql = "DELETE * FROM news where Id='".$_GET['Id']."'";
   $result = mysql_query($sql);
   
   if($result)
   {
   echo "Delete successfull!";
   }
   else
   {
   echo "Löschen fehlgeschlagen!";
   }

mach mal probehalber

PHP:
$sql = "DELETE * FROM news where Id='".$_GET['Id']."'";
mysql_query($sql);

ohne die ganze IF Anweisung
 
Ja das hatte ich so auch schon.....des geht net....deswegen gibt er mitm if ja auch aus....dass das löschen nicht geklappt hat.

MFG Niels
 
Du solltest mit den von PHP zur Verfügung gestellten Fehleranalysefunktionen wie etwa mysql_error() nutzen. Denn diese würde dir sagen, dass das Asterisk-Zeichen in der DELETE-Syntax nichts verloren hat.
Zusätzlich solltest du dich noch über Sicherheitsaspekte wie etwa SQL-Injektionen informieren. Auch dass das Löschen von Datensätzen nur von zwei GET-Argumenten abhängt, sehe ich gar nicht gerne.
 
Ja es ist alles halt das erste was ich so in php mache...ich will erstma die Funktion zum Laufen bringen und dann nach und nach Sicherheitsaspekte sowie Verbesserungen einbinden...aber ich danke dir für die tipps :)

MFG Niels
 
So dass das Löschen funktioniert habe ich hinbekommen.....auch habe ich die abfrage jez vor SQL-Injection geschützt....denke ich jedenfallss so wie ich es verstanden habe

habe jez nämlich

PHP:
$sql = "DELETE FROM news where Id='".$_GET['Id']."'";
durch
PHP:
$sql = "DELETE FROM news where Id='".mysql_real_escape_string($_GET['Id'])."'";

ersetzt....

So nun habe ich eine Frage....

ich habe in meinem Buch gelesen, dass man arrays nach Schlüsseln sortieren kann....sprich zum Beispiel nach dem datum des eintrags


so nun würde ich gerne die Abfrage der bestehenden news

PHP:
//########################################     	 
//########################################
// Startanzeige der alten/bestehenden News
dbconnect();
   
//Datensätze aus Datenbank holen
$sql = "SELECT * FROM news";
$result = mysql_query($sql);

// Link zum Newsadden
echo "<p align=\"center\"><a href=\"$PHP_SELF?section=news&do=addform\"><font color=\"#000000\">News hinzufügen</font></a></p>";
   
// Tableheader generieren
   
echo <<<EOL
<table align="center" cellpadding="4" cellspacing="1" style="width:500">
 <tr bgcolor="#666666">
  <td><b>Datum</b></td><td><b>Titel</b></td><td><b>Aktionen</b></td>
 </tr>
EOL;

//Datensätze auslesen
while ($zeile = mysql_fetch_object($result)) {

 echo "<tr bgcolor=\"#666666\">";
 echo "<td>$zeile->datum</td><td>$zeile->title</td><td align=\"center\">
 <a href=\"$PHP_SELF?section=news&do=newsupdate&Id=$zeile->Id\"><img src=\"../Bilder/aktionen/edit.gif\"></img></a>
 <a href=\"$PHP_SELF?section=news&do=newsdel&Id=$zeile->Id\"><img src=\"../Bilder/aktionen/delete.gif\"></img></a>
 </td>";
  }
 // ende des Tables generieren
 echo "</tr>";
 echo"</table>";

so umgestalten, dass nach Ausgabe der datensätze in der DB, diese zunächst nach dem erstellungsdatum...sprich $datum.....sortiert werden....

Wie mach ich das?
würde mich über ein Beispiel freuen..

MFG Niels
 
Hallo und guten Morgen,

SQL:
SELECT 
           *
FROM
          Tabelle
ORDER BY
          datum
DESC;

Ps. das sind aber Basics die man auch mal ruhig googlen kann.
 
Ja thx......bin halt neu in php und hätte net gedacht dass man das auch mit mysql sortieren kann.....dann häte ich auch danach gegoogelt^^.....hatte in meinem Buch gelesen dass man es mit aarays machen kann und da dachte ich weil da nichts andres stand....dass es nur damit geht.... :(

MFG Niels
 
Zurück