Hi
zuerst, ich weiß nicht wirklich obs ein mysql oder php problem ist, also bitte verschieben falls ich hier falsch bin
ausserdem entschuldige ich mich schonmal im vorraus für grausamen code, bin noch recht frisch in der materie ;)
ich habe zwei tabellen
catsort und cat
in cat werden kategorien genauer definiert
in catsort werden diese sortiert
die tabelle catsort hat dafür zwei spalten, top und sub
ist top = 0, ist sub quasi eine kategorie ganz oben
danach ist dann top = 1 und sub = 2
usw.
so erhalte meine sortierung
nun möchte ich eventuell eine kategorie löschen, kein problem ich muss also in cat die zeile löschen wo die kategorie definiert ist, also delete where id = wert
in catsort muss ich dann die zeile löschen wo sub = wert
auch kein problem
jetzt kann es ja aber sein das diese kategorie unterkategorien hat
die müssen natürlich auch gelöscht werden
wär so kein problem, müsste einfach die zeilen löschen wo top = wert
allerdings wüsste ich dann nicht was ich in der tabelle cat löschen soll
dafür ist also die erste sql-abfrage
sie liest die eventuellen unterkategorien aus und die werden dann gelöscht
ich hoffe der rest lässt sich so selbst erklären
nur funktioniert das nicht,
bzw. es funktioniert schon
die jeweiligen kategorien werden gelöscht, in beiden tabellen
mein problem ist: es werden noch weitere zeilen in den tabellen gelöscht
zum beispiel immer die zeilen in catsort wo top = 0
ich hab die werte schon geprüft
sie sind korrekt
ich hab schon geprüft wieviele zeilen nach einem delete betroffen sind, immer nur soviele wie zeilen gelöscht werden sollen
ich hab mir die sql-querys ausgebenlassen, stimmen auch
ich weiss einfach nicht wieso die anderen zeilen gelöscht werden?
vielen dank :)
dars
PHP-Code:
case "delete":
$sql = "SELECT
sub
FROM
products_catsort
WHERE
top = '".$_POST['id']."'
;";
$var = new Query($sql);
if($var->error()) {
die("<pre>".$var->getError()."</pre>n");
}
while($delxid = $var->fetch()) {
$sql1 = "DELETE FROM
products_cat
WHERE
cat_id = ".$delxid['sub']."
;";
mysql_query($sql1) OR die(mysql_error());
}
$var->free();
unset($var);
$sql2 = "DELETE FROM
products_cat
WHERE
cat_id = '".$delid."'
;";
mysql_query($sql2) OR die(mysql_error());
$sql3 = "DELETE FROM
products_catsort
WHERE
sub = '".$delid."'
;";
mysql_query($sql3) OR die(mysql_error());
$sql4 = "DELETE FROM
products_catsort
WHERE
top = '".$delid."'
;";
mysql_query($sql4) OR die(mysql_error());
echo "Kategorie gelöscht!n";
break;