Avatar billede xtr0 Nybegynder
20. marts 2003 - 14:50 Der er 13 kommentarer og
1 løsning

PHP i javascript

Skal have lavet php i denne her kode:

<script>
chatHTML = 'Ny tekst';
if (parent.frames['besked'].opdaterSpan) {
parent.frames['besked'].opdaterSpan(chatHTML);
setTimeout("self.location.reload(true)",10000);
}
</script>

Der hvor der står 'nytekst' skal der komme til at stå:

<?php
  include("config.php");
  mysql_connect($host,$user,$pass);
  mysql_select_db($db);
  $hent_dem = mysql_query("SELECT * FROM chatusers WHERE navn = '$s_navn'");
  while ($rowz = mysql_fetch_array ($hent_dem)) {
$rum123 = "$rowz[online_rum]";
$hent = mysql_query ("SELECT * FROM chatbeskeder WHERE rum='$rum123' AND (til='alle' OR til='$s_navn' OR fra='$s_navn') ORDER BY id DESC LIMIT 0,17");
while ($row = mysql_fetch_array ($hent)) {

if ($row[fra] == "<font color=\"#0099FF\">Chatten</font>") {
echo "<font color=\"$color\" face=\"Verdana\" size=\"2\"><img src=\"gfx/smil/$row[smil].gif\"><b>$row[fra]</b> $row[besked]</font><br>";
}
elseif ($row[til] == "alle") {
$color = "#000000";
echo "<font color=\"$color\" face=\"Verdana\" size=\"2\"><img src=\"gfx/smil/$row[smil].gif\"><b><a href=\"menu.php?link=showinfo&&navn=$row[fra]\" target=\"menu\">$row[fra]</a>:</b> $row[besked]</font><br>";

}
elseif($row[til] == "$s_navn") {
$color = "#ff0000";
echo"<font color=\"$color\" face=\"Verdana\" size=\"2\"><b>Privat fra $row[fra]:</b> $row[besked]</font><br>";
}
elseif($row[fra] == "$s_navn") {
$color = "#ff0000";
echo "<font color=\"$color\" face=\"Verdana\" size=\"2\"><b>Privat til $row[til]:</b> $row[besked]</font><br>";
}
}
}
?>

120 points til den som kan lave det så det virker ;)
Avatar billede avminarm Juniormester
20. marts 2003 - 15:01 #1
prøv med: ret alle steder hvor der står echo - ret echo til $var =  og ret så "nytekst" til "<?php echo $var; ?>
Avatar billede ahv Nybegynder
20. marts 2003 - 15:03 #2
Jeg ville lave det sådan her:

<?php
  include("config.php");
  mysql_connect($host,$user,$pass);
  mysql_select_db($db);
?>

<script>
chatHTML = '<?php
  $hent_dem = mysql_query("SELECT * FROM chatusers WHERE navn = '$s_navn'");
  while ($rowz = mysql_fetch_array ($hent_dem)) {
$rum123 = "$rowz[online_rum]";
$hent = mysql_query ("SELECT * FROM chatbeskeder WHERE rum='$rum123' AND (til='alle' OR til='$s_navn' OR fra='$s_navn') ORDER BY id DESC LIMIT 0,17");
while ($row = mysql_fetch_array ($hent)) {

if ($row[fra] == "<font color=\"#0099FF\">Chatten</font>") {
echo "<font color=\"$color\" face=\"Verdana\" size=\"2\"><img src=\"gfx/smil/$row[smil].gif\"><b>$row[fra]</b> $row[besked]</font><br>";
}
elseif ($row[til] == "alle") {
$color = "#000000";
echo "<font color=\"$color\" face=\"Verdana\" size=\"2\"><img src=\"gfx/smil/$row[smil].gif\"><b><a href=\"menu.php?link=showinfo&&navn=$row[fra]\" target=\"menu\">$row[fra]</a>:</b> $row[besked]</font><br>";

}
elseif($row[til] == "$s_navn") {
$color = "#ff0000";
echo"<font color=\"$color\" face=\"Verdana\" size=\"2\"><b>Privat fra $row[fra]:</b> $row[besked]</font><br>";
}
elseif($row[fra] == "$s_navn") {
$color = "#ff0000";
echo "<font color=\"$color\" face=\"Verdana\" size=\"2\"><b>Privat til $row[til]:</b> $row[besked]</font><br>";
}
}
}
?>';
if (parent.frames['besked'].opdaterSpan) {
parent.frames['besked'].opdaterSpan(chatHTML);
setTimeout("self.location.reload(true)",10000);
}
</script>


