God aften
Jeg håber jeg er i den rette kategori, men nu til sagen.
Jeg har siddet og rodet med en kode i 1 uge nu.
Den skal opdatere uden man kan se den gør det, dvs. den skal ikke blinke som den normalt ville gøre med en <META HTTP-EQUIV=Refresh CONTENT="5; URL=blablabla">.
Jeg har en loginok side, hvor der er et link "Chat".
Klikker man på det link åbner der sig et nyt vindue, hvori der er 4 iframes.
1. Chatteksten
2. Topic
3. Rykkesystemet (som vi kigger på)
4. En skjult iframe
Her får i lige koden til rykkesystemet (Nummer 3 på listen)
----Denne kode må kun bruges offentligt når der er spurgt om lov----
<?php
session_start();
if (session_is_registered("Brugernavn")) {
include("../connect.php");
include("no-right.php");
$b = mysql_query("SELECT * FROM brugersystem WHERE Brugernavn = '$_SESSION[Brugernavn]'");
$bruger = mysql_fetch_array($b);
$bs = mysql_query("SELECT * FROM feltsystem WHERE brugernavn = '$_SESSION[Brugernavn]'");
$brugers = mysql_fetch_array($bs);
$room = mysql_query("SELECT * FROM rumsystem WHERE id = '$bruger[rum]'");
$rum = mysql_fetch_array($room);
$sys = mysql_query("SELECT * FROM feltsystem WHERE x = '1' && y = '1' && rum = '$bruger[rum]'");
$system = mysql_fetch_array($sys);
if($bruger[online] == "0"){
?>
<META HTTP-EQUIV=Refresh CONTENT="0; URL=kicklogud.php">
<?
}
else{
if($_GET['action'] == "move"){
mysql_query("UPDATE feltsystem SET x = '$_GET[x]', y = '$_GET[y]' WHERE brugernavn = '$_SESSION[Brugernavn]'");
}
?>
<HTML>
<BODY TOPMARGIN="0" RIGHTMARGIN="0" LEFTMARGIN="0">
<style type="text/css">
A:link {text-decoration: none; color: #FFFFFF;}
A:visited {text-decoration: none; color: #FFFFFF;}
A:active {text-decoration: none; color: #FFFFFF;}
A:hover {text-decoration: none; color: #FFFFFF;}
</style>
</HEAD>
<?php
// Init Start
$xc=0; //position x counter
$yc=0; // guess..
$xscale=10; // Antal brikker til henad ->
$yscale=5;
$found="none";
// Init Stop
echo('<table border="0" cellspacing="0" cellpadding="0">');
echo('<td cellspacing="0" cellpadding="0"');
//DEBUG
$bruger="$_GET[brugernavn]"; // Laves om til $_SESSION..
//DEBUG STOP
if(empty($_GET['action'])) { $_GET['action'] = "none"; }
// Opdater database med positioner;
if($_GET['action'] == 'move') {
$newx=$_GET['x'];
$newy=$_GET['y'];
mysql_query("UPDATE feltsystem SET x='$newx', y='$newy' WHERE brugernavn='$_SESSION[Brugernavn]'") or die(mysql_error());
}
// stop
//Y count
echo('<table border="0" cellspacing="0" cellpadding="1" height="10" width="70">
');
while($yc <> $yscale) {
$yc++;
echo('<tr>');
$xc=0;
while($xc < $xscale) {
$xc++;
$res=mysql_query("SELECT * FROM feltsystem WHERE rum = '$rum[id]'");
while($pos=mysql_fetch_array($res)) {
if($pos['y']==$yc && $pos['x']==$xc) {
echo("<td><img src=graphics/$pos[figur]>");
echo("<FONT FACE=Verdana SIZE=1 COLOR=#000000><a href=profil.php?navn=$pos[brugernavn] target=frame_text>$pos[brugernavn]</a>");
echo("</FONT>");
echo("</td>");
$xc++;
}
}
if($xc != $xscale) {
echo('<td width="70"><a href="?x='.$xc.'&y='.$yc.'&action=move" target="skjultupdate"><img src="graphics/layer.gif" border="0"></a></td>');
}
}
echo('</tr>');
}
echo('</td>');
echo('</table>');
echo('</table>');
?>
<?php } } ?>
Sådan her ser koden fra den skjulte iframe (nummer 4) ud:
<script>
Chattekst = "<? echo $tekst; ?>"
if (parent.frames['frame_text'].opdaterChattekst) {
parent.frames['frame_text'].opdaterChattekst(Chattekst);
}
</script>
Og her er koden fra chatteksten (nummer 1):
<script>
function opdaterChattekst(Chattekst) {
if (document.getElementById) document.getElementById("chatt").innerHTML = Chattekst;
else if (document.all) document.all["chatt"].innerHTML = Chattekst;
else if (document.layers) document["chattekst"].document.write(Chattekst);
}
</script>
</HEAD>
<BODY onLoad="parent.frames['system'].location.reload(true);">
<span id="chatt"><layer id="chattekst">
</layer></span>
Mit store spørgesmål er nu.....
Hvordan kan jeg få rykkesystemet (nummer 3) til at opdatere uden at blinke????
På forhånd mange tak for hjælpen!
[Redigeret d. 30/05-05 00:39:13 af Peter]