Delete functie in 2 tabellen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Nanno

Nanno

16/08/2007 21:30:00
Quote Anchor link
Luitjes,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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']."&nbsp;".$row['Omschrijving']."<br />";
}

echo "<input type='submit' value='verzenden'/></form>";
}


?>


Groet,

Nanno
Gewijzigd op 01/01/1970 01:00:00 door Nanno
 
PHP hulp

PHP hulp

22/12/2024 18:49:15
 
Nanno

Nanno

16/08/2007 22:08:00
Quote Anchor link
Wie kan me alsjeblieft even helpen??
 
Erwin

Erwin

16/08/2007 22:10:00
Quote Anchor link
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());

???

Erwin
Gewijzigd op 01/01/1970 01:00:00 door Erwin
 
Nanno

Nanno

16/08/2007 22:20:00
Quote Anchor link
Dat was hem..!!

Bedankt Erwin
 
Klaasjan Boven

Klaasjan Boven

16/08/2007 22:24:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?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??
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
 
Frank -

Frank -

16/08/2007 23:08:00
Quote Anchor link
'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.
 
Nanno

Nanno

16/08/2007 23:27:00
Quote Anchor link
Heren,

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
 
Nanno

Nanno

16/08/2007 23:29:00
Quote Anchor link
Klaasjan Boven schreef op 16.08.2007 22:24:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?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.
 
Erwin

Erwin

17/08/2007 00:28:00
Quote Anchor link
"Ik kreeg geen foutmelding,"

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.