MySQL: je id naar mooie optelling

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Joris

Joris

14/04/2007 14:33:00
Quote Anchor link
Hallo, is het mogelijk om je id (primary key) in je SQL-table te wijzigen naar een mooie optelling zonder de rest te weizigen? Dus:
Van: 88 2 46 23 3 Naar: 1 2 3 4 5

Wel: 1 2 3 4 5
Niet: 5 3 4 1 2
Niet: 1 2 4 5
 
PHP hulp

PHP hulp

16/11/2024 15:00:34
 
Kalle P

Kalle P

14/04/2007 14:38:00
Quote Anchor link
Waarvoor zou je dat doen? Het zou kunnen met de hand bijvoorbeeld, maar das echt een klote werk, want je PK mag niet het zelfde zijn, dus je zo eerst de rest een ander nr moeten geven en dan netjes 1,2,3 invoeren.

Er is geen goed argument te vinden om dat te doen. Wat maakt mij het uit of ik id 88 heb of 2, niks. En het aantal members dat je hebt moet je ook niet ophalen dmv het hoogste id, maar door al je id de count()en.

Zorg dat je iig van auto_increment()(mysql) gebruik maakt of serial (postgres), maar ik neem aan dat je dat al doet, vandaar je vraag.

Kort antwoord op je vraag: er is geen functie voor.

En nogmaals waarom zou je het willen? Alleen omdat het mooi staat...
 
Joris

Joris

14/04/2007 14:59:00
Quote Anchor link
Voor eenvoudige oplossing om een admin volgorde te laten bepalen van o.a. menuitems (omhoog / omlaag etc)

Voor omhoog, even kort door de bocht:
$menunaamomhoog = SELECT Naam WHERE id = $id
$iddaarboven = $id -1;
$menunaam = SELECT Naam WHERE id = $iddaarboven

$sql=(UPDATE $menunaamomhoog WHERE id = $iddaarboven);
$sql=(UPDATE $menunaam WHERE id = $id);

Dit kan dus alleen als de id netjes optelt
 
Joren de Wit

Joren de Wit

14/04/2007 15:09:00
Quote Anchor link
Dan ben je nu op de verkeerde manier bezig. Als je het id als primary key gebruikt met een auto_increment op die kolom, dan moet je daar gewoon vanaf blijven.

Je gebruikt het id dan alleen om de records in je tabel uit elkaar te houden en ervoor te zorgen dat elk record uniek is. Voor meer heb je het niet nodig.

Voor de volgorde van je menu zul je in dit geval een andere kolom moeten gebruiken. In die kolom kun je dan gewoon met behulp van integers de positie van een menu item aangeven. Het slimste is dan om bij het wijzigen van de volgorde, alle records te updaten. Zo weet je zeker dat je niet 2 items op 1 positie krijgt.

Verder klopt er ook vrij weinig van je queries die je hier net plaatst. Ik neem aan dat je in je echte script wel anders hebt staan?
 
Frank -

Frank -

14/04/2007 15:27:00
Quote Anchor link
De roept het ook al, maar een id heeft geen waarde. En iets dat geen waarde heeft, kun je ook niet sorteren. Jouw voorbeeld 88 2 46 23 3 betekent dat je een record met id 88 kunt aanwijzen, een record met id 2, etc. etc. Meer dan dit betekent het niet. 88 is net zo uniek als 2, maar beide hebben geen waarde.

Wil je in een record een waarde opslaan, dan doe je dat door bv. de kolom 'naam' aan te maken en daarin de naam van iemand op te slaan. Dát is een waarde. Een id gebruik je om een uniek record aan te wijzen, 6485673 is dus net zo belangrijk, of onbelangrijk, als 5895. Beide zijn ze volkomen gelijk aan elkaar, ze zijn beide 'waardeloos'.

KEN ER DAN OOK GEEN WAARDE AAN TOE!!!

Sorry dat ik zo schreeuw, dat is voornamelijk om anderen wakker te schudden. Hopelijk lezen die dit topic ook. Dat is het mooie van een forum ;)
 
Robert -

Robert -

14/04/2007 15:29:00
Quote Anchor link
Voor menuvolgorde kun je met dit script terrecht. Hierbij is het gedaan zoals het moet en niet met id's wijzigen: Klik
 
Joris

Joris

14/04/2007 15:30:00
Quote Anchor link
Door je hele table te-UPDATE-en kan je je (nieuwe) kolom Volgorde (ipv je id) netjes laten optellen, dit bedoel je toch??

By the way: Mac rules!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.