PDA

View Full Version : Random Number, if duplicate?


Red Blaze
02-09-2006, 06:45 PM
<?php
srand ((double) microtime( )*1000000);
$random_number = rand( );
echo "$random_number";
?>


I want to use this random code generator, to store in the database a code. I want this number to be unique. How can I keep PHP from duplicating a code saved in the database?

I can tell MySQL to keep it unique, but I don't want an error page. I want to keep errors to a minimum. Thank you for the help.

I was thinking of a loop to check if it exists until it finds a unique number and end the loop before it spits out the page with the code in a hidden field. I just don't know what codes to use. >_<

Marco van Herwaarden
02-09-2006, 06:51 PM
What are you trying to do with this?

Red Blaze
02-09-2006, 06:55 PM
Well, I want this for a gallery. When someone makes an album, the random number generator would create a number. The user would have to keep this to go back to view the album. Kind of like a passcode... key kinda thing.

Guest190829
02-09-2006, 07:00 PM
Why not just use mysql's auto_increment attribute, which adds a unique identifer to table rows?

Red Blaze
02-09-2006, 07:03 PM
Well, I don't want single digit keys. Otherwise, random people will just type 1, 2, 3, 4, 5...and have access where they're not suppose to be.

Marco van Herwaarden
02-09-2006, 07:07 PM
So you want to make it that anybody that want to view an album needs a password? Or just the original owner of the album when they want to edit it?

Red Blaze
02-09-2006, 07:10 PM
If the users types in the correct passcode, they can view the album.

Marco van Herwaarden
02-09-2006, 07:16 PM
And how will they get that password?

Wouldn't it be easiest if you let the user who creates the album just let choose a password?

Red Blaze
02-09-2006, 07:19 PM
It would be emailed to them.
lol I have it figured out. I just want to know how to keep it from duplicating; if it ever happend.

Paul M
02-09-2006, 07:21 PM
Why does it matter if you happen to get a duplicate ?

Red Blaze
02-09-2006, 07:26 PM
I wouldn't want to run into a problem if two albums have the same key.

Paul M
02-09-2006, 07:28 PM
What problem exactly ?

Red Blaze
02-09-2006, 07:30 PM
What I want is to filter the albums by a key. I just want one album per key. If two albums is to have the same key, both albums would be displayed. I do not want that. I want them to be displayed individually.

Paul M
02-09-2006, 07:31 PM
Prefix it with the userid then.

Marco van Herwaarden
02-09-2006, 07:33 PM
Use an autoincrement albumid as identification, the random key as password.

Red Blaze
02-09-2006, 07:34 PM
Is it really THAT difficult to do? I'm not trying to find short cuts. I'm trying to learn more PHP.

Marco van Herwaarden
02-09-2006, 07:42 PM
Well it is not difficult to do, just generate a number, check in the database if it is already used, and generate another number if it was in use.

We only trying to help you find the best solution to your problem.

Red Blaze
02-09-2006, 07:52 PM
Well, Im trying to find out how to create that loop. Which I'd like to learn how it's done. Thanks for trying to help. -_-'

Marco van Herwaarden
02-09-2006, 08:01 PM
Something like (not tested):
while (!$newid)
{
$newid = rand();
$existingid = $vbulletin->db->query_read("SELECT albumid FROM " . TABLE_PREFIX . "myalbumtable
WHERE albumid = $newid");

// Those the generated key already exist?
if ($existingid['albumid'] == $newid)
{
unset $newid;
}
}

Paul M
02-09-2006, 09:15 PM
Is it really THAT difficult to do? I'm not trying to find short cuts. I'm trying to learn more PHP.It's not difficult, just pointless. If you want to learn then learn that you don't need to do some things. :)