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?
<?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>";
}
?>
mischien niet:
$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());
<?php
$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??
'Sub_11200' ? Dat is wel een hele vreemde naam voor een tabel. Geen idee wat er in staat, maar 999999 van de 1000000 keer is een genummerde tabel- en/of kolomnaam een aanwijzing voor een fout datamodel.
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.
<?php
$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.