Mit Imagecopy mehrere Bilder in ein Bild kopieren?

Joe

Erfahrenes Mitglied
Hallo alle.
Musste den Thread nochmal ausgraben.

Ich hab zu meiner SQL-Tabelle noch 2 Spalten hinzugefügt MoveX,MoveY.
PHP:
{
$sql = "SELECT
			PosX,
			PosY,
			MoveX,
			MoveY,
			Username
		FROM
			User
		WHERE
			PosX >=$NearestKoordsX1 AND PosX < $NearestKoordsX2 AND
			PosY >=$NearestKoordsY1 AND PosY < $NearestKoordsY2";
	$result = $db->query($sql);
	if (!$result) {
		die ('Etwas stimmte mit dem Query nicht: '.$db->error);
	}
	while ($row = $result->fetch_assoc()) {
	$data[] = $row;
	}	 
}

Ich würde nun gerne wissen wie man diese nun In die DOM/CSS Tabelle einfügen kann.
Habe folgendesversucht (was natürlich nicht so funktioniert):
PHP:
//Einfügen der Daten ins XML
$doc=new DomDocument();
$doc->loadXML($grid);
foreach($data as $item)
{
  $node=$doc->
          documentElement->
            getElementsByTagName('div')->item($item['PosX']-$NearestKoordsX1)->
              getElementsByTagName('a')->item($item['PosY']-$NearestKoordsY1);		  
  $node->setAttribute('title',
                      ($item['Username']==$Username)
                        ?''.'Bunker von '.$item['Username'].': '.$item['PosX'].'/'.$item['PosY']
						|''.$item['Username'].': '.$item['MoveX'].'/'.$item['MoveY']						
                        :''.'Bunker von '.$item['Username'].': '.$item['PosX'].'/'.$item['PosY']);

  $node->setAttribute('href',
                      'main.php?section=erkunden');
  $node->setAttribute('class',
                      ($item['Username']==$Username)
                        ?'me'
						|'move'						
						:'enemy');

}
?>

<style type="text/css">

/*CSS fürs Grid*/
#grid{
  background: url(img/Map/<? echo "$SlicepointX/$SlicepointY"; ?>.jpeg) no-repeat;
  width:543px;
  height:432px;
}
#grid div{
  width:543px;
  height:10px;
}
#grid div a{

  display:block;
  width:10px;
  height:10px;
  float:left;
}

/*CSS zur markierung der Felder, hier könnte man statt Farben Sprites einsetzen*/
#grid a.me{
  background: url(img/list12x12-dot18.gif) no-repeat;
}
#grid a.move{
  background: url(img/pin25.gif) no-repeat;
}
#grid a.enemy{
  background: url(img/list12x12-dot19.gif) no-repeat;
}
</style>

<?php
//Ausgabe des Grids
echo $doc->saveHTML();
?>

An sich ist PHP oder HTML recht eingängig aber DOM-Element ist schon nen Zacken schwerer zu verstehen. Kann man den DOM-Teil des Skripts auch mit IF-Else Opeeratoren schreiben? Und wie könnte eine Schleife aussehen in der jede auch leere Tabellenzelle eine HREF bekommt?

Tut mir leid wenn ich gleich mit 3 Fragen nerve, aber die DOM JS- Programmierung hat sich mir noch nicht erschlossen.

Danke und Schönen Tag euch noch.

______________________________
Habs jetzt so umgeändert:
Code:
$doc=new DomDocument();
$doc->loadXML($grid);
foreach($data as $item)
{
  $node=$doc->
          documentElement->
            getElementsByTagName('div')->item(($item['PosX']-$NearestKoordsX1))->
              getElementsByTagName('a')->item(($item['PosY']-$NearestKoordsY1));		  
  $node->setAttribute('title',
                      ($item['Username']==$Username)
                        ?''.'Bunker von '.$item['Username'].': '.$item['PosX'].'/'.$item['PosY']
						:(($item['Username']==$Username) AND ($item['PosX'] != $item['MoveX']) AND ($item['PosY'] != $item['MoveY']))
						?''.$item['Username'].': '.$item['MoveX'].'/'.$item['MoveY']						
                        :''.'Bunker von '.$item['Username'].': '.$item['PosX'].'/'.$item['PosY']);
  $node->setAttribute('href',
                      'main.php?section=erkunden');
  $node->setAttribute('class',
                      ($item['Username']==$Username)
                        ?'me'
						:(($item['Username']==$Username) AND ($item['PosX'] != $item['MoveX']) AND ($item['PosY'] != $item['MoveY']))
						?'move'						
						:'enemy');
}

Allerdings wird jetzt anstatt des Images von 'class', 'me' das falsche Images von 'class', 'move' angezeigt.
Die Bedingung dürfte doch garnicht zutreffen?
 
Zuletzt bearbeitet:

Joe

Erfahrenes Mitglied
Ok ich habs irgendwie hinbekommen.
Da nicht alle Bewegungen von allen Spielern auf der Karte sichtbar sein müssen hab ich extra eine SQL-Abfrage in einem andren Array abgespeichert und dafür extra noch mal mittels einer DOM-elemente Zuordnung (sagt man das so?) das CSS-Grid/Tabelle erweitert.

Allerdings sieht das ganze jetzt recht unpraktisch aus. Es muss doch möglich sein das zusammen zu fassen****

PHP:
//das Grid, hardcodiert aus einer externen Datei
include 'grid.tpl';

//Einfügen der Daten ins XML
$doc=new DomDocument();
$doc->loadXML($grid);
foreach($data as $item)
{
  $node=$doc->
          documentElement->
            getElementsByTagName('div')->item(($item['PosX']-$NearestKoordsX1))->
              getElementsByTagName('a')->item(($item['PosY']-$NearestKoordsY1));          
  $node->setAttribute('title',
                      ($item['Username']==$Username)
                        ?''.'Bunker von '.$item['Username'].': '.$item['PosX'].'/'.$item['PosY']
                    /*    :(($item['Username']==$Username) AND ($item['PosX'] != $item['MoveX']) AND ($item['PosY'] != $item['MoveY']))
                        ?''.$item['Username'].': '.$item['MoveX'].'/'.$item['MoveY']    */                    
                        :''.'Bunker von '.$item['Username'].': '.$item['PosX'].'/'.$item['PosY']);
  $node->setAttribute('href',
                      'main.php?section=erkunden');
  $node->setAttribute('class',
                      ($item['Username']==$Username)
                        ?'me'
                    /*    :(($item['Username']==$Username) AND ($item['PosX'] != $item['MoveX']) AND ($item['PosY'] != $item['MoveY']))
                        ?'move'    */                    
                        :'enemy');
}
$sql = "SELECT
            Username,
            PosX,
            PosY,
            MoveX,
            MoveY
        FROM
            User
        WHERE
            Session =('".session_id()."')";
$result = $db->query($sql);
if (!$result) {
die ('Etwas stimmte mit dem Query nicht: '.$db->error);
}
    
    while ($row = $result->fetch_assoc()) {
    $data2[] = $row;
    }
foreach($data2 as $item)
{
  $node=$doc->
          documentElement->
            getElementsByTagName('div')->item(($item['MoveX']-$NearestKoordsX1))->
              getElementsByTagName('a')->item(($item['MoveY']-$NearestKoordsY1));          
  $node->setAttribute('title', (($item['Username']==$Username) AND ($item['PosX'] != $item['MoveX']) AND ($item['PosY'] != $item['MoveY']))
                        ?''.$item['Username'].': '.$item['MoveX'].'/'.$item['MoveY']
                        :''.'Bunker von '.$item['Username'].': '.$item['PosX'].'/'.$item['PosY']);                        
  $node->setAttribute('href',
                      'main.php?section=erkunden');
  $node->setAttribute('class', (($item['Username']==$Username) AND ($item['PosX'] != $item['MoveX']) AND ($item['PosY'] != $item['MoveY']))
                        ?'move'
                        :'me');
}

?>