Ik heb een systeem, dat werkt met een database.
Elke keer als men iets toevoegt, word hier een id aan meegegeven.
Nu heb ik het volgende probleem.
Als er een item word verwijderd, dan stelt hij dit id niet opnieuw weer vrij, maar telt verder.
Dus als nummer 22 word gewist, dan vult hij niet opnieuw nummer 22 maar gaat het Id verder bij 23.
Is er een manier om ervoor te zorgen, dat hij de lege Id's alsnog opvult?
Meer informatie waar men mischien iets aan heeft:
Code:SELECT COUNT( * ) AS `Rijen` , `id` FROM `gegevens` GROUP BY `id` ORDER BY `id` LIMIT 0 , 30
id: int(4), NOT NULL, auto_increment
- [SQL] ID telt verder
-
27-05-2010, 20:23 #1
- Berichten
- 315
- Lid sinds
- 15 Jaar
[SQL] ID telt verder
-
27-05-2010, 20:25 #2
- Berichten
- 337
- Lid sinds
- 18 Jaar
naar mijn inziens kan dit niet. Wat je wel kan doen is zelf een rij gaan bijhouden en daarin gaan tellen.
-
27-05-2010, 20:27 #3
- Berichten
- 465
- Lid sinds
- 18 Jaar
Dat komt door auto increment, maar dat kan geen kwaad..? Dit zorgt dat het automatisch een nieuw id komt bovenop de laatst bestaande. Je kan sowieso handmatig een ID opvullen maar om hier een script voor te schrijven lijkt me niet nodig.
-
27-05-2010, 20:28 #4
- Berichten
- 315
- Lid sinds
- 15 Jaar
En zo ja, welke waarde moet deze dan krijgen?
Aanvullend bericht:
De rede is omdat dit id zichtbaar is, en als er ineens 10 cijfers ontbreken, staat dit best wel raar.Laatst aangepast door Leone H. : 27-05-2010 om 20:31 Reden: Automatisch samengevoegd.
-
27-05-2010, 20:33 #5
- Berichten
- 613
- Lid sinds
- 19 Jaar
Dit komt inderdaad door auto increment. Waarom wil je deze legen records opvullen? Een database kan voldoende records aan, waardoor het niet nodig is om deze op te vullen.
-
27-05-2010, 20:38 #6
- Berichten
- 155
- Lid sinds
- 18 Jaar
DELETE FROM table WHERE id = 11
UPDATE table SET id = id - 1 WHERE id > 11
et voila, als je iets weg gooit wordt het gat automatisch gedicht.
waarom je dit zou willen... ik heb geen idee, elk ID in de rest van je database zal namelijk niet meer kloppen als die hieraan gelinkt is
-
27-05-2010, 20:51 #7
- Berichten
- 315
- Lid sinds
- 15 Jaar
-
27-05-2010, 20:57 #8
- Berichten
- 337
- Lid sinds
- 18 Jaar
Als je het met een extra veld zou willen doen dan kan je bij het toevoegen de max id ophalen uit de database en deze + 1 doen.
-
27-05-2010, 20:59 #9
- Berichten
- 613
- Lid sinds
- 19 Jaar
Dan zou ik zonder auto increment werken of met een extra kolom zoals Erwin de B zegt.
-
27-05-2010, 21:02 #10
- Berichten
- 394
- Lid sinds
- 16 Jaar
-
27-05-2010, 21:05 #11
- Berichten
- 315
- Lid sinds
- 15 Jaar
Dat klopt, alleen heeft dit id geen andere functie dan aan te geven hoeveel er zijn.
En is het dus van groot belang dat de id's telkens 1 omhoog gaan.
Aanvullend bericht:
Ben namelijk nog aan het oefenen met php en sql, dit is in feite mijn eerste script.
Alvast bedankt ;)Laatst aangepast door Leone H. : 27-05-2010 om 21:06 Reden: Automatisch samengevoegd.
-
27-05-2010, 23:52 #12
- Berichten
- 2.971
- Lid sinds
- 18 Jaar
MAX() gebruiken om het hoogste id te gebruiken.
Overigens is ID's recyclen eigenlijk erg slecht.
-
28-05-2010, 21:01 #13
- Berichten
- 315
- Lid sinds
- 15 Jaar
Je ziet het nummer op de site, zo dus
3, Naam, Beschrijving
2, Naam, Beschrijving
1, Naam, Beschrijving
Zo zie je dat op de site, en als je dan zo'n regel wist uit de database dan gaat hij dus van 3 naar 5.
ID's recyclen is slecht. een nieuwe kolom aanmaken is ongebruikelijk.
Hoe doen ze dat dan bij andere site's?
-
28-05-2010, 21:05 #14
- Berichten
- 27
- Lid sinds
- 14 Jaar
Met een while loop.
PHP Code:<?php
$query = mysql_query("Select * From `data`");
$id = 0;
while ( $rij = mysql_fetch_assoc($query) ) {
$id++;
echo $id.'. '.$rij['data'].'<br />';
}
?>
Er komt dan iets uit van:
1. Data deel 1
2. Data deel 2
3. Data deel 3
-
28-05-2010, 21:06 #15
- Berichten
- 2.971
- Lid sinds
- 18 Jaar
Hoe zou ik het dan moeten doen, je ziet bij andere site's toch ook nooit dat er cijfers ontbreken.
Je ziet het nummer op de site, zo dus
3, Naam, Beschrijving
2, Naam, Beschrijving
1, Naam, Beschrijving
Zo zie je dat op de site, en als je dan zo'n regel wist uit de database dan gaat hij dus van 3 naar 5.
ID's recyclen is slecht. een nieuwe kolom aanmaken is ongebruikelijk.
Hoe doen ze dat dan bij andere site's?
Andere sites zullen nooit een ID gaan vervangen, je database wordt er onbetrouwbaar door.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic