De database heet `gegevens` en de id kolom, heet `id`.
Wat moet ik dan precies in wat veranderen zodat het werkt?
- [SQL] ID telt verder
-
28-05-2010, 21:07 #16
- Berichten
- 315
- Lid sinds
- 15 Jaar
-
28-05-2010, 21:11 #17
- Berichten
- 27
- Lid sinds
- 14 Jaar
De id kolom maakt niet uit, het gaat om de kolom met de data die je wilt echoën.
<?php
$query = mysql_query("Select * From `gegevens`");
$id = 0;
while ( $rij = mysql_fetch_assoc($query) ) {
$id++;
echo $id.$rij['kolom met data'];
}
?>
Ik hoop dat dit voorbeeld het duidelijker maakt.
-
28-05-2010, 21:27 #18
- Berichten
- 433
- Lid sinds
- 17 Jaar
Je lijkt het principe van de id kolom, oftewel de primary key, niet te begrijpen.
In feite zou je helemaal niet moeten kijken naar de waarde van het id, want dit is niet van belang.
Je wilt dit opeenvolgend hebben, maar waarom? Omdat het mooi staat of wat is eigenlijk de reden?
Je krijgt inderdaad missende cijfers wanneer je records verwijderd, maar dat deze cijfers niet opnieuw gebruikt worden, heeft wel degelijk een reden. Namelijk als je een oude backup zou terug willen zetten, zit je overhoop met id's die opeens door andere informatie in gebruik zijn.
Wanneer de database gewoon verder telt, is het relatief eenvoudig om een oude backup terug te zetten.
Overigens is mysql niet altijd even consequent met het niet hergebruiken van oude id-nummers, maar dat terzijde.
De enige functie van de id kolom is als 'primary key', oftewel als sleutel tot het record. Je gebruikt dit dus alleen om de records terug te kunnen vinden.
Je gaf aan dat de id's te zien zijn op de site, dat is niet bepaald gebruikelijk, wel in url's, maar niet echt op de pagina zelf. Waarom je dit doet weet ik niet, maar dit is vast niet nodig. En wat dan nog als dit niet opeenvolgend is?
Als je de records wilt nummeren, kun je beter in je while loop waarin je de records weergeeft, een teller laten meelopen.
Naar mijn mening ben je het jezelf veel moeilijker aan het maken dan nodig is, met daarbij nog een grote kans op een corrupte database omdat je gaat sleutelen aan je id's die aan diverse informatie gelinkt is.
-
28-05-2010, 21:40 #19
- Berichten
- 691
- Lid sinds
- 15 Jaar
Stel je hebt 10 records en aan elk record is een stukje informatie gekoppeld die in een andere tabel zit.
Dan ga je record 5 verwijderen.
Wat zou er nou gebeuren als alles in de database zou opschuiven, dus 6 word 5, 7 word 6 etc.
Zou de gekoppelde data in de andere tabel dan correct overeen komen?
-
28-05-2010, 21:44 #20
- Berichten
- 315
- Lid sinds
- 15 Jaar
Je lijkt het principe van de id kolom, oftewel de primary key, niet te begrijpen.
In feite zou je helemaal niet moeten kijken naar de waarde van het id, want dit is niet van belang.
Je wilt dit opeenvolgend hebben, maar waarom? Omdat het mooi staat of wat is eigenlijk de reden?
Je krijgt inderdaad missende cijfers wanneer je records verwijderd, maar dat deze cijfers niet opnieuw gebruikt worden, heeft wel degelijk een reden. Namelijk als je een oude backup zou terug willen zetten, zit je overhoop met id's die opeens door andere informatie in gebruik zijn.
Wanneer de database gewoon verder telt, is het relatief eenvoudig om een oude backup terug te zetten.
Overigens is mysql niet altijd even consequent met het niet hergebruiken van oude id-nummers, maar dat terzijde.
De enige functie van de id kolom is als 'primary key', oftewel als sleutel tot het record. Je gebruikt dit dus alleen om de records terug te kunnen vinden.
Je gaf aan dat de id's te zien zijn op de site, dat is niet bepaald gebruikelijk, wel in url's, maar niet echt op de pagina zelf. Waarom je dit doet weet ik niet, maar dit is vast niet nodig. En wat dan nog als dit niet opeenvolgend is?
Als je de records wilt nummeren, kun je beter in je while loop waarin je de records weergeeft, een teller laten meelopen.
Naar mijn mening ben je het jezelf veel moeilijker aan het maken dan nodig is, met daarbij nog een grote kans op een corrupte database omdat je gaat sleutelen aan je id's die aan diverse informatie gelinkt is.
En je mag deze dus niet gebruiken voor iets anders.
Als ik mijn optel ding wil hebben moet ik hier dus buiten het id een andere kolom voor aanmaken.
En het id verder zijn gang laten gaan.
Is dat een beetje zoals je het bedoeld.
-
28-05-2010, 21:47 #21
- Berichten
- 27
- Lid sinds
- 14 Jaar
Ik vraag me nog steeds af wat je toch met de id rij moet. De id rij is namelijk alleen bedoelt om snel records te vinden die gedelete/aangepast moeten worden.
-
28-05-2010, 21:54 #22
- Berichten
- 315
- Lid sinds
- 15 Jaar
Oké, ik leg het mischien wat vaag uit.
Nu probeer ik het in een keer duidelijk te maken:
Ik heb dus een systeem in PHP dat gekoppeld is aan een SQL database.
Via een form kan men informatie toevoegen aan de database.
Deze komt dan zichtbaar op de site te staan.
Alle toevoegingen zijn genummerd,
Hieronder zie je een voorbeeldje van hoe die nummering er staat.
Nu gebruik ik voor die nummering "ID",
De "ID" is 'auto increment' en een 'primary key'
Nu blijkt dat jullie zeggen dat dat id daar helemaal niet voor bedoeld is.
Enkel om alle records een kenmerk mee te geven en hem zo later makkelijk op te kunnen halen.
Maar ik wil wel dat alle toevoegingen netjes genummerd zijn, zonder dat hier gaten in zitten.
Moet ik dan naast het "ID" een andere kolom aanmaken en het "ID" zelf met rust laten?
-
28-05-2010, 21:56 #23
- Berichten
- 27
- Lid sinds
- 14 Jaar
Ik zou zeggen, leest post #17? Staat volgens mij wel vrij duidelijk in hoe je aan een genummerde lijst komt.
-
28-05-2010, 22:03 #24
- Berichten
- 433
- Lid sinds
- 17 Jaar
Als het nummer bedoeld is als een soort klantnummer/factuurnummer e.d. Dan is het inderdaad verstandig hiervoor een aparte kolom aan te maken. Id moet je gewoon niet aan gaan rommelen.
Wanneer je puur een nummering wilt voor je lijst, kun je inderdaad post nummer 17 bestuderen.
Zelf gebruik ik altijd onderstaand script.
<?php
while ($row = mysql_fetch_assoc($result))
{
$teller++;
echo $teller.' '.$row['kolomnaam'];
}
?>
Is in feite hetzelfde, maar wat ingekort tot alleen het nodige gedeelte, en wat overzichtelijker.Laatst aangepast door stefanvi : 29-05-2010 om 15:05
-
28-05-2010, 22:09 #25
- Berichten
- 2.971
- Lid sinds
- 18 Jaar
Je noemt het ID, maar het is geen ID meer als het niet uniek is.
-
28-05-2010, 23:03 #26
- Berichten
- 315
- Lid sinds
- 15 Jaar
Ik ben inmiddels super geholpen door Jan van Veen
Het script dat hij heeft gebruikt staat in post 17 voor mensen die dit toevallig ook wilde weten ;)
-
29-05-2010, 08:47 #27
- Berichten
- 2.971
- Lid sinds
- 18 Jaar
Dat is hetzelfde als ik al eerder had gezegd ;)
-
29-05-2010, 09:01 #28
- Berichten
- 30
- Lid sinds
- 19 Jaar
Mocht je je auto increment waarde echt willen veranderen (zie het nut niet) kan je het als volgt doen:
Code:ALTER TABLE tbl AUTO_INCREMENT = waarde;
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