Hallo,

Ik kon het niet anders omschrijven in de titel, maar ik heb na veel gerommel een server scriptje die wat info laat zien van een gameserver.
Natuurlijk is het leuk om een afbeelding erbij te plaatsen, maar dat gedeelte wil niet lukken omdat ik het nog niet begrijp.

Het gegeven is dat het script de mapnaam weergeeft, die wil ik koppelen aan een afbeelding. Ik weet niet of dit te doen is, daarom vraag ik hier om hulp.

Een stukje code:

                       print("<h1>$data[hostname]</h1>");
		print("<h1>$data[gamename]</h1>");
		print("<h3>$data[gq_mapname]</h3>");

		print("$data[gq_mapname].'.jpg">);

		print("<h3>$data[gq_gametype]</h3>");
		print("<h3>$data[game_descr]</h3>");
		print("<h3>$data[gq_address]</h3>");


Zoals je ziet is dit een poging om een gelijknamig plaatje (zatar_wetlands.jpg) weer te geven. De output van gq_mapname is Zatar Wetlands, maar kan ook een andere map zijn. Ik heb het even gebruikt als voorbeeld.

Wie weet raad ?
Om een plaatje weer te geven zul je allereerst de <img> tag moeten gebruiken en daarbij verwijzen naar de locatie van de afbeelding. Het resultaat zou dus zoiets moeten zijn:

<img src="zatar_wetlands.jpg" />

Als de inhoud van $data['gq_mapname'] niet gelijk is aan de naam van de afbeelding, zul je dat natuurlijk eerst moeten wijzigen. Zie de verschillende string functies op php.net voor inspiratie (oa. strtolower() en str_replace()).
De server kent meerdere mappen, dus moet hij de bijpassende jpg gaan pakken, en als die er niet is een alternatief plaatje laten zien.

ik heb erboven een functie staan die ik misschien kan gebruiken ?

function print_table($data) {

    $gqs = array('gq_online', 'gq_address', 'gq_port', 'gq_prot', 'gq_type');
    

    if (!$data['gq_online']) {
        printf("");
        return;
    }


dus in plaats van gq_online gq_mapname maken. Maar hoe zeg ik dan in de print, of echo dat moet kiezen uit een plaatje met een naam die overeenkomt met de bestaande plaatjes ?

EDIT, net geprobeerd, maar omdat er veel servers in de config staan laat hij het plaatje achter elkaar zien.
Op een of andere manier zul je een relatie moeten leggen tussen de mapnaam en de naam van de afbeelding. Makkelijkst is natuurlijk om de naam van de afbeelding hetzelfde te kiezen als de mapnaam, maar je zou bijvoorbeeld ook een array in je PHP script kunnen gebruiken:
<?php
$map_plaatje = array (
'Map 1' => 'map_1.jpg',
'Map 2' => 'map_2.jpg',
etc...
);
?>
Vervolgens kun je aan de hand van de mapnaam die jij uit de database terug krijgt of er een bijbehorend plaatje is en zo ja het betreffende plaatje weergeven. Zo niet, kies je een standaard plaatje.
<?php
if(array_key_exisits($data['gq_mapname'], $map_plaatje))
{
$plaatje = $map_plaatje[$data['gq_mapname']];
}
else
{
$plaatje = 'standaard.jpg';
}

echo '<img src="'.$plaatje.'" />';
?>
?>
Ik begin te snappen wat je bedoelt.
Ik heb het stuk script geplaatst om te proberen, maar ik doe denk ik nog iets fout omdat ik geen 1 plaatje te zien krijg.

Zowel het script als plaatjes staan in de zelfde map overigens.
Ik heb 1 afbeelding met de naam standaard.jpg en 1 zatar_wetlands.jpg in die map staan.

Zo heb ik het nu in elkaar zitten:

function print_table($data) {

    $gqs = array('gq_online', 'gq_address', 'gq_port', 'gq_prot', 'gq_type');
    

    if (!$data['gq_online']) {
        printf("");
        return;
    }

    	print("<h1>$data[hostname]</h1>");
		print("<h1>$data[gamename]</h1>");
		print("<h3>$data[gq_mapname]</h3>");
		print("<h3>$data[gq_gametype]</h3>");
		print("<h3>$data[game_descr]</h3>");
		print("<h3>$data[gq_address]</h3>");

$map_plaatje = array (
    'zatar_wetlands' => 'zatar_wetlands.jpg',
    'air_strike' => 'air_strike.jpg',
);		

if(array_key_exisits($data['gq_mapname'], $map_plaatje))
{
    $plaatje = $map_plaatje[$data['gq_mapname']];
}
else
{
    $plaatje = 'standaard.jpg';
}

echo '<img src="'.$plaatje.'" />';

// End serverinfo data	
Je zei toch net
De output van gq_mapname is Zatar Wetlands
?

Dan moet je je bestandje gewoon Zatar Wetlands.jpg noemen en
<img src="'.$plaatje.'" />


Vervangen door
<img src="'.$plaatje.'.jpg" />


Edit: waar huur je je server een hoe heet ie? (bf2 ;) whaha )
Ik huur geen server want ik heb er zelf eentje :) idd BF2 onder andere.

