Delete functie in 2 tabellen
Wie kan me even helpen?
Onderstaand een script waarmee ik mijn artikelen uit de database wil verwijderen.
Nu heb ik alleen 2 tabellen (Sub_11200 en Artikelen) waarin hetzelfde artikel verwijderd moet worden.
Wie kan me vertellen wat er fout staat in dit script?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
$id = $_POST['Art_nr'];
if(!empty($id)){
$delete = implode(",",$id);
$delete = explode(",",$delete);
for($a = 0; !empty($delete[$a]);$a++){
$sql = "DELETE FROM Sub_11200 AND Artikelen WHERE `Art_nr` = '".$delete[$a]."'";
$sql = "DELETE FROM Artikelen WHERE `Art_nr` = '".$delete[$a]."'";
$out = mysql_query($sql);
echo "Artikel ".$delete[$a]." is verwijderd<br />";
}
}else{
echo "Niets te verwijderen";
}
}else{
$sql = "SELECT * FROM Sub_11200 ORDER BY Art_nr ";
$query = mysql_query($sql);
echo "<form action='Del_11200.php' method='post'>";
$b = 0;
while($row = mysql_fetch_assoc($query)){
$b = $b + 1;
echo "<input type='checkbox' name='Art_nr[$b]' value='".$row['Art_nr']."'/>".$row['Art_nr']." ".$row['Omschrijving']."<br />";
}
echo "<input type='submit' value='verzenden'/></form>";
}
?>
if($_SERVER['REQUEST_METHOD'] == "POST"){
$id = $_POST['Art_nr'];
if(!empty($id)){
$delete = implode(",",$id);
$delete = explode(",",$delete);
for($a = 0; !empty($delete[$a]);$a++){
$sql = "DELETE FROM Sub_11200 AND Artikelen WHERE `Art_nr` = '".$delete[$a]."'";
$sql = "DELETE FROM Artikelen WHERE `Art_nr` = '".$delete[$a]."'";
$out = mysql_query($sql);
echo "Artikel ".$delete[$a]." is verwijderd<br />";
}
}else{
echo "Niets te verwijderen";
}
}else{
$sql = "SELECT * FROM Sub_11200 ORDER BY Art_nr ";
$query = mysql_query($sql);
echo "<form action='Del_11200.php' method='post'>";
$b = 0;
while($row = mysql_fetch_assoc($query)){
$b = $b + 1;
echo "<input type='checkbox' name='Art_nr[$b]' value='".$row['Art_nr']."'/>".$row['Art_nr']." ".$row['Omschrijving']."<br />";
}
echo "<input type='submit' value='verzenden'/></form>";
}
?>
Groet,
Nanno
Gewijzigd op 01/01/1970 01:00:00 door Nanno
Wie kan me alsjeblieft even helpen??
$sql = "DELETE FROM Sub_11200 AND Artikelen WHERE `Art_nr` = '".$delete[$a]."'";
$sql = "DELETE FROM Artikelen WHERE `Art_nr` = '".$delete[$a]."'";
$out = mysql_query($sql);
maar
$sql = "DELETE FROM Sub_11200 WHERE `Art_nr` = '".$delete[$a]."'";
$sql2 = "DELETE FROM Artikelen WHERE `Art_nr` = '".$delete[$a]."'";
$out = mysql_query($sql) or die(mysql_error());
$out2 = mysql_query($sql2) or die(mysql_error());
???
Erwin
Gewijzigd op 01/01/1970 01:00:00 door Erwin
Bedankt Erwin
Code (php)
1
2
3
4
2
3
4
<?php
$sql = "DELETE FROM Sub_11200, Artikelen WHERE `Art_nr` = '".$delete[$a]."'LIMIT 1";
?>
$sql = "DELETE FROM Sub_11200, Artikelen WHERE `Art_nr` = '".$delete[$a]."'LIMIT 1";
?>
moet ook prima gaan gebruik bij een del altijd een LIMIT
Mischien krijg je op bovenstaande wel de melding
Art_nr ambysiously defined ofso iets. Waarom staat Art_nr eigenlijk in TWEE tabellen??
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
Kijk nog eens goed of je deze slechte naam wel wilt gebruiken en of het datamodel wel echt goed in elkaar zit.
Je wilt niet weten wat voor problemen je kunt krijgen met een fout datamodel...
Ps. Als je de foreignkey's goed hebt ingesteld, heb je dit soort dubbele delete-queries niet nodig! Verwijder het artikel en alles wat daarin is gekoppeld, wordt (afhankelijk van de instellingen) ook verwijderd.
Ik ben een nerd in PHP.
Ik heb een artikelbestand van bijna 400 artikelen in 40 artikel groepen.
Dus dan ga je het ook zo indelen lijkt mij.
Sub_11200 werkt prima zoals ik het nu voor elkaar heb.
Tevens heb ik een backup gemaakt in de tabel Artikelen.
Deze wordt gelijk gebruikt voor het overzicht van de totale lijst.
Vandaar dat ik het 2x moet verwijderen. In de hoofdgroep Artikelen en de subgroep 11200.
En ik weet zeker dat een php expert totaal anders te werk had gegaan.
Maar ja, die heb ik niet zomaar tot mijn beschikking blijkt.
Groet,
Nanno
Klaasjan Boven schreef op 16.08.2007 22:24:
moet ook prima gaan gebruik bij een del altijd een LIMIT
Mischien krijg je op bovenstaande wel de melding
Art_nr ambysiously defined ofso iets. Waarom staat Art_nr eigenlijk in TWEE tabellen??
Code (php)
1
2
3
4
2
3
4
<?php
$sql = "DELETE FROM Sub_11200, Artikelen WHERE `Art_nr` = '".$delete[$a]."'LIMIT 1";
?>
$sql = "DELETE FROM Sub_11200, Artikelen WHERE `Art_nr` = '".$delete[$a]."'LIMIT 1";
?>
moet ook prima gaan gebruik bij een del altijd een LIMIT
Mischien krijg je op bovenstaande wel de melding
Art_nr ambysiously defined ofso iets. Waarom staat Art_nr eigenlijk in TWEE tabellen??
Dit had ik geprobeert maar functioneerde niet in het script.
Ik kreeg geen foutmelding, maar hij verwijderde ook niets.
dit komt omdat je geen foutafhandeling gebruikte:
$out = mysql_query($sql) or die(mysql_error());
die or die(mysql_error()); zorgt ervoor, dat als de query niet is gelukt dat ie dan de foutmelding geeft
Gewijzigd op 01/01/1970 01:00:00 door Erwin