Mysql Daten löschen

D

danex

Hallo,

ich habe die suchfunktion benutzt, auch ca. gefunden was ich will, aber ich bekomme es einfach nicht hin, neben der Spalte "Datum/Uhrzeit" eine zusätzlich Spalte einzufügen. In dieser Zeile soll ein Link/Button sein, um genau diesen Datensatz zu löschen.
Bitte helft mir, ich verzweifel schon seit Tagen, bitte helft einem Anfänger weiter =(



PHP:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Yard Database</title>
<style type="text/css">
<!--
.style1 {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-weight: normal;
	font-size: 24px;
	{color: #FF6600};
}
-->
body {
	background-color: #CCCCCC;
}


.style3 {color: #FF6600}
.style5 {color: #000000; font-size: 24px; }
.style6 {
	font-size: 36px;
	color: #FF6600;
}
</style>
</head>
<body>
<div align="center">
  <h1 class="style1"><span class="style6">Y</span><span class="style1">ard <span class="style6">D</span>atabase</span> </h1>
  <h1 class="style1">	
  </h1>
</div>
</body>
<hr>
</html>
<br>
<?php
if (isset($_POST['submit']) && isset($_POST['kfz']) && $_POST['kfz'] != '' ) {
   
     
  try {
    $db = new MySQLi('localhost', 'danex', 'aischane', 'yard');
    $sql = 'INSERT INTO yard (kfz, frachtfr, fahrtnr, wb1, wb2, time) VALUES (?, ?, ?, ?, ?, ?)';
    $kommando = $db->prepare($sql);
    $kommando->bind_param('ssssss', $_POST['kfz'], $_POST['frachtfr'], $_POST['fahrtnr'], $_POST['wb1'], $_POST['wb2'], $datum);
    $datum = $_POST['date'];
    $kommando->execute();
    $db->close();
  } catch (Exception $e) {
    echo 'Fehler: ' . htmlspecialchars($e->getMessage());
  }
}
?>

<style type="text/css">
<!--
.style9 {
	font-size: 18px;
	font-weight: normal;
	font-family: Verdana, Arial, Helvetica, sans-serif;
}
.style5 {font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: normal; font-size: 16px; }
-->
</style>
</head>

<body>
<form method="POST">
  <table width="636" border="1" align="center" cellpadding="0" cellspacing="0">
    <tr bordercolor="#999999" bgcolor="#999999">
      <td height="42" bgcolor="#FF6600"><span class="style9">Kennzeichen:&nbsp;</span></td>
      <td height="42" bgcolor="#FF6600"><input type="text" name="kfz" /></td>
      <td width="89" bgcolor="#FF6600"><span class="style9">Frachtf&uuml;hrer:&nbsp;</span></td>
      <td width="147" bgcolor="#FF6600"><span class="style5">
        <input name="frachtfr" type="text" />
      </span></td>
      <td width="147" rowspan="3" bgcolor="#FF6600">
        
        <div align="center">
          <input name="submit" type="submit" value="Eintragen!"
          font-family:Verdana, Arial, Helvetica, sans-serif;font-weight:bold;font-size: 30px;">

        </div></td>
    </tr>
    <tr bgcolor="#999999">
      <td width="126" height="42"><span class="style5">Brücke 1:&nbsp;</span></td>
      <td width="144"><span class="style5">
        <input type="text" name="wb1" />
      </span></td>
      <td class="style5">Fahrt-Nr.:&nbsp;</td>
      <td><input name="fahrtnr" type="text" /></td>
    </tr>
    <tr bgcolor="#999999">
      <td height="42"><span class="style5">Brücke 2:</span></td>
      <td><input name="wb2" type="text" /></td>
      <td colspan="2">&nbsp;</td>
    </tr>
  </table>
</form>
<hr>
</body>
</html>


<table>
<table width="700" height="100" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF" bgcolor="#999999">
<tr><th><span class="style5">#</th><th><span class="style5">Kennzeichen</th><th><span class="style5">Frachtf&uuml;hrer</th><th><span class="style5">Fahrten-Nr</th><th><span class="style5">Br&uuml;cke 1</th><th><span class="style5">Br&uuml;cke 2</th><th><span class="style5">Datum/Uhrzeit</th><th><a href='yard.php?del=$ID'Loeschen<a/></th></tr>
<?php

try {
    $db = new MySQLi('localhost', 'danex', 'aischane', 'yard');
    $sql = 'SELECT * FROM yard';
    $kommando = $db->prepare($sql);
    $kommando->execute();
    
    $kommando->bind_result($id, $kfz, $frachtfr, $fahrtnr, $wb1, $wb2, $time);
    
    while ($kommando->fetch()) {
      printf('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>',
        $id, htmlspecialchars($kfz), htmlspecialchars($frachtfr), htmlspecialchars($fahrtnr), $wb1, $wb2, $time);
  }
   
    $db->close();
  } catch (Exception $e) {
    echo 'Fehler: ' . htmlspecialchars($e->getMessage());
  }

?>
</table>
 
Füge einfach eine Spalte ID hinzu, welche die Eigenschaft auto_increment hat und als Primärschlüssel fungiert. Diese Spalte sollte eigentlich bei all deinen Tabellen existieren. Dann kannst du diesen Datensatz wie folgt löschen:
Code:
DELETE FROM `yard` WHERE `id` = ?
An die Stelle von ? muss natürlich die ID des zu löschenden Datensatzes eingesetzt werden.
 
Hi,

die Spalte id habe ich schon. Meine Tabelle stellt vor jedem Eintrag die ID davor und zählt sie automatisch aufwärts. Ich möchte quasi das bei jedem neuen Eintrag in die Tabelle, dass automatisch ein button "Löschen" am Ende der Zeile dargestellt wird und diesen Datensatz auch löscht
 
Ich drücks mal vorsichtig aus: Automatisch geht mal gar nix ;-) Selbst einen Automatismus muss man mal programmieren.

So nun zu deinem Problem. Erst mal etwas Theorie:

Ein Button sendet eine Anfrage an den Server auf dem ein Script ausgeführt werden soll. Dieser Button kann ein Form-Button oder ein Link sein auf dem bspw. Löschen steht. Nehmen wir an, es ist ein Link, das macht es etwas einfacher. Der Link lautet also bspw.

http://www.meinedomain.de/script.php?loeschen=1

Dann hättest du also ein PHP-Script auf dem Server mit dem Namen script.php. In diesem Script fragst du den übergebenen Parameter "loeschen" ab:

PHP:
if( isset($_GET['loeschen']) )    // _GET weil, es ein Parameter an einem Link ist und dieser mit der GET-Methode übertragen wird
{
  try
  {
      $db = new MySQLi('localhost', 'danex', 'aischane', 'yard'); 
      $stmt = $db->prepare( "DELETE FROM yard WHERE id = ?" );
      $stmt->bindParam('i', $_GET['loeschen']);
   }
   catch(Exception $e)
   {
      echo $e->getMessage();
   }
}

/** Weiter unten dann der Aufbau deiner Tabelle mit den Einträgen **/

Die Tabelle muss dann natürlich noch um eine weitere Spalte für den Link erweitert werden. Außerdem musst du die ID in einem <a href.... einbauen.
 
ok soweit verstanden. Nur am Umsetzten hakt es =) Ich habe ja eine Mysql Ausgabe, dargestellt in eine Tabelle. Wie genau bau ich den Button oder Link da noch mit ein?
Genau daran scheiter ich die ganze Zeit : "Die Tabelle muss dann natürlich noch um eine weitere Spalte für den Link erweitert werden. Außerdem musst du die ID in einem <a href.... einbauen. "

Tabelle hab ich erweitert, nur es steht nix drin..
 
Du musst lediglich diese eine Zeile anpassen, da an dieser Stelle die Zeile ausgegeben wird:
PHP:
    while ($kommando->fetch()) { 
      printf('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>', 
        $id, htmlspecialchars($kfz), htmlspecialchars($frachtfr), htmlspecialchars($fahrtnr), $wb1, $wb2, $time); 
  }
Das könnte dann zum Beispiel so aussehen:
PHP:
    while ($kommando->fetch()) { 
      printf('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td><a href="?loeschen=%d">loeschen</a></td></tr>', 
        $id, htmlspecialchars($kfz), htmlspecialchars($frachtfr), htmlspecialchars($fahrtnr), $wb1, $wb2, $time, $id); 
  }
 
Hi,

hat super geklappt. Die Tabelle gibt mir jetzt noch eine Spalte mit dem Link löschen aus. Nur ein Problem hab ich noch.. Wenn ich auf den Link lösche klicke bekomme ich folgende MySql-Fehlermeldung :
Fatal error: Call to undefined method mysqli_stmt::bindParam() in C:\Daniel\php\xampp\htdocs\yard.php on line 109

Im php Code steht folgendes in Zeile 109:

PHP:
$stmt->bindParam('i', $_GET['loeschen']);
 
Das bedeutet, dass es die Methode bindParam() im Objekt $stmt nicht gibt.

Für eine genauere Hilfe, wäre es interessant zu wissen, was $stmt genau ist, sprich um welche Klasse(n) es sich dabei handelt.

Falls du damit überfragt bist, poste einfach mal die Zeile, in welcher $stmt initialisiert wird, sprich wo $stmt = ... steht. ;)
 
ich hab den code von ein paar post vorher kopiert..

PHP:
<?php
if( isset($_GET['loeschen']) )    // _GET weil, es ein Parameter an einem Link ist und dieser mit der GET-Methode übertragen wird
{
  try
  {
      $db = new MySQLi('localhost', 'danex', 'aischane', 'yard'); 
      $stmt = $db->prepare( "DELETE FROM yard WHERE id = ?" );
      $stmt->bindParam('i', $_GET['loeschen']);
   }
   catch(Exception $e)
   {
      echo $e->getMessage();
   }
}
?>
 

Neue Beiträge

Zurück