webForumDet fria alternativet

id

13 svar · 279 visningar · startad av dendålige

dendåligeMedlem sedan jan. 2003188 inlägg
#1

just nu skapar jag en medlems id med denna funktion:

Function id(word)
Dim idet
Const idChars = "abcdefghikjlmopqrstuvwxyzABCDEFGHIJKLMNOPPQRSTUVWXYZ0123456789"
Randomize
For i = 1 To 20
idet = idet & mid (idChars, int(rnd*len(idChars))+1, 1 )
Next
id = idet
End Function

men hur stor är sanolikheten att någon får likadant id?

hur fixar man så att den kollar om id:et finns, annars så slumpar den om på nytt??

mrblondeMedlem sedan aug. 20012 349 inlägg
#2

Lagrar du din information i en databas? Isåfall kan din databas säkerligen skapa ett unikt id, vilket garanterar att id inte blir dubblerat.

Det är dumt att skapa ett id som du gör.

För att kolla, du lagrar väl ditt slumpade id i en databas? Gör en slagnng mot databasen och kontrollera att id:et inte finns, ifall det finns, slumpa ett nytt.

icaaqMedlem sedan okt. 20005 273 inlägg
#3

Om du använder en databas för att lagra dina medlemmar, så kan du (om du inte använder mySql) använda dig av ett replikations-id istället. Detta ställer du in i access/MS-Sql.

Då kommer du inte att få lika medlems-id:en iaf.

mv icaaq

mrblondeMedlem sedan aug. 20012 349 inlägg
#4

oddsen för att du slumpar samma id 2 ggr är väl (om jag inte är ute och cyklar) 3,66 * 10 upphöjt i 35

Ganska liten alltså.

Jesper TMedlem sedan nov. 20017 144 inlägg
#5

1.) Skapa en kolumn som inte tål dubletter.
2.) Lägg till medlemmens uppgifter i databasen
3.) Kör:

set recSet = connection.execute("select last_insert_id()")
nytt_unikt_id = recSet(0)

Och vips så har du nu det unika id:t i nytt_unikt_id.

dendåligeMedlem sedan jan. 2003188 inlägg
#6

jag har databas... och jag kör MySQL

hmm... jesperT hur menade du där?

PeeerMedlem sedan mars 20025 907 inlägg
#7

<ot>

mrblonde skrev:

3,66 * 10 upphöjt i 35

Antar att du glömde ett litet minustecken där.. :OO</ot>

Jesper TMedlem sedan nov. 20017 144 inlägg
#8

Lägg till en kolumn(om du inte redan har en) som t.ex. heter unikt_id:

CREATE TABLE din_tabell (unikt_id int(11) unsigned NOT NULL auto_increment,
  PRIMARY KEY  (unikt_id)
) TYPE=MyISAM;

Som du hämtar upp det unika id:t på genom koden jag tidigare bifogade.

dendåligeMedlem sedan jan. 2003188 inlägg
#9

hmm... men alltså när man kör auto_increment... kör den inte direkt från 1 och så vidare upp... förlåt om jag inte riktigt förstår hur du menar :S suttit framför datorn några timmar nu så jag är lite borta =P

icaaqMedlem sedan okt. 20005 273 inlägg
#10

Vad använder du för databas?

dendåligeMedlem sedan jan. 2003188 inlägg
#11

MySQL...

Jesper TMedlem sedan nov. 20017 144 inlägg
#12

dendålige skrev:

hmm... men alltså när man kör auto_increment... kör den inte direkt från 1 och så vidare upp... förlåt om jag inte riktigt förstår hur du menar :S suttit framför datorn några timmar nu så jag är lite borta =P

Vad spelar det för roll om id:t är unikt?

dendåligeMedlem sedan jan. 2003188 inlägg
#13

alltså.... varje medlem måste ju ha ett unikt id... och jag vill inte att det ska vara 1,2,3 osv... därför slumpa jag då ut ett id, som skulle kunna jämföras med replikations-id i access...

men vill inte riskera att det kan bli dubletter

Engine^Medlem sedan dec. 20003 887 inlägg
#14

Varför vill du inte har från 1?

Jag tycker det verkar onödigt att krångla till ett ID med massa tecken om det inte behövs.

Om du måste så är det bara att använda din funktion. Kontrollera om ID:t redan finns

blnIsUnique = False

While Not blnIsUnique
  strSql = "SELECT memberID FROM tabell WHERE ID = " & id

  objRS.Open strSql, [i]Connection[/i]

  If objRS.EOF Then blnIsUnique = True

  objRS.Close
Wend

Typ...

133 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)