Inmiddels ben ik wel ietsje wijzer, hij wil op bepaalde punten in het script domweg geen plaatje zetten. Ik heb hem even een gewone echo met image gegeven, en die op bepaalde plekken getest.

Kennelijk maakt het uit waar het plaatjes script komt, maar ik zou toch zweren dat dit kon op de plek waar het nu staat omdat ik daar de gegevens die verzameld zijn laat zien...

Hier dan maar het hele script, dan zien jullie misschien wat er niet goed gaat.

<?php
error_reporting(E_ALL);
require_once 'GameQ.php';

// Define your servers,
// see list.php for all supported games and identifiers.
$servers = array(
    ' ' => array('bf2', '69.12.98.120', 29900),

);



// Call the class, and add your servers.
$gq = new GameQ();
$gq->addServers($servers);

    
// You can optionally specify some settings
$gq->setOption('timeout', 200);


// You can optionally specify some output filters,
// these will be applied to the results obtained.
$gq->setFilter('normalise');
$gq->setFilter('sortplayers', 'gq_ping');

// Send requests, and parse the data
$results = $gq->requestData();

// Some functions to print the results
function print_results($results) {

    foreach ($results as $id => $data) {

        printf("<h2>%s</h2>\n", $id);
        print_table($data);
    }

}

function print_table($data) {

    $gqs = array('gq_online', 'gq_address', 'gq_port', 'gq_prot', 'gq_type');
    

    if (!$data['gq_online']) {
        printf("");
        return;
    }

    	print("<h1>$data[hostname]</h1>");
		print("<h1>$data[gamename]</h1>");
		print("<h3>$data[gq_mapname]</h3>");
		print("<h3>$data[gq_gametype]</h3>");
		print("<h3>$data[game_descr]</h3>");
		print("<h3>$data[gq_address]</h3>");

$map_plaatje = array (
    'zatar_wetlands' => 'zatar_wetlands.jpg',
    'Road To Jalalabad' => road_to_jalalabad.jpg',
);		

if(array_key_exisits($data['gq_mapname'], $map_plaatje))
{
    $plaatje = $map_plaatje[$data['gq_mapname']];
}
else
{
    $plaatje = 'standaard.jpg';
}

echo '<img src="'.$plaatje.'" />';

// End serverinfo data		

    foreach ($data as $key => $val) {

        if (is_array($val)) continue;

        $cls = empty($cls) ? ' class="uneven"' : '';

        if (substr($key, 0, 3) == 'gq_') {
            $kcls = (in_array($key, $gqs)) ? 'always' : 'normalise';
            $key = sprintf("<span class=\"key-%s\">%s</span>", $kcls, $key);
        }

        printf("", $cls, $key, $val);
    }

    print("");
	
    
}


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <title>GameQ - Example script</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<meta http-equiv="refresh" content="9">
        <style type="text/css">
            * {
                font-size: 9pt;
                font-family: Verdana, sans-serif;
            }
            h1 {
                font-size: 9pt;
            }
            h2 {
               
                font-size: 10pt;
            }
			h3{
				font-size:12px;
				font-weight:normal;
				margin:0;
			}
            table {
                border: 1px solid #000;
                background-color: #DDD;
                border-spacing:1px 1px;
            }
            table thead {
                font-weight: bold;
                background-color: #CCC;
            }
            table tr.uneven td {
                background-color:#FFF;
            }
            table td {
                padding: 5px 8px;
            }
            table tbody {
                background-color: #F9F9F9;
            }
            .note {
                color: #333;
                font-style:italic;
            }
            .key-always {
                color:red;
                font-weight:bold;
            }
            .key-normalise {
                color:red;
            }
</style>
    </head>
    <body>

<?php
    print_results($results);
	
?>
    </body>
</html>
op regel 61 ben je een ' vergeten
Hersteld, maar nog steeds geen afbeedlingen te zien. Wat ik vermoed is dat het extra stukje toch verkeerd staat.

Ik heb een printr gebruikt op de data aray gebruikt, maar daar komt niets uit... geen idee wat ik nu verder moet.

Reageren