Håller på med en sida där folk behöver registrera sig för att komma in. Och jag skulle vilja ge alla en unik id liknande den som användarna på lunarstorm får (en massa bokstäver och siffror som skapas slumpmässigt).
Hur skapar man dessa id?
Använder mysql som databas att spara informationen i.
För att göra så att ingen annan post i en kolumn kan ha samma värde som en annan så gör du fältet till primärnyckel. Dessutom så använder du attributet auto_increment på fältet när du skapar tabellen, så räknar det upp med ett automatiskt när du lägger till en ny post (användare) i tabellen.
Typ såhär
create table Anvandare (AnvandareId int auto_increment, primary key(AnvandareId))
Btw, välkommen som fan till WF! (första gången jag får säga det, känns lite speciellt) :)
Jo, auto_increment känner jag till men jag vill att istället att ha en siffra som ökar med 1 hela tiden ha en unik id som består av siffror och bokstäver så som t ex. lunarstorm har (det är en kombination av 32 tecken med mellanstreck). Har inte hållit på med php och mysql på ett tag nu men vad jag kan minnas så skall det finnas en funktion för att skapa liknande id men kommer inte ihåg om det är en funktion i php eller mysql (kan inte hitta det iaf).
Men då "auto_increment" är en primärnyckel och därmed unik och även ett heltal kan man väl ha oändligt med medlemmar (givetvis förutsatt att man har alla användare i samma users-tabell)...
jo, jag kom på det efter mitt förra inlägg... jag tror nog inte att det spelar nån riktigt stor roll vilken metod man använder, men personligen tycker jag att det ser snyggare ut med id:n som ser ut ungefär som de som Lunarstorm använder sig av...
Hmmm... har funderat lite på ovanstående förslag och vet inte riktigt om jag skall använda någon av dem.
nackdelen med att skapa ID kombinationen i PHP är ju att man måste först jämföra det med databasen så att det inte redan finns ett liknande (ingen stor risk ifs :) ingen stor nackdel ifs men det blir ju extra rader att skriva dit... (/me lat)
har lusläst i mysql manualen och kan inte hitta ngt om replikations id där så det finns väl inget då antar jag.
nåja, får väl fundera vidare hur jag skall göra.
Tack för alla förslag :)
En fråga (som egentligen inte har med sammanhanget at göra :)...
När jag har lagt till ett par rader i mitt 'table' och tar bort ngn, så blir det ju så att "auto_increment-funktionen" fortsätter att räkna på ett nummer efter senaste (var jag tillräckligt otydlig? :)...
ex.
--------------------
ID name
--------------------
1 olle
2 pär
3 stina
4 göran
5 knut
--------------------
Tar bort 3 & lägger till en usr....
--------------------
ID name
--------------------
1 olle
2 pär
4 göran
5 knut
6 rutger
--------------------
Hur kan man sk. "Nollställa", detta ?
(Har provat att --> Rensa tabellen ("FLUSH TABLE") <-- funkar inte...)
du skulle ju kunna fixa ett eget skript som visar alla rader i en tabell, och sen kan du ju ha ett litet skript som t ex det här. det ska kallas så här:
fil.php?id=
id ska självklart vara radens ID!
// ta bort raden
$sql = "DELETE FROM tabell WHERE id='" . $_GET['id'] . "'";
$result = mysql_query($sql) or die(mysql_error());
// uppdatera
$sql = "UPDATE tabell SET id=id-1 WHERE id > " . $_GET['id'];
$result = mysql_query($sql) or die(mysql_error());
<?php
function unique_id($delar = 4,$langd = array(4,5,6,5))
{
// de bokstäver och siffror som ska vara med
$bok = array('A','B','C','D','E','F',1,2,3,4,5,6,7,8,9);
// seed till array_rand()
srand((float) microtime() * 10000000);
// loop
for($i = 0; $i < $delar; $i++)
{
// slumparen
$slump = array_rand($bok,$langd[$i]);
// loop nummer 2
for($j = 0; $j < $langd[$i]; $j++)
{
$id[$i] .= $bok[$slump[$j]];
}
}
// skapa id:n
$id = "{" . implode('-',$id) . "}";
return $id;
}
?>
Använder ovanstående kodsnutt, för att skapa en aktiveringsnyckel, som ska skickas i ett mail.
Problemet är att jag får:
Notice: Undefined variable: id in E:\Projekt\_Php\Reg\css\funcs.php on line 30
Notice: Undefined offset: 0 in E:\Projekt\_Php\Reg\css\funcs.php on line 30
Notice: Undefined offset: 1 in E:\Projekt\_Php\Reg\css\funcs.php on line 30
Notice: Undefined offset: 2 in E:\Projekt\_Php\Reg\css\funcs.php on line 30
Notice: Undefined offset: 3 in E:\Projekt\_Php\Reg\css\funcs.php on line 30
Koden jag använder för att testa det här är:
print("ID-Nummer: " . unique_id());
På rad 30 i min fil, finns kodstycket:
$id[$i] .= $bok[$slump[$j]];
Hur ska jag göra det för att slippa ovanstående felmeddelanden?
261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849