Duplicate Entry
Weet iemand hoe ik dat weg kan halen?
Dan wil je een waarde invoeren in een kolom die er al in staat en de eigenschap UNIQUE heeeft.
Nee, ik wil niks invoeren, ik wil iets uithalen dat is al ingevoerd, maar geeneen heeft de eigenschap unique
Wellicht is het een bug van MySQL, Google geeft een heel aantal resultaten die leiden naar het bug-overzicht van MySQL.
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
29
30
31
32
33
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
29
30
31
32
33
--
-- Tabel structuur voor tabel `leden`
--
CREATE TABLE `leden` (
`id` smallint(3) NOT NULL auto_increment,
`gebruikersnaam` varchar(50) NOT NULL default '',
`wachtwoord` varchar(255) NOT NULL default '',
`naam` varchar(50) NOT NULL default '',
`foto` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`woonplaats` varchar(50) NOT NULL default '',
`provincie` varchar(50) NOT NULL default '',
`gb_dag` varchar(50) NOT NULL default '',
`gb_maand` varchar(50) NOT NULL default '',
`gb_jaar` varchar(50) NOT NULL default '',
`geslacht` varchar(50) NOT NULL default '',
`msn` varchar(50) NOT NULL default '',
`website` varchar(50) NOT NULL default '',
`status` varchar(50) NOT NULL default '',
`datum_1` varchar(50) NOT NULL default '',
`datum_2` varchar(50) NOT NULL default '',
`datum_3` varchar(50) NOT NULL default '',
`datum_4` varchar(50) NOT NULL default '',
`html` longtext NOT NULL,
`ip` varchar(255) NOT NULL default '',
`datum_5` varchar(255) NOT NULL default '',
`bezoekers` mediumint(9) NOT NULL default '0',
`bevestigen` varchar(150) NOT NULL default '0',
`activatiecode` varchar(250) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `gebruikersnaam` (`gebruikersnaam`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
-- Tabel structuur voor tabel `leden`
--
CREATE TABLE `leden` (
`id` smallint(3) NOT NULL auto_increment,
`gebruikersnaam` varchar(50) NOT NULL default '',
`wachtwoord` varchar(255) NOT NULL default '',
`naam` varchar(50) NOT NULL default '',
`foto` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`woonplaats` varchar(50) NOT NULL default '',
`provincie` varchar(50) NOT NULL default '',
`gb_dag` varchar(50) NOT NULL default '',
`gb_maand` varchar(50) NOT NULL default '',
`gb_jaar` varchar(50) NOT NULL default '',
`geslacht` varchar(50) NOT NULL default '',
`msn` varchar(50) NOT NULL default '',
`website` varchar(50) NOT NULL default '',
`status` varchar(50) NOT NULL default '',
`datum_1` varchar(50) NOT NULL default '',
`datum_2` varchar(50) NOT NULL default '',
`datum_3` varchar(50) NOT NULL default '',
`datum_4` varchar(50) NOT NULL default '',
`html` longtext NOT NULL,
`ip` varchar(255) NOT NULL default '',
`datum_5` varchar(255) NOT NULL default '',
`bezoekers` mediumint(9) NOT NULL default '0',
`bevestigen` varchar(150) NOT NULL default '0',
`activatiecode` varchar(250) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `gebruikersnaam` (`gebruikersnaam`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Nee, ik heb niet in een handleiding gekeken om deze probleem op te lossen, ik zal ff kijken op google/
Geslacht => man of vrouw, dat lijkt me een ENUM en geen VARCHAR
Verder is het aan te raden om te gaan normaliseren (zie tutorials) om zo een goed datamodel te krijgen. provincie smeekt om een aparte tabel, je gaat tenslotte niet 43753x Noord-Holland opslaan. Noord-Holland sla je 1x op en vervolgens leg je 43753x een verband met de tabel provincies naar het record waar Noord-Holland in staat. Een foreignkey!
Ik heb mijn probleem gevonden:
Laatst Bewerkt:
Als het niet bewerkt is krijg ik deze duplicate entry.
Nu heb ik een andere vraag, hoe moet ik Laatst Bewerkt leeg laten als het niet is bewerkt.
Maar voordat je verder gaat, ga eerst het datamodel aanpassen. Daar zitten nu grote tot zeer grote problemen in. Wanneer je dat later gaat aanpassen, dan kun je weer helemaal opnieuw beginne. Het datamodel is de basis van je systeem.
Edit: Zie http://www.phphulp.nl/php/tutorials/3/150/
Gewijzigd op 01/01/1970 01:00:00 door Frank -
En ik heb nogsteeds die duplicate entry, zou het goedkomen met else?
Quote:
Nee. 'duplicate entry' is een melding van de database en een else gebruik je (in dit geval) in de php-code. Er valt dus niets te else-en.En ik heb nogsteeds die duplicate entry, zou het goedkomen met else?
Op welke query krijg je deze foutmelding? Wanneer je iets wilt toevoegen aan de database? Je hebt een UNIQUE in genoemde tabel staan, wanneer een waarde dan niet uniek is, krijg je deze foutmelding. En dat werkt uitstekend!
Op een DELETE query kun je deze foutmelding niet krijgen, dus ik vermoed dat je per ongeluk een UPDATE query doet.
Nee hij wilt Laatst Bewerkt: uit de database halen, maar als die pagina niet bewerkt is dan kan die er ook niks uit halen en dan krijg ik een dublicate entry
Ga ook de includes na daarvoor!
Mocht het er dan nog staan, dan heb je het óf gewoon in een echo staan, of als waarde in je tabel. Maar lijkt me niet erg logisch :P
Erkan schreef op 25.12.2006 03:25:
Nee hij wilt Laatst Bewerkt: uit de database halen, maar als die pagina niet bewerkt is dan kan die er ook niks uit halen en dan krijg ik een dublicate entry
Dan kan je tocch gewoon checken of ie bewerkt is?
View icm goup by
Maar dan moet je dus wel views gebruiken. Maar dat betwijfel ik, ookal kan het uiteraard wel...
Code (php)
1
2
3
4
5
6
2
3
4
5
6
CREATE TABLE `leden` (
`datum_1` varchar(50) NOT NULL default '',
`datum_2` varchar(50) NOT NULL default '',
`datum_3` varchar(50) NOT NULL default '',
`datum_4` varchar(50) NOT NULL default '',
) TYPE=MyISAM AUTO_INCREMENT=1 ;
`datum_1` varchar(50) NOT NULL default '',
`datum_2` varchar(50) NOT NULL default '',
`datum_3` varchar(50) NOT NULL default '',
`datum_4` varchar(50) NOT NULL default '',
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Zo?
Maar DATETIME is wel het goede format, ookal zal DEFAULT '' niet werken denk ik...
Het moet niet datatime zijn, maar datetime. En vier datums in 1 tabel wijst op een verkeerd datamodel (Hé, dat rijmt!).
Ik heb het nu staan als DATETIME, maar hoe moet ik alles naar de oude datum toepassen, nu staat alles op 00-00-0000 00:00