• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Lösch Button für mysql Datensatz in Tabelle

qwertz

Neues Mitglied
Hallo,

An der Webseite an der ich gerade Baue, gibt es eine Tabelle, die Datensätze anzeigen soll. Nachdem der Datensatz von uns verarbeitet wurde, soll man ihn über einen Button Löschen können. Der Button existiert und funktioniert, er kann einzelne Datensätze löschen. Nur das Problem ist, er löscht die letzten Datensätze und nicht die Datensätze, die man über den Button auswählt. Ich hatte auch meine Probleme überhaubt den Code so zu schreiben, dabei hat mir ein anderes Thema geholfen: https://www.html.de/threads/loeschen-button-in-tabelle.56916/

Ich hoffe ihr könnt mir helfen, bzw. habt mich überhaubt verstanden. Ich Bedanke mich schon mal im vorhinein. Hier sind noch die Codes:

Der Code hier der ist die Tabelle

Code:
  <table class="table table-striped">
    <form action='delete.php' method="POST" >
    <thead class="thead-dark">
      <tr>
        <th>  </th>
        <th> Order ID </th>
        <th> Food ID </th>
        <th> Order Date </th>
        <th> Food Name </th>
        <th> Quantity </th>
        <th> Ordernumber </th>
        <th> actions </th>

      </tr>
    </thead>

    <?PHP
      //OUTPUT DATA OF EACH ROW
      while($row = mysqli_fetch_assoc($result)){
    ?>

  <tbody>
    <tr>
      <td> <span class="glyphicon glyphicon-menu-right"></span> </td>
      <td><?php echo $row["order_ID"]; ?></td>
      <td><?php echo $row["F_ID"]; ?></td>
      <td><?php echo $row["order_date"]; ?></td>
      <td><?php echo $row["foodname"]; ?></td>
      <td><?php echo $row["quantity"]; ?></td>
      <td><?php echo $row["b_numm"]; ?></td>
      <td>
      <input type='hidden' name='id' value="<?php echo $row['order_ID']; ?>">
      <input type="SUBMIT" name="delete" value="Loeschen">
      </td>

    </tr>
  </tbody>

<?php } ?>
</form>
  </table>
    <br>

das hier ist der Code der die sachen löscht

PHP:
<?php
error_reporting(-1);
ini_set('display_errors', true);

$gut = $_POST['id'];

  $con = mysqli_connect('localhost','root','', 'foodorder');

    mysqli_select_db($con,'orders');

  $sql = "DELETE FROM `orders` WHERE `order_ID` = ";

  if(mysqli_query($con,$sql))
        header("refresh:1; url=view_order_kitchen.php");

    else{
        echo "Fehler";
}
  ?>

(Die erste code ist von der Datei view_order_kitchen.php und der zweite code von delete.php)

MfG
BWDS
 
Werbung:
Das bedeutet sie würden es über get regeln. Ich habe es vorher auch über get ausprobiert nur zeigte er mir immer ein fehler der string conversation an deshalb bin ich auf post gewechselt. Wenn man mir bei get auch noch weiterhelfen würde, wär ich dankbar

MfG
BWDS
 
Werbung:
Dafür brauchst du kein Formular.
<form action='delete.php' method="POST" > und </form> raus
PHP:
    <tr>
      <td> <span class="glyphicon glyphicon-menu-right"></span> </td>
      <td><?php echo $row["order_ID"]; ?></td>
      <td><?php echo $row["F_ID"]; ?></td>
      <td><?php echo $row["order_date"]; ?></td>
      <td><?php echo $row["foodname"]; ?></td>
      <td><?php echo $row["quantity"]; ?></td>
      <td><?php echo $row["b_numm"]; ?></td>
      <td><a href="delete.php?order_id="<?php echo $row['order_ID']; ?>" class="button">Löschen</a></td>
    </tr>