Sådan har jeg hvertfald gjort i et par chats jeg har lavet for andre, med præcis sammen script ;o) Blot med en anden PHP-kode.
Avatar billede ahv Nybegynder
20. marts 2003 - 15:05 #3
Jeg kan se i nogle gamke eksempler at det script er placeret i headet, altså:

<?php
  include("config.php");
  mysql_connect($host,$user,$pass);
  mysql_select_db($db);
?>

<html>
<head>
<script>
chatHTML = '<?php
  $hent_dem = mysql_query("SELECT * FROM chatusers WHERE navn = '$s_navn'");
  while ($rowz = mysql_fetch_array ($hent_dem)) {
$rum123 = "$rowz[online_rum]";
$hent = mysql_query ("SELECT * FROM chatbeskeder WHERE rum='$rum123' AND (til='alle' OR til='$s_navn' OR fra='$s_navn') ORDER BY id DESC LIMIT 0,17");
while ($row = mysql_fetch_array ($hent)) {

if ($row[fra] == "<font color=\"#0099FF\">Chatten</font>") {
echo "<font color=\"$color\" face=\"Verdana\" size=\"2\"><img src=\"gfx/smil/$row[smil].gif\"><b>$row[fra]</b> $row[besked]</font><br>";
}
elseif ($row[til] == "alle") {
$color = "#000000";
echo "<font color=\"$color\" face=\"Verdana\" size=\"2\"><img src=\"gfx/smil/$row[smil].gif\"><b><a href=\"menu.php?link=showinfo&&navn=$row[fra]\" target=\"menu\">$row[fra]</a>:</b> $row[besked]</font><br>";

}
elseif($row[til] == "$s_navn") {
$color = "#ff0000";
echo"<font color=\"$color\" face=\"Verdana\" size=\"2\"><b>Privat fra $row[fra]:</b> $row[besked]</font><br>";
}
elseif($row[fra] == "$s_navn") {
$color = "#ff0000";
echo "<font color=\"$color\" face=\"Verdana\" size=\"2\"><b>Privat til $row[til]:</b> $row[besked]</font><br>";
}
}
}
?>';
if (parent.frames['besked'].opdaterSpan) {
parent.frames['besked'].opdaterSpan(chatHTML);
setTimeout("self.location.reload(true)",10000);
}
</script>
</head>
<body>
</body>
</html>
Avatar billede xtr0 Nybegynder
20. marts 2003 - 17:42 #4
nu hedder min frame besked og min div er : <DIV id="chatHTML">Loader...</DIV>

Og i js har jeg den her:
if (parent.frames['besked'].opdaterSpan) {
parent.frames['besked'].opdaterSpan(chatHTML);
setTimeout("self.location.reload(true)",10000);
}

Men den smider det ikke ind i DIV'en?
Avatar billede ahv Nybegynder
20. marts 2003 - 17:56 #5
Den der henter ud fra databasen ville jeg lave sådan her:

<?php
  include("config.php");
  mysql_connect($host,$user,$pass);
  mysql_select_db($db);
?>

<html>
<head>
<script>
chatHTML = '<?php
  $hent_dem = mysql_query("SELECT * FROM chatusers WHERE navn = '$s_navn'");
  while ($rowz = mysql_fetch_array ($hent_dem)) {
$rum123 = "$rowz[online_rum]";
$hent = mysql_query ("SELECT * FROM chatbeskeder WHERE rum='$rum123' AND (til='alle' OR til='$s_navn' OR fra='$s_navn') ORDER BY id DESC LIMIT 0,17");
while ($row = mysql_fetch_array ($hent)) {

if ($row[fra] == "<font color=\"#0099FF\">Chatten</font>") {
echo "<font color=\"$color\" face=\"Verdana\" size=\"2\"><img src=\"gfx/smil/$row[smil].gif\"><b>$row[fra]</b> $row[besked]</font><br>";
}
elseif ($row[til] == "alle") {
$color = "#000000";
echo "<font color=\"$color\" face=\"Verdana\" size=\"2\"><img src=\"gfx/smil/$row[smil].gif\"><b><a href=\"menu.php?link=showinfo&&navn=$row[fra]\" target=\"menu\">$row[fra]</a>:</b> $row[besked]</font><br>";

}
elseif($row[til] == "$s_navn") {
$color = "#ff0000";
echo"<font color=\"$color\" face=\"Verdana\" size=\"2\"><b>Privat fra $row[fra]:</b> $row[besked]</font><br>";
}
elseif($row[fra] == "$s_navn") {
$color = "#ff0000";
echo "<font color=\"$color\" face=\"Verdana\" size=\"2\"><b>Privat til $row[til]:</b> $row[besked]</font><br>";
}
}
}
?>';
if (parent.frames['besked'].opdaterSpan) {
parent.frames['besked'].opdaterSpan(chatHTML);
setTimeout("self.location.reload(true)",10000);
}
</script>
</head>
<body>
</body>
</html>


Den der så viser beskederne ville jeg lave sådan her:

<HTML>
<HEAD>
<script>
function opdaterSpan(chatHTML) {
if (document.getElementById) document.getElementById("iespan").innerHTML = chatHTML;
else if (document.all) document.all["iespan"].innerHTML = chatHTML;
else if (document.layers) document["nslayer"].document.write(chatHTML);
}
</script>
</HEAD>
<BODY onLoad="parent.frames['chatindhold'].location.reload(true);">
<span id="iespan"><layer id="nslayer">
</layer></span>
</BODY>
</HTML>

Og dette skal der ikke rettes noget på.
Avatar billede xtr0 Nybegynder
20. marts 2003 - 18:33 #6
Okay nu virker det ;)
Jeg har nogle billeder den viser og de blinker.
Kan man gøre noget imod det?
Avatar billede ahv Nybegynder
20. marts 2003 - 18:54 #7
Andre har haft samme problem >>

Problemet er at den ikke når at loade alle billederne, en løsning ville være at sætte tiden op på hvornår lang tid der skal gå mellem hver opdatering eller sætte limit på hvor mange beskeder den må hive ud. f.eks. kan du hive de 20 sidste nye beskeder ud.

Andet kan jeg ikke komme i tanke om der er at gøre.
Avatar billede xtr0 Nybegynder
20. marts 2003 - 18:59 #8
har en limit på 17 men den blinker på billederne alligevel.
kan man ikke lave noget cache noget?
Avatar billede ahv Nybegynder
20. marts 2003 - 19:10 #9
Den burde selv chache siden, men problemet er at den når de første billeder, men den når simpelt hen ikke ned til de nederste før den skal opdatere igen.

Enten må du sætte limit ned, eller forbyde billeder, eller sidste men også kedelig udvej sætte opdateringstiden op.

Andre forslag har jeg ikke lige nu.
Avatar billede xtr0 Nybegynder
20. marts 2003 - 20:52 #10
Kan man ikke i ens besked viser placere denne her:

<script language="JavaScript">
var cache = new Array();
cache[1] = "";

function loadToCache(img) {
  cache[cache.length] = new Image();
  cache[cache.length].src = img;
}

function loadImages() {
  loadToCache("image1.gif");
  loadToCache("image2.gif");
  // osv.
}
</script>

<body onload="loadImages();">
Avatar billede ahv Nybegynder
20. marts 2003 - 21:05 #11
Du kan jo prøve ;o)

<HTML>
<HEAD>
<script>
function opdaterSpan(chatHTML) {
if (document.getElementById) document.getElementById("iespan").innerHTML = chatHTML;
else if (document.all) document.all["iespan"].innerHTML = chatHTML;
else if (document.layers) document["nslayer"].document.write(chatHTML);
}
</script>
<script language="JavaScript">
var cache = new Array();
cache[1] = "";

function loadToCache(img) {
  cache[cache.length] = new Image();
  cache[cache.length].src = img;
}

function loadImages() {
  loadToCache("image1.gif");
  loadToCache("image2.gif");
  // osv.
}
</script>
</HEAD>
<BODY onLoad="parent.frames['chatindhold'].location.reload(true);loadImages();">
<span id="iespan"><layer id="nslayer">
</layer></span>
</BODY>
</HTML>
Avatar billede xtr0 Nybegynder
21. marts 2003 - 15:35 #12
Hm... Næ det virkede ikke.

Hvad gør parent.frames['chatindhold'].location.reload(true); ???
Avatar billede ahv Nybegynder
21. marts 2003 - 16:13 #13
Reloader siden vil jeg skyde på, jeg er ikke 100% inde i javascript.
Det eneste jeg ved er hvordan du løser problemerne med din php-kode ;o)
Men hvis billederne stadig blinker så må du jo som sagt, sætte limit ned eller refresh tiden op eller en kobination af disse.
Avatar billede ahv Nybegynder
23. marts 2003 - 13:04 #14
Jeg kan tilføje her til sidst at en anden jeg hjalp for 1-3 uger siden her på Eksperten brugte præcis samme script, og havde også samme fejl med billederne der blinkede. Hans udvej blev at afskaffe muligheden for billeder.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester