login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Het aansluitende verwijderen (Opgelost)

Offline BigBug - 06/05/2007 08:37
Avatar van BigBugPHP expert
  1. CREATE TABLE `categorieen` (
  2. `id` INT NOT NULL AUTO_INCREMENT ,
  3. `naam` VARCHAR( 255 ) NOT NULL ,
  4. `beschrijving` TEXT NOT NULL ,
  5. PRIMARY KEY ( `id` )
  6. ) TYPE = MYISAM ;
  7.  
  8. CREATE TABLE `subcategorieen` (
  9. `id` INT NOT NULL AUTO_INCREMENT ,
  10. `categorie` INT NOT NULL ,
  11. `naam` VARCHAR( 255 ) NOT NULL ,
  12. `beschrijving` TEXT NOT NULL ,
  13. PRIMARY KEY ( `id` )
  14. ) TYPE = MYISAM ;
  15.  
  16. CREATE TABLE `artikelen` (
  17. `id` INT NOT NULL AUTO_INCREMENT ,
  18. `naam` VARCHAR( 255 ) NOT NULL ,
  19. `foto` VARCHAR( 255 ) NOT NULL ,
  20. `beschrijving` TEXT NOT NULL ,
  21. `prijs` VARCHAR( 255 ) NOT NULL ,
  22. `voorraad` VARCHAR( 255 ) NOT NULL ,
  23. PRIMARY KEY ( `id` )
  24. ) TYPE = MYISAM ;


Hier staan drie MySQL tables die worden gebruikt bij mijn webshop. Als ik een categorie verwijder, wil ik ook dat alle subcategorieën en downloads die aan die categorie grenzen worden verwijderd (anders wordt het zo'n zooi in je db). Maar de moeilijkheid zit em bij de downloads verwijderen.

Stel:
Categorie: Auto's
Subcategorieën: Banden, Spiegels, Motorblokken
Er staan dan een aantal downloads in banden, spiegels en motorblokken. In de downloads staat het nummer van de subcategorie waar ze bijhoren, zodat elke download in de juiste subcategorie staat. Hoe kan ik ervoor zorgen dat als ik de categorie Auto's verwijder, dat banden, spiegels, motorblokken & alle downloads worden verwijderd?

Alvast bedankt 

9 antwoorden

Gesponsorde links
Offline JBke - 06/05/2007 08:40 (laatste wijziging 06/05/2007 08:41)
Avatar van JBke PHP gevorderde Jij bent er ook vroeg bij, ga me even opfrissen en zal eens een kijkje nemen, kan je niet iets meer code geven voor een inzicht in je script??

nog een vraag: mogen alle subcats weg of moet er een check in om te zien of bvb een subcat nog voor andere categorieen gebruikt worden??

[offtopic]Raar vraag me steeds af hoe je aan statussen als PHP ver gevorderde of PHP expert komt??[/optopic]

tot zo.
Offline BigBug - 06/05/2007 08:47 (laatste wijziging 06/05/2007 08:52)
Avatar van BigBug PHP expert Ik weet ook niet precies, maar ik kan wel redelijk overweg met PHP. Ik weet eventueel ook wel een oplossing maar ik vraag me af of dat een goede is 

Meer code kan ik je wel geven, maar ik denk niet dat dat nuttig is.

En over die subcategorieen; 1 subcategorie kan maar bij 1 categorie horen. Bij 1 categorie kunnen meerdere subcategorieën horen.

Zoals je in subcategorieen kan zien (de SQL-table) staat daar categorie. Een categorie heeft bijvoorbeeld id 1. Er zijn bijvoorbeeld 3 subcategoriën en die bevatten dus allemaal bij categorie (sql-table) een 1. Omdat die bepaalde categorie id 1 heeft.

Hetzelfde geldt voor de downloads.
Ik ben er nog tot 10 over 9. Daarna ben ik +/- 1.5 uur weg en daarna ben ik er weer 

Ik hoop dat je er nog wat van snapt.

Edit: http://pastebin.be/1465
Hier staat de categorie-verwijderen pagina. Onderaan moeten dus nog meer query's komen die alles wat aangrenzend is weggooien.
Offline CDNC - 06/05/2007 08:58 (laatste wijziging 06/05/2007 08:58)
Avatar van CDNC PHP ver gevorderde zijn artikalen de downloads?

zoja, (en anders gewoon die andere tbl aanpassen)
verander je tabbel een beetje, je noemt de categorie-aanduider cid (=categorie id), je subcategorie noemt je dan sid. om ook je download gemakkelijk te kunnen verwijderen geeft je daar ook weer cid en sid aan.

als je dan het CID 2 wil verwijderen,
DELETE FRM cats, subcats, downloads WHERE cid = 2 (of $_GET varretje ofzo)
ik veronderstel dat die delete wel zal gaan, en als het niet in 1 kan, maak je er 3 query's van


EDIT: en k had de error weer.... gelukkig had k het al ge-copy't
Offline BigBug - 06/05/2007 08:59
Avatar van BigBug PHP expert @CDNC,

Dat had ik dus ook in gedachte 
Bedankt.

Zijn en trouwens nog andere oplossingen? Want dit is ook de enige oplossing die ik kon verzinnen:)
Offline JBke - 06/05/2007 09:06
Avatar van JBke PHP gevorderde Wilde net dezelfde oplossing voorstellen probeer het eens, dju te laat he hehe,
ik zoek nog even verder.
Offline citroen - 06/05/2007 11:14
Avatar van citroen Onbekend http://dev.mysq...aints.html

Relaties tussen tabellen kunnen enkel als het type table ( INNODB ) is.
Offline ikkedikke - 06/05/2007 11:16
Avatar van ikkedikke PHP expert Ik mag geen delete from meer typen dus leg ik het maar even uit:
Verwijder alles van subcategorieën waar (tel aantal categorieën met id dat gelijk is aan huidige subcat.catID) gelijk is aan nul.
verwijder alles van artikelen waar (tel aantal subcategorieën met id dat gelijk is aan huidige artikel.subcatID) gelijk is aan nul.
Offline citroen - 06/05/2007 11:36
Avatar van citroen Onbekend der bestaat zoiets als relaties in MySQL. als de relaties correct liggen en een bovenstaande record wordt verwijderd dan zal MySQL automatisch alle afhankelijke records verwijderen. Daar hoef je via php niets aan te doen.
Offline BigBug - 06/05/2007 12:36
Avatar van BigBug PHP expert @citroen, interresant artikel, zal het eens doorlezen 

Ik heb het inmiddels opgelost met de eerste manier die werdt gegeven (is ook de snelste )
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.394s