I have a game script thing set up, and when it creates a new character I want it to find an empty address for that players house.
The two relevant table fields it inserts are ‘city’ and ‘number’. The ‘city’ is a random number out of 10, and the ‘number’ can be 1-250.
What it needs to do though is make sure there’s not already an entry with the 2 random numbers it finds in the ‘HOUSES’ table, and if there is, then change the numbers. Repeat until it finds an ‘address’ not in use, then insert it.
I have a method set up to do this, but I know it’s shoddy- there’s probably some more logical and easier way. Any ideas?
UPDATE
Here’s my current code:
$found = 0;
while ($found == 0) {
$num = (rand()%250)+1; $city = (rand()%10)+1;
$sql_result2 = mysql_query("SELECT * FROM houses WHERE city='$city' AND number='$num'", $db);
if (mysql_num_rows($sql_result2) == 0) { $found = 1; }
}
You can either do this in PHP as you do or by using a MySQL trigger.
If you stick to the PHP way, then instead of generating a number every time, do something like this
this way you don’t check the same value more than once, and you still check randomly.
But you should really consider fetching all your records before the loops, so you only have one query. That would also increase the performance a lot.
like
I would go with this method 🙂