Het wil op een of andere manier niet lukken, ik heb in een php script een aantal div's staan waarvan er een is met een hyperlink. Dat werkt op zich goed maar hij opent de pagina op volle grootte, en laat ik dat nu niet willen...

<div>

<a href='nieuwepagina.php' target='_blank' onclick='window.open('nieuwepagina.php','jevensternaam',
'width=610,height=360,scrollbars=no,statusbar=no,menubar=no,toolbar=no,directories=no,status=no'); >More Info</a>


</div>

Wat doe ik nou toch fout ?
nee dat niet, maar hij geeft dus die pagina maximaal weer terwijl ik dat niet wil.

Zet ik de regel onder aan het script dan werkt het wel, echter zit ik dan weer met de opmaak omdat alle info in een div weer gegegeven moet worden.
Ik denk dat het zo wel lukt:
<div>
<a href="javascript:window.open('./nieuwepagina.php','vensternaam','width=610,height=360,scrollbars=no,statusbar=no,menubar=no,toolbar=no,directories=no,status=no')">More Info</a>
</div>
Gaat nog niet helemaal lekker. Als id de regels zo in de hoofd div zet bij alle andere info dan krijg ik een php fout:
parse error, unexpected T_STRING, expecting ',' or ';' in die regel.

Verander ik de " naar een ' dan geeft hij hem weer, maar zodra ik op de link klik krijg ik een fout op de pagina in IE omdat de syntax niet klopt.

Onder in mijn info balk zie ik als ik op de link ga staan javascript:windo.open(

hij open dus dan niet de pagina.
Ik weet natuurlijk niet hoe je totale script eruit ziet.
Het lijkt me een conflict m.b.t. enkele en dubbele quotes.

Ik neem aan dat je echo't met enkele quotes. Dan moet je dus de enkele quotes in het JavaScript escapen.
Hier voor de duidelijkheid het script:

Een stuk naar beneden staat EDIT, dit is het gedeelte waar het om gaat.
Regel 48, dat stuk er boven dus.

<?php

if(isset($_GET["debug"])) {
error_reporting(E_ALL);
}

if(isset($_GET["url"])) {
include_once("../gsQuery.php");

$gameserver=gsQuery::unserializeFromURL($_GET["url"]);
if(!$gameserver) {
echo "";
}
} else {
$gameserver=queryServer($_GET["host"], $_GET["queryport"], $_GET["protocol"]);
}
if(!$gameserver) { echo ""; exit(0); }
basicInfo($gameserver);
?>
<?php

function queryServer($address, $port, $protocol)
{
include_once("../gsQuery.php");

if(!$address && !$port && !$protocol) {
echo "No parameters\n";
return FALSE;
}

$gameserver=gsQuery::createInstance($protocol, $address, $port);
if(!$gameserver) {
echo "protocol wrong\n";
return FALSE;
}

if(!$gameserver->query_server(TRUE, TRUE)) { // fetch everything

// query was not succesful, dumping some debug info
// <table><caption>SERVER ONLINE</caption>
// HIER KOMT DE ONLINE BOODSCHAP

echo "<div class='jtext1' id='sinfo1'>

<div class='jtext2' id='title'>Gameserver Status:</div>
<div class='jtext3' id='foto'><img src='sc-moh.gif' // alt='1' /></div>
<div class='jtext4' id='inform'>Medal of Honor -- 1.11<br />Spearhead -- 2.15<br />Breakthrough -- 2.4<br /><img src='offline.jpg' // alt='2' /></div>

</div>";

///
return FALSE;
}

return $gameserver;
}


function basicInfo($gameserver)
{
echo "<div class='jtext1' id='sinfo1'>

<div class='jtext2' id='title'>[W32.] Gameserver Status:</div>
<div class='jtext3' id='foto'><img src='sc-moh.gif' // alt='1' /></div>
<div class='jtext4' id='inform'>Medal of Honor -- 1.11<br />Spearhead -- 2.15<br />Breakthrough -- 2.4<br /><img src='online.jpg' // alt='2' /></div>

EDIT bij dit bovenste stukje script moet
dan die hyperlink komen met een vaste pagina grootte.


</div>";

// show mapname/maptitle
echo "".htmlentities($gameserver->mapname);
if($gameserver->maptitle) {
echo "/ ".htmlentities($gameserver->maptitle)."</td></tr>\n";
} else {
echo "";
}

// show gametype


echo "";
}


/**
* @brief dumps all available player infos in a table
* @param gameserver the gameserver to use the data from
*/
function players($gameserver)
{
// check if there are players
if(!count($gameserver->players)) {
echo "No Players";
return FALSE;
}

$result="<table><caption>Players</caption>\n<tr>";

// create table header
foreach($gameserver->playerkeys as $key => $value) {
if($value) {
$result.="<th>".$key."</th>\n";
}
}

$result.="</tr>";

// foreach player
foreach($gameserver->players as $player) {
$result.="<tr>";
// dump all available infos
foreach($gameserver->playerkeys as $key => $value) {
if($value) {
$result.="<td class=\"player".htmlentities($key)."\">".$gameserver->htmlize($player[$key])."</td>\n";
}
}
$result.="</tr>\n";
}
$result.="</table>";
echo "$result";
}

/**
* @brief dumps all rules in a table
* @param gameserver the gameserver to use the rules from
*/
function rules($gameserver)
{
if(!count($gameserver->rules)) {
echo "No rules";
return FALSE;
}

$result="<table><caption>Rules</caption><tr><th>Key</th><th>Value</th></tr>\n";

// dump all rules
foreach($gameserver->rules as $key => $value) {
$result.="<tr><td class=\"rulekey\">".$key."</td><td>".$value."</td></tr>\n";
}

$result.="</table>";
echo $result;
}

/**
* @brief dumps some debug infos
*
* @param queryString the raw query string
* @return a hash with all found values
*/
function debugInfo($gameserver)
{
echo "<table><caption>Debug</caption><tr><th>That was done</th><th>That happened</th></tr>\n";
foreach ($gameserver->debug as $key => $value) {
if(!is_array($value)) {
echo "<tr><td>".htmlentities($key)."</td><td>".htmlentities($value)."</td></tr>\n";
}
}
echo "</table>";
}

?>
<link href="w32.css" rel="stylesheet" type="text/css" />

Je houdt je dus niet aan de vuistregels:
- php met enkele quotes
- html met dubbele quotes

"Nou ja, als het maar werk" is ook een opvatting.

Je echo't dus met dubbele quotes. Dan moeten andere dubbele quotes daarbinnen ge-escaped worden.
Dus het is beter alles te vervangen door enkele quotes ?
Ik dacht toch echt dat ik het goed deed, :S

Reageren