11. januar 2004 - 18:24Der er
19 kommentarer og 1 løsning
php i javascript
Hej alle sammen...!
Jeg har denne del af et system hvor der php koden vises i et <div>:
<span id="iespan"><layer id="nslayer"> Opdatering af chatten sker for tiden!<BR>Vi regner med at kunne være klar i løbet af de næste par dage!!! </layer></span>
men det virker ikke :S ved i hvorfor?
<script> chatHTML = '<?php include("db.php"); $result = mysql_query("select * from online where rum = 'stener'") or die(mysql_error()); while ($row = mysql_fetch_array($result)) {
?>'; //Denne variabel udfyldes med PHP if (parent.frames['chatten'].opdaterSpan) { parent.frames['chatten'].opdaterSpan(chatHTML); setTimeout("self.location.reload(true)",3000); } </script>
Tja først og fremmest må jeg forvente du har en frame der hedder chatindhold i dit fulde script - ellers virker det i hvert fald ikke.
Jeg har også fundet ud af hvad opdaterSpan var - det var nok lidt en tanketorsk, for selvfølgelig kan man jo gøre sådan. Havde ikke lige tænkt på det ;-)
Nå, men den direkte fejl er i hvert fald at din chatHTML streng har linieskift i selve koden - og det må man ikke i javascript. Dvs: <script type="text/javascript"> streng = "Denne streng er på to linjer"; // Dette er ulovligt i javascript </script>
Så du bliver nød til at omrokkere i din php-kode for at få den del til at virke.
1: Okay, men i den kode du viste mig, så skriver du: parent.frames['chatindhold'].location.reload(true); -- Det var bare derfor ;-)
2: Som sagt kan du sørge for at din javascript variabel er på én linie. Dvs. at dette skal stå på en enkelt linie: echo" <div id=\"userdiv\" style=\"width:45; height:60; position:absolute; z-index:2; top: $x; left: $y;\"> <img height=60 width=45 id=\"userfigure\" src=\"$row[figur].gif\"> <center><b><span style=\"color:$row[tekstfarve];filter:dropshadow(color:black,offy:1,offx:1);width:100%\">$row[brugernavn]</span></b></center></div> ";
igen er det chatHTML strengen den er gal med. Prøv lige at skrive sådan her i skjultFrame.php: <script type="text/javascript"> <?php include("db.php"); $result = mysql_query("select * from online where rum = 'stener'") or die(mysql_error()); while ($row = mysql_fetch_array($result)) {
Du har heller ikke rettet chattet.php der hvor der står: <body onLoad="parent.frames['chatindhold'].location.reload(true);"> da der jo skal være en ramme der hedder chatindhold for at det skal virke... Prøv at forklar hvad det er for en side du gerne vil have reloadet, så skal jeg nok hjælpe med det :-)
skal jeg rette <body onLoad="parent.frames['chatindhold'].location.reload(true);"> til <body onLoad="parent.frames['chatten'].location.reload(true);"> ???
jeg rettet <BODY BGCOLOR="#666699" onLoad="parent.frames['skjultFrame'].location.reload(true);"> og lavet skjultFrame om til det du sagde... men nu viser den kun i figur
det rigtigt - så skal du gøre sådan her (ikke testet): <?php include("db.php"); $chatHTML = ""; $result = mysql_query("select * from online where rum = 'stener'") or die(mysql_error()); while ($row = mysql_fetch_array($result)) {
hmm... jo jeg har hørt at man kan gøre det nemmere og smartere, men ved ikke hvordan ved i?
Synes godt om
Ny brugerNybegynder
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.