I’m trying to generate a unique “dosieid” number for my web site. My web site is a human resources program solution, in that program users create dosie of their workers in their firm …random dosieid needs me so when user creating dosie in field dosieid automatically show the dosieid-s that are not used before…the dosieid that don’t exist in database. In other case I would use auto increment but in this case dosie is not created yet. And in form dosieid must be option to change the number if random is not fine with a user. One more hint the numbers must bee from 1 to 9999. Can someone help me? I have try many codes but I have not find something like one with this spec.
This is what I have do so far. It gets the random number but I don’t know how to compare that random number with database row “dosieid” ?
$id_num = mt_rand(1,9999);
$query = "SELECT dosjeid FROM albums";
$result = mysql_query($query) or die(mysql_error());
while($account = mysql_fetch_array($result)){
if ($id_num == $account['id']){
$id_num = mt_rand(1,9999);
}
}
echo"$id_num<br>";
This is extraordinarily convoluted… why is an auto-incrementing number not enough? This code would also never work properly. If for whatever reason you HAVE to use a random number, then you’d do it like this:
However, here’s some problems with this:
1) You’ll get an infinite loop when you reach 9999 dosie records
2) The more records there are in the database, the longer this loop will take to find a “vacant” slot. As you get closer and closer to 9999 records, you’ll be taking a LONG time to find that one empty slot
3) If you’re trying to “cloak” the IDs of anyone member so that users can’t simply increment an ID parameter somewhere to see other people’s records, there’s FAR FAR FAR better/easier ways of doing this, such as encrypting the ID value before sending it out to clients.