Hallo liebes Forum,
Ich habe zwei Tabellen mit den Feldinhalten: "tisch". Die erste Tabelle liefert die Information welche Datensätze (Datum, Uhrzeit ... und den Inhalt: tisch) in der zweiten Tabelle bearbeitet werden sollen. Für jeden Datensatz mit Übereinstimmung im Feld: tisch, soll in der zweiten Tabelle der Datensatz gelöscht werden.
Meine Vermutung ist, dass während der Bearbeitung in einer While-Schleife nicht unmittelbar gelöscht werden kann. Vielleicht ist der Datensatz gesperrt und erst nach dem Durchlauf der Schleife wieder frei?
Noch eine Information. Das von mir eingebaute ERROR-Handling führt zu einer Warn-Fehlermeldung, die ohne ERROR-Handling nicht erscheint. Der Fehler-Code hinter dem Error-Text ist leer.
Warning: mysqli::query() expects parameter 1 to be string, object given in C:\xampp\htdocs\restaurant\reservierungen_laufkundschaft\verwalten\zwireservierungen_einzeln_loeschen.php on line 75
Fehler bei Löschen
Hier mein Programm-Code:
<html>
<?php
header('Content-Type: text/html; charset=utf-8');
?>
<body>
<link rel="stylesheet" type="text/css" href="formatierung.css">
<script type="text/javascript">
</script>
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
/* öffnen Datenbank, später im Gesamtablauf wieder löschen */
$con = mysqli_connect('localhost', 'root', '');
if (!$con) {
die('Verbindung schlug fehl: ' . mysqli_error());
}
echo 'Erfolgreich verbunden';
echo "<br />";
/* benutze Datenbank restaurant */
$con_selected = mysqli_select_db($con, 'restaurant');
if (!$con_selected) {
die ('Kann restaurant nicht benutzen : ' . mysqli_error());
}
/* Öffnen Befehle (oben) loeschen und den INCLUDE aktivieren */
//INCLUDE "oeffnen_datenbank.php";
$rttisch = 0;
$zwtisch = 0;
/* lesen alle bereits vorhandenen Daten: Tab: restische */
$sql7 = mysqli_query($con, "select * from restische");
/* Anzahl Tische ermitteln und Reservierungen ausgeben */
$num7 = mysqli_num_rows($sql7);
/* Datensätze aus Ergebnis ermitteln, */
/* in Array speichern und ausgeben */
while ($dsatz = mysqli_fetch_assoc($sql7))
{
if ($num7>0)
{
echo "restische: " . $dsatz['rt_tisch'];
echo "<br />";
$rttisch = $dsatz['rt_tisch'];
/* reservierte Tische müssen aus der Tab: zwischenspeicher gelöscht werden, falls gesuchte Tisch-Nr vorhanden */
//$sql8 = mysqli_query($con, "select * from zwischenspeicher WHERE zw_tisch = $rttisch");
$sql8 = mysqli_query($con, "select * from zwischenspeicher");
$num8 = mysqli_num_rows($sql8);
echo "Anzahl Zeilen: " . $num8;
echo "<br />";
while ($dsatz = mysqli_fetch_assoc($sql8))
{
$zwtisch = $dsatz['zw_tisch'];
echo "zw_tisch " . $dsatz['zw_tisch'] . " rt_tisch " . $rttisch;
echo "<br />";
if ($zwtisch == $rttisch)
{
$num8 = "DELETE FROM zwischenspeicher";
if ($con->query($sql8) === TRUE)
{
echo "Datensatz erfolgreich gelöscht";
}
else
{
echo "Fehler bei Löschen " . $con->error;
echo "<br />";
}
//$num8 = mysqli_query($con, "DELETE FROM zwischenspeicher WHERE $dsatz['zw_tisch'] == $rttisch");
//$num8 = "DELETE FROM zwischenspeicher WHERE zw_tisch == $rttisch";
echo "Zwischenspeicher wurde gelöscht";
echo "<br />";
}
}
}
}
?>
</body>
</html>
Alles anzeigen
Wie man unterhalb des DELETE Befehls sieht, habe ich zwei andere Varianten des DELETE versucht, auch ohne Erfolg.
Ich bin mir gar nicht sicher, ob dieser Lösungsansatz der richtige Weg ist, vielleicht verkompliziere ich ja das Problem? Für eine Anregung bin ich dankbar.
Danke für Eure freundliche Unterstützung.