Habe das nun in verschiedenen Varianten versucht und es klappt einigermaßen. Konflikte treten aber trotzdem auf wenns komplexer wird.
Vielleicht ist men Ansatz der Denkweise nicht richtig.
Ich habe ein Spielfeld (ohne weitere Funktionen) gebastelt PHP/MySql/Smarty
20x25 Felder = 500 Felder
Schwarze Felder bedeutet das dieses Feld leer ist
Blaue Felder zeigen an das dort ein User wohnt.
Der User hat z.B die Koordinaten 67:18:9
Quadrant -> 67 = Spielfeldnummer
Zahl 9 -> Reihe 9
Zahl 18 -> Feld18
Das Gesamte Spielfeld schaut so aus.
http://gebäudereinigung-diepholz.de/.../spielfeld.gif
Quadrant ist die Spielfeldnummer ich habe das 20 Reihen mit 25 Spalten
Ich lese alle User einer Reihe aus ergo 25 User welche ich dann in einem Rutsch ausgebe und prüfe ob das Feld vergeben ist oder nicht.
Das mache ich 20 mal und habe dann meine 500 Felder generiert.
Damit es nun nicht zu verwirrend wird, für Euch und mich ;) werde ich meine Frage auf Reihe 9 begrenzen. Das schaut nun so aus.
http://gebäudereinigung-diepholz.de/...elfeld_min.gif
Ich lese die Komplette Reihe aus:
PHP-Code:
$sql = "
SELECT
*
FROM
dwars
WHERE
omni1 = 67
AND
omni3 = 9
LIMIT
25
";
$line9 = array();
$result = $db->query($sql);
while($row = mysql_fetch_assoc($result))
{
$line9[] = $row;
}
$my = mysql_query($sql);
...
$tpl->assign('line9',$line9);
Ich gebe die Komplette Reihe aus in der Tpl:
PHP-Code:
<tr>
{foreach from=$line9 item=line9 name=line9}
<td>
{if $line9.ok >'1'}
<img id="m" src="{$I}">
{else}
<div id="balloon9{$smarty.foreach.line9.index}" class="balloonstyle">{$line9.username}</div>
<a href="commander.php?c={$line9.omni0}" rel="balloon9{$smarty.foreach.line9.index}">
<img id="m" src="{$A}"></a>
{/if}
</td>
{/foreach}
</tr>
Ausgabe ist genauso wie ich sie benötige allerdings ohne Freundanzeige:
Code:
Array
(
[0] => Array
(
[user_id] => 33509
[omni0] => 67:1:9
[omni1] => 67
[omni2] => 1
[omni3] => 9
[username] => a
[basename] => a
[clan] => a
[rank] => a
[ok] => 9
)
[1] => Array
(
[user_id] => 33529
[omni0] => 67:2:9
[omni1] => 67
[omni2] => 2
[omni3] => 9
[username] => a
[basename] => a
[clan] => a
[rank] => a
[ok] => 9
)
... gekürzt ...
[14] => Array
(
[user_id] => 33789
[omni0] => 67:15:9
[omni1] => 67
[omni2] => 15
[omni3] => 9
[username] => a
[basename] => a
[clan] => a
[rank] => a
[ok] => 9
)
[15] => Array
(
[user_id] => 33809
[omni0] => 67:16:9
[omni1] => 67
[omni2] => 16
[omni3] => 9
[username] => Filome
[basename] => Darktown
[clan] => -
[rank] => Pilot
[ok] => 1
)
[16] => Array
(
[user_id] => 33829
[omni0] => 67:17:9
[omni1] => 67
[omni2] => 17
[omni3] => 9
[username] => a
[basename] => a
[clan] => a
[rank] => a
[ok] => 9
)
[17] => Array
(
[user_id] => 33849
[omni0] => 67:18:9
[omni1] => 67
[omni2] => 18
[omni3] => 9
[username] => Rammeltron
[basename] => Rammelhausen
[clan] => Excalibur
[rank] => Pilot
[ok] => 1
)
[18] => Array
(
[user_id] => 33869
[omni0] => 67:19:9
[omni1] => 67
[omni2] => 19
[omni3] => 9
[username] => Ba`al
[basename] => Sarkophag
[clan] => Excalibur
[rank] => LanceCorporal
[ok] => 1
)
[19] => Array
(
[user_id] => 33889
[omni0] => 67:20:9
[omni1] => 67
[omni2] => 20
[omni3] => 9
[username] => a
[basename] => a
[clan] => a
[rank] => a
[ok] => 9
)
... gekürzt ...
[24] => Array
(
[user_id] => 33989
[omni0] => 67:25:9
[omni1] => 67
[omni2] => 25
[omni3] => 9
[username] => a
[basename] => a
[clan] => a
[rank] => a
[ok] => 9
)
)
Bis hierher ist es simple und selbst ich als Anfänger weiss was passiert. Nun aber der Teil wo ich einfach überfordert bin.
Mein Feld ist 67:18:9 den Usen neben mir möchte ich gern als Freund anzeigen lassen. Was aber einfach nicht klappt.
Wie handhaben weil ich ja mehr als 1 Freunde haben werde?
DB Struktur
Code:
Tabelle dwars
[user_id] => 33849
[omni0] => 67:18:9
[omni1] => 67
[omni2] => 18
[omni3] => 9
[username] => Rammeltron
[basename] => Rammelhausen
[clan] => Excalibur
[rank] => Pilot
[ok] => 1
Tabelle user_data
[id] => 1
[user_id] => 33849
[friend_id] => 33869
[enemy_id] => 0
Nun habe ich das mal so geschrieben:
PHP-Code:
$sql="
SELECT
*
FROM
dwars a
JOIN
user_data b
ON
a.user_id = b.user_id
WHERE
omni1 = 67
AND
omni3 = 9
LIMIT 25
";
$line9 = array();
$result = $db->query($sql);
while($row = mysql_fetch_assoc($result))
{
$line9[] = $row;
}
$my = mysql_query($sql);
echo "<pre>";
#echo "friend";
print_r($line9);
Array Ausgabe
Code:
Array
(
[0] => Array
(
[user_id] => 33849
[omni0] => 67:18:9
[omni1] => 67
[omni2] => 18
[omni3] => 9
[username] => Rammeltron
[basename] => Rammelhausen
[clan] => Excalibur
[rank] => Pilot
[ok] => 1
[id] => 2
[friend_id] => 33869 <-- Die ID des Freundes rechts neben mir
[enemy_id] => 0
[another] => 0
)
)
So nun habe gibt er meine Daten aus und wer mein Freund ist aber so hatte ich mir das nicht gedacht.
1.) Alle 25 Koordinaten der Reihe auslesen
2.) Prüfen ob Jemand auf dem Feld sitzt
3.) Wenn kein Spieler zeige scharz
4.) Wenn Spieler da zeige blau
###--- bis hier klappt es ---###
5.) Wenn Spieler da und Freund zeige Gelb <--- das bekomme ich einfach nicht hin.
Ich bin mir sicher das das geht aber ich denke Quer.
Wie soll ich das umsetzten ? Da wenn ich Join benutze den Verdacht habe das er meine Arrays nur ausgibt wenn auch in der user_data ein Eintrag besteht.
Aber es gibt doch mehr als 90% Felder die leer sind oder nicht meine Freunde. Die müssen doch auch mit ausgegeben werden.
Wäre nochmal für Tips, Tricks und Ideen für die Umsetzung sehr dankbar.
Denn bei mir ist irgendwie der Wurm drin.
Gruß Thomas