login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Deleten uit 2 tabellen ineens

Offline juser100 - 08/11/2007 11:09
Avatar van juser100MySQL interesse Ik ben bezig met een fotoscriptje op te zetten. Nu heb ik daarvoor 2 tabellen aangemaakt; 1 voor de fotogroepen, 1 voor de foto's.

Nu werkt dit allemaal wel naar behoren, alleen als ik de fotogroep verwijder worden de foto's die ook tot deze groep behoren niet verwijderd uit de database.

SQL:
  1. --
  2. -- Tabel structuur voor tabel `foto`
  3. --
  4.  
  5. CREATE TABLE `foto` (
  6. `FotoID` int(11) NOT NULL AUTO_INCREMENT,
  7. `Fotogroep` varchar(50) DEFAULT NULL,
  8. `Titel` varchar(200) NOT NULL DEFAULT '',
  9. `Foto` varchar(200) NOT NULL DEFAULT '',
  10. `Datum` date NOT NULL DEFAULT '0000-00-00',
  11. `Omschrijving` varchar(200) NOT NULL DEFAULT '',
  12. UNIQUE KEY `FotoID` (`FotoID`)
  13. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
  14.  
  15. --
  16. -- Gegevens worden uitgevoerd voor tabel `foto`
  17. --
  18.  
  19. INSERT INTO `foto` VALUES (1, 'Test', 'Test', 'a', '0000-00-00', 'Testomschrijving');
  20. INSERT INTO `foto` VALUES (2, 'Test2', 'Test2', 'a2', '0000-00-00', 'Testomschrijving2');
  21.  
  22. -- --------------------------------------------------------
  23.  
  24. --
  25. -- Tabel structuur voor tabel `fotogroep`
  26. --
  27.  
  28. CREATE TABLE `fotogroep` (
  29. `FotogroepID` int(11) NOT NULL AUTO_INCREMENT,
  30. `Fotogroep` varchar(50) DEFAULT NULL,
  31. UNIQUE KEY `FotogroepID` (`FotogroepID`)
  32. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
  33.  
  34. --
  35. -- Gegevens worden uitgevoerd voor tabel `fotogroep`
  36. --
  37.  
  38. INSERT INTO `fotogroep` VALUES (3, 'Test');


En de code voor het verwijderen van de groep/foto's uit de database:
  1. $sql = mysql_query("SELECT * FROM foto WHERE Fotogroep='".$Fotogroep."'");
  2. WHILE ($rij = mysql_fetch_array($sql))
  3.  
  4. unlink('$rij[3]');
  5. $result=mysql_query("DELETE FROM foto WHERE Fotogroep='".$Fotogroep."'");
  6.  
  7. $result=mysql_query("DELETE FROM fotogroep WHERE FotogroepID='".$FotogroepID."'");
  8.  
  9. ECHO"<META HTTP-EQUIV=\"refresh\" CONTENT=\"0; URL=foto.php\">";

6 antwoorden

Gesponsorde links
Offline StreetAngel - 08/11/2007 11:30
Avatar van StreetAngel Nieuw lid Als ik dit stukje code zo zie zou ik zeggen dat over de FotogroepID het zelfde is, maar je gebruikt er 2 variabelen voor, namelijk $Fotogroep en $FotogroepID

Maak er daar eens 1 van...
Offline juser100 - 08/11/2007 12:08
Avatar van juser100 MySQL interesse Maar in de table van Foto zit toch geen variabele $FotogroepID?
Offline StreetAngel - 08/11/2007 12:51 (laatste wijziging 08/11/2007 12:53)
Avatar van StreetAngel Nieuw lid Zoals ik het lees is $Fotogroep het ID van de groep waarin de foto hoort.
Dus moet je de groep en die foto's onder die groep verwijderen (zoals je zelf al zegt.

Ik hoop dat het zo duidelijk voor je is, want ik weet het ff niet beter uit te leggen.

Nog een tip: gebruik in de tabel foto's het ID van de fotogroep om een foto aan een groep te koppelen, want het ID blijft altijd het zelfde, de naam kan je nog eens veranderen.
Offline juser100 - 08/11/2007 12:59
Avatar van juser100 MySQL interesse Ja dat begrijp ik, maar de delete werkt maar gedeeltelijk..
De groep wordt wel verwijderd maar de foto's, welke in een andere tabel staan niet, deze blijven staan.

Nu is het dus de vraag of die delete goed wordt uitgevoerd, ik krijg geen foutmelding maar hij werkt ook niet, heeft iemand hier eventueel aanpassingen op?
Offline StreetAngel - 08/11/2007 13:26
Avatar van StreetAngel Nieuw lid Ik kan je waarschijnlijk wel helpen, maar dan zal je even een stukje meer code moeten geven.
Offline jvs - 08/11/2007 13:57
Avatar van jvs HTML beginner Je zou dit simpel kunnen oplossen via mysql zelf. Je moet dan van fotogroep een foreign key maken, deze verwijst dan naar de groep (hij legt een soort van link) vervolgens kan je via mysql de actie "ondelete"
op "cascade" zetten zo gaat hij elke keer je een "moeder" rij verwijder de "kinderen" ook weg doen.

Ik weet alleen niet hoe je dit op phpmyadmin moet instelle ik heb dat momenteel niet draaien.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.185s