[browsergame] koordinaten

JustNobody

Grünschnabel
schönen nachmittag allen,


also, ich hab jetzt mit dem anmelde script begonnen. Doch leider funktionierts nicht so, wie's sollte.
Hier erstmal der Code:

PHP:
$id_x = rand(1, 200);
$id_y = "1";
$db->query("SELECT * FROM user WHERE id_x='$id_x' AND id_y='$id_y'");
while($datensatz = $db->data()) {
$query_id = $datensatz['id_y'];
}
if($id_y == $query_id) {
$id_y = $id_y + 1;
}
if ($id_y == "30") {
$id_x = rand(1, 200);
}
 -> dantebank query

Eigentlich sollte das Script eine Zufallszahl zwischen 1 und 200 generieren. Die Zahl für id_x ist z.B. 114, die von id_y immer 1.
Angenommen, es gibt schon einen User, der die id_x mit 114 und id_y mit 1 belegt. Dann sollte das Script
a) überprüfen, ob es schon einen User mit den eben generierten id_x und id_y geben
b) falls ja, id_y solange erhöhen, bis id_x und id_y nicht mehr in der db vorhanden sind. aber id_y darf nicht größer als 30 sein.

Hätte da jemand einen unkomplizierten Vorschlag?

danke
 
Definiere doch erst einmal ein unique Feld für die x-Werte, das erleichtert dir das ganze erheblich:
Dann würde ich ganz prmitiv folgendes machen:
PHP:
while($g)
{
$x-wert = rand(1,200);
$g = $db->query("insert into db values 'blabla','bla',$x-wert,'bla");
}
Wenn der versuchte X-Wert schon in der Tabelle steht, wird für g "false" zurückgeliefert.
[Unique-Definition nicht vergessen]
 
abend,

naja, würde ich das id_x Feld auf UNIQUE setzen, könnte ich nur einem User die Galaxie 114 zuweisen.
Denn eine Galaxie ist in etwa so aufgebaut:

114:1 nick1
114:2 nick2
114:3 nick3
etc.

mfg
 
achsoooooooooooo
1. Möglichkeit:
x-und y-Werte zusammen in einem Array speichern:
114|1
und dann meinen Vorschlag in etwa weiterverwenden.
ansonsten würde ich beides einfach hochzählen aber für dich:

PHP:
//Prüfen, ob die XY-Kombi schon vorhanden ist
while($g)
{
$x_wert = rand(1,200);
$p = $db->query("Select * from db where x={$x_wert} and y={$y_wert} LIMIT 1");
if(count($p))
{
 if($y < 30)
 {
 $y++;
 }
 else $y=0;
}
else { $g=1; }
}

Wenn da nie was passiert, heißt das,dass die DB voll ist.
 
Zuletzt bearbeitet:
urgs..
da fehlt mir irgendwie der Durchblick ;)

Ich habs nochmal versucht. Mit einer netten while-Schleife.
Er erhöht mir auch brav, aber sobald id_y 2 ist, zählt er nichtmehr hoch.

hier der code:

PHP:
$db->query("SELECT * FROM user WHERE id_x='$id_x' AND id_y='$id_y'");
while($datensatz = $db->data()) {
$query_id = $datensatz['id_y'];
}
while( $query_id == $id_y) {
$id_y = $id_y + 1;
}

mfg
 
Zurück