In delete.php
PHP:
<?php
  if (isset($_GET['order_id'))
  {
     // Hier hast du jetzt die ID von dem Datensatz, der gelöscht werden soll
  }
?>
Möglicher CSS-Code für den Link
CSS:
<style>
      .button {
      background-color: #FF4500;
      border: none;
      color: white;
      padding: 5px;
      text-align: center;
      text-decoration: none;
      font-size: 14px;
      cursor: pointer;
      }
</style>
 
Und du glaubst jetzt wirklich, wir könnten das Problem ohne deinen angepassten Quellcode erkennen? Wenn ja, dann muss ich dich enttäuschen, meine Glaskugel ist wegen Corona in Kurzarbeit.
 
Werbung:
Angepasster Quellcode:

view_order_kitchen.php

Code:
  <table class="table table-striped">
    <thead class="thead-dark">
      <tr>
        <th>  </th>
        <th> Order ID </th>
        <th> Food ID </th>
        <th> Order Date </th>
        <th> Food Name </th>
        <th> Quantity </th>
        <th> Ordernumber </th>
        <th> actions </th>

      </tr>
    </thead>

    <?PHP
      //OUTPUT DATA OF EACH ROW
      while($row = mysqli_fetch_assoc($result)){
    ?>

  <tbody>
    <tr>
      <td> <span class="glyphicon glyphicon-menu-right"></span> </td>
      <td><?php echo $row["order_ID"]; ?></td>
      <td><?php echo $row["F_ID"]; ?></td>
      <td><?php echo $row["order_date"]; ?></td>
      <td><?php echo $row["foodname"]; ?></td>
      <td><?php echo $row["quantity"]; ?></td>
      <td><?php echo $row["b_numm"]; ?></td>
      <td><a href="delete.php?order_id="<?php echo $row['order_ID']; ?> class="button">Löschen</a></td>

    </tr>
  </tbody>

<?php } ?>
  </table>

delete.php

Code:
<?php
error_reporting(-1);
 ini_set('display_errors', true);


  $con = mysqli_connect('localhost','root','', 'foodorder');

    mysqli_select_db($con,'orders');

    if (isset($_GET['order_id']))
{
    $sql = "DELETE FROM `orders` WHERE `order_ID` = $_GET";

}


  if(mysqli_query($con,$sql))
        header("refresh:1; url=view_order_kitchen.php");

    else{
        echo "Fehler";
}

  ?>
Fehler webseite bestellung .png

Hier der Fehler CODE
 
if (isset($_GET['order_id']))

$sql = "DELETE FROM `orders` WHERE `order_ID` = $_GET";

Da fällt dir nix auf?
 
Nein leider nicht. Trotzdem wird von view_order_kitchen.php keine id weitergegeben.
 
Werbung:
Nein leider nicht.
Traurig, dann solltest du dich mehr mit den Grundlagen beschäftigen.

Trotzdem wird von view_order_kitchen.php keine id weitergegeben.
Woher weißt du das? Ich sehe da keinerlei Debugausgaben.

Richtig debuggen
  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
  2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
  3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
  4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
  5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
  6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
  7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
  8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
  9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
 
Woher weißt du das? Ich sehe da keinerlei Debugausgaben.

indem ich einfach den code aus der delete.php ersetze durch den code:

Code:
<?php
echo '<pre>';
print_r($_GET);
echo '</pre>';
?>

dann kommt das
1594044241872.png
daran sieht man, dass keine id übergeben wurde

hat man zb die id 467 würde das heraus kommen:
1594044336483.png

Da fällt dir nix auf?

was sollte mir da auffallen? dass man nach dem gleich zeichen das schreibt?


if (isset($_GET['order_id']))

$sql = "DELETE FROM `orders` WHERE `order_ID` = $_GET['order_ID']";


kläre mich bitte mal auf dies wäre eusers nett

MfG
BWDS
 
Dann kann doch nur hier das Problem liegen:
PHP:
<a href="delete.php?order_id="<?php echo $row['order_ID']; ?> class="button">Löschen</a></td>
Du müsstest in der URL bei delete.php die ID sehen. Wenn das nicht so ist, dann musst du mal nachgesehen, wie der HTML-Code aussieht, den der Browser bei der Zeile bekommt.
 
Werbung:
ich habe es jetzt gerade gerückt, und nun wird die ID übertragen.
quellcode aktualisierung:
view_order_kitchen.php
Code:
  <table class="table table-striped">
    <thead class="thead-dark">
      <tr>
        <th>  </th>
        <th> Order ID </th>
        <th> Food ID </th>
        <th> Order Date </th>
        <th> Food Name </th>
        <th> Quantity </th>
        <th> Ordernumber </th>
        <th> actions </th>

      </tr>
    </thead>

    <?PHP
      //OUTPUT DATA OF EACH ROW
      while($row = mysqli_fetch_assoc($result)){
    ?>

  <tbody>
    <tr>
      <td> <span class="glyphicon glyphicon-menu-right"></span> </td>
      <td><?php echo $row["order_ID"]; ?></td>
      <td><?php echo $row["F_ID"]; ?></td>
      <td><?php echo $row["order_date"]; ?></td>
      <td><?php echo $row["foodname"]; ?></td>
      <td><?php echo $row["quantity"]; ?></td>
      <td><?php echo $row["b_numm"]; ?></td>
      <?php
    echo  "<td><a href=delete.php?id=".$row['order_ID'].">ENTFERNEN</a></td>"; 
      ?>


    </tr>
  </tbody>

<?php } ?>

  </table>
    <br>


delete.php

Code:
<?php
error_reporting(-1);
 ini_set('display_errors', true);


  $con = mysqli_connect('localhost','root','', 'foodorder');

    mysqli_select_db($con,'orders');

    if (isset($_GET['order_id']))
{
    $sql = "DELETE FROM `orders` WHERE order_ID = $_GET['order_ID'] ";

}


  if(mysqli_query($con,$sql))
        header("refresh:1; url=view_order_kitchen.php");

    else{
        echo "Fehler";
}

  ?>

trotzdem ist immernoch der wurm drin.

MfG
BWDS
 
trotzdem ist immernoch der wurm drin.
Och menno, das ist doch kein Problembeschreibung und "Richtig debuggen" hast du auch nicht angewendet. Ist das wirklich so schwer???
PHP:
<?php
  error_reporting(-1);
  ini_set('display_errors', true);


  if (isset($_GET['order_id']))
  {
     $con = mysqli_connect('localhost','root','', 'foodorder');
 
     if (!$con)
     {
       echo "Fehler: konnte nicht mit MySQL verbinden." . PHP_EOL;
       echo "Debug-Fehlernummer: " . mysqli_connect_errno() . PHP_EOL;
       echo "Debug-Fehlermeldung: " . mysqli_connect_error() . PHP_EOL;
       exit;
     }

     mysqli_select_db($con,'orders')
       or die (mysqli_error($con));

     $sql = "DELETE FROM `orders` WHERE order_ID = $_GET['order_ID'] ";

     mysqli_query($con,$sql)
       or die (mysqli_error($con));
      
     header("refresh:1; url=view_order_kitchen.php");
  }
  else
    die ("Parameter nicht vorhanden");
?>
 
wenn ich genau diesen code in delete.php einfüg zeigt er mir folgende fehlermeldung an:
1594055243004.png
der code ist aber soweit ich sehe richtig.

MfG
BWDS
 
Werbung:
:frown: :confused:
PHP:
$sql = "DELETE FROM `orders` WHERE order_ID = " . $_GET['order_ID'];
 
Jetzt sagt er mir, dass der parameter nicht vorhanden ist, obwohl der parameter vorhanden ist.

was nun?
 
Wenn PHP bei dem Script ausgibt, dass der Parameter nicht vorhanden ist, dann glaube ich PHP mehr als dir.

Hängt die ID an der URL?
Hast du das Script 1:1 übernommen?
 
Werbung:
Mach doch mal die Augen auf!!! Du hast wieder am HTML-Code rumgespielt, in der URL steht jetzt id und nicht order_id :mad:
 
Zurück
Oben