Jens B.
Erfahrenes Mitglied
Hallo!
Ich muss zugeben ich bin nicht so gut mit PHP, ein paar Daten aus einer MySQL an Flash übergeben oder in die MySQL schreiben kann ich, viel mehr aber auch nicht. Jetzt erstelle ich grad einen Flash-Chat und brauche zum ersten mal eine etwas komplexere PHP-Funktion.
Ich habe eine Tabelle "chat_user", jeder user hat eine ID und eine Raumnummer (für einen Chatraum) . Die folgende Funktion bekommt nun also die IDs von zwei Spielern und weist ihnen einen neuen Raum zu - wenn der jeweils andere Spieler schon in einem Raum ist zieht man einfach hinterher, ansonsten soll ein neuer, freier Raum gefunden werden. Räume sind hierbei einfach natürliche Zahlen ab 1.
Zusätzlich wird unter "player_id" noch gespeichert, welcher der beiden denn zuerst in dem Raum war (0 = zuerst, 1 = zweiter).
Das Problem ist: jeder Spieler kommt immer in den Raum 1 und hat immer die player_id 0. Ich vermute mal, dass es irgendwas mit den eingelesenen Datentypen zu tun hat, die ich dann einfach mit Integern vergleiche - habe schon durch (int) probiert, das zu konvertieren. Aber ohne Erfolg.
Danke für eure Hilfe
jens
Ich muss zugeben ich bin nicht so gut mit PHP, ein paar Daten aus einer MySQL an Flash übergeben oder in die MySQL schreiben kann ich, viel mehr aber auch nicht. Jetzt erstelle ich grad einen Flash-Chat und brauche zum ersten mal eine etwas komplexere PHP-Funktion.
Ich habe eine Tabelle "chat_user", jeder user hat eine ID und eine Raumnummer (für einen Chatraum) . Die folgende Funktion bekommt nun also die IDs von zwei Spielern und weist ihnen einen neuen Raum zu - wenn der jeweils andere Spieler schon in einem Raum ist zieht man einfach hinterher, ansonsten soll ein neuer, freier Raum gefunden werden. Räume sind hierbei einfach natürliche Zahlen ab 1.
Zusätzlich wird unter "player_id" noch gespeichert, welcher der beiden denn zuerst in dem Raum war (0 = zuerst, 1 = zweiter).
PHP:
// sucht einen neuen Raum oder geht in den selben Raum wie der Spielpartner
function getaRoom($my_id, $your_id) {
// In welchem Raum ist der andere Spieler grad
$query = 'SELECT room_id from chat_user WHERE id="'.$your_id.'"';
$result = mysql_query($query) or doError(mysql_error());
$his_room = (int) mysql_fetch_assoc($result);
$pl = 1;
if($his_room == 0) { // der andere ist noch im hauptraum, also muss ich einen raum suchen
$pl = 0;
$his_room = 1;
$query2 = 'SELECT * from chat_user';
$result2 = mysql_query($query2) or doError(mysql_error());
while ($line = mysql_fetch_assoc($result2)) {
if ((int) $line["room_id"] >= his_room) {
$his_room = $line["room_id"] + 1;
}
}
}
$upd = 'UPDATE chat_user SET room_id="'.$his_room.'", player_id="'.$pl.'" WHERE user_id = "'.$my_id.'"';
$result3 = mysql_query($upd) or doError(mysql_error());
}
Das Problem ist: jeder Spieler kommt immer in den Raum 1 und hat immer die player_id 0. Ich vermute mal, dass es irgendwas mit den eingelesenen Datentypen zu tun hat, die ich dann einfach mit Integern vergleiche - habe schon durch (int) probiert, das zu konvertieren. Aber ohne Erfolg.
Danke für eure Hilfe
jens