Avatar billede hono Nybegynder
18. oktober 2002 - 00:46 Der er 15 kommentarer og
2 løsninger

Altid 4 cifre

Jeg har en tabel hvor id'en bestemmes med auto_increment. Jeg vil imidlertid gerne have at der ALTID er 4 cifre i tallet, altså:

0001
....
0123
....
2536
osv.

Er det noget jeg kan ordne i MySQL, eller skal så droppe auto_incrementet og i stedet ordne det med PHP?

Hono
Avatar billede lauer Nybegynder
18. oktober 2002 - 00:53 #1
Du kan vælge ZEROFILL når du opretter tabellen  i phpmyadmin

- lauer
Avatar billede Noone Nybegynder
18. oktober 2002 - 00:55 #2
Hmmm. Hvad med...

if (strlen($variabel) < 4) {
  $counter = 1;
  while (strlen($variabel) < 4) {
    $variabel .= "0{$variabel}";
  }
}
Avatar billede Noone Nybegynder
18. oktober 2002 - 00:55 #3
Nevermind, jeg havde set forkert på kategorien... Ups.
Avatar billede hono Nybegynder
18. oktober 2002 - 00:56 #4
Der er godt nok noget der hedder "Unsigned Zerofill" men hvor skal jeg angive, at det skal være præcis 4 cifre?

Hono
Avatar billede lauer Nybegynder
18. oktober 2002 - 01:20 #5
ja, okay, så hedder den det :)
hvis du f.eks. siger at det skal være en int(4) så udfylder den 0'er på de sidste pladser.

- lauer
Avatar billede hono Nybegynder
18. oktober 2002 - 01:41 #6
machoman >> Jeg er ikke særligt vild til det der databasehalløj, så jeg skal lige have skåret det ud i pap :). Jeg ved hvordan man gør det til en int, men hvad med int(4)? Er det ved at skrive 4 i det der felt der hedder "længde/værdi"?

Hono
Avatar billede disky Nybegynder
18. oktober 2002 - 07:28 #7
Hvis iD skal være auto_increment og på max 4 cifre, vil du efter at have indsat 9999 poster i DB'en aldrig kunne gøre det igen, også selv om du har slettet en post !

Sådanne en begrænsning kan gå hen og blive dit personlige år 2000 problem.
Avatar billede lauer Nybegynder
18. oktober 2002 - 08:21 #8
hono, ja 4 er maxlængden på id'en, og der skal du som disky skriver være opmærksom på at 9999 id'er måske ikke er nok i det lange forløb.

- lauer
Avatar billede nemeier Nybegynder
18. oktober 2002 - 10:47 #9
SELECT LPAD(field,4,'0000') from table ...

Det burde løse dit problem;
Avatar billede ztyxx Nybegynder
18. oktober 2002 - 10:50 #10
du kan også sætte denne i feltet når du opretter tabellen UNSIGNED ZEROFILL DEFAULT '0000'
Avatar billede hono Nybegynder
18. oktober 2002 - 17:33 #11
hmm, okay, jeg vil da nødigt løbe ind i mit eget år 2000 problem. Jeg ville lige overveje det endnu en gang, og se nærmere på jeres forslag, så skal jeg nok melde tilbage!

Hono
Avatar billede jesperhaun Nybegynder
19. oktober 2002 - 23:25 #12
En "billig" løsning kunne være at starte serien med 1000.

Altså:
Create table xxx (count int unsigned auto_increment not null primary key) auto_increment = 1000
Avatar billede hono Nybegynder
22. oktober 2002 - 21:35 #13
Okay, jeg har kigget på det, og har droppet det, efter at have hørt diskys argumenter. Machoman kom jo egenlig med det svar jeg ledte efter, hvorfor han også får del i pointene. Tak for hjælpen alle sammen.

Hono
Avatar billede nemeier Nybegynder
22. oktober 2002 - 22:49 #14
Hej Hono,
ikke fordi jeg mangler points, men i princippet gir man point til dem som har givet et korrekt svar og ikke til dem der fortæller en at man er ved at lave lort i den, ingen svar nødvendig !
Avatar billede lauer Nybegynder
22. oktober 2002 - 23:07 #15
Nemeier, det hele tælder jo som hjælp, og han må fint dele point som han vil alt efter hvad han har kunne bruge til noget.
Avatar billede hono Nybegynder
22. oktober 2002 - 23:50 #16
nemeier >> Nu skal jeg passe lidt på med hvad jeg siger, da jeg ikke er ekspert på MySQL. Men for mig at se var det faktisk kun Machoman der gav mig præcis det svar jeg bad om i spørgsmålet. Under alle omstændigheder var hans svar tilstrækkeligt og overflødiggjorde dermed alle andre svar - undtagen diskys som gjorde mig opmærksom på en vigtig problemstilling.

Jeg har snart brugt Eksperten i et år, og det har været næsten dagligt, og jeg deler ikke din opfattelse af at man i princippet giver point til alle med et korrekt svar herinde. Der er mange gange flere løsninger/varianter, og det kan ikke passe at andre skal have del i pointene fordi supplere med unødvendig alternativ løsning.

For mig stod valget mellem at give alle pointene til machomann (da han var den første til at give mig det svar jeg søgte) eller til machomann og disky. Jeg gav også disky da jeg fandt at han havde været en stor hjælp i denne sag og synes også at kunne læse ud af machomanns kommentar ovenfor at han er indforstået med dette.

Hono
Avatar billede all_for_you Nybegynder
23. oktober 2002 - 00:04 #17
Nu er jeg lige kommet med på en hænger. Men jeg har dog set at "nogle" folk ikke helt har forstået "princippet" her på Eksperten.

Det handler om at vi hjælper hinanden - ikke diskuterer hvem som giver point. Jeg ser det også sådan, at ham som giver point, bestemmer fuldt ud hvem som FORTJENER point! Dvs. hvem han synes hvis hjælp var mest bruge lig. All_for
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester