Avatar billede jps2mt Nybegynder
09. juni 2003 - 20:47 Der er 20 kommentarer og
1 løsning

Problem med funktion der skal kalde sig selv

Hvad er det der er galt her?? Eller er det bare fordi det ikke kan lade sig gøre??

<script type="text/JavaScript">
function updater() {
<?
$userlist  = "<select name=\"sendto\">";
$userlist .= " <option value=\"0\">".$wordAll."</option>";

$result = mysql_query("SELECT ID,Brugernavn FROM users_in WHERE (Brugernavn <> 'peek' and Brugernavn <> '".$username."' and rum = '$rum')") or print mysql_error();
while ($row = mysql_fetch_array($result)) {
  $userlist = $userlist." <option value=\"".$row["ID"]."\">".$row["Brugernavn"]."</option>";
  If ($autocomplete == "") {
  $autocomplete = $row["Brugernavn"];
  } else {
  $autocomplete = $autocomplete.",".$row["Brugernavn"];
  }
}

$userlist .= "</select>";
?>
  statusHTML = '<?= $userlist; ?>';
  parent.opdaterSpan( statusHTML );

  setTimeout( 'updater()', 1000 );
}

updater();
</script>
Avatar billede roenving Novice
09. juni 2003 - 21:00 #1
-- du har en opdaterSpan-funktion defineret i et frameset-dokument eller andet moder-dokument ?-)
Avatar billede jps2mt Nybegynder
09. juni 2003 - 21:04 #2
Ja ja...Den funktion er defineret i det dokument, hvor denne hentes (som iframe, glemte jeg vist at sige)
Avatar billede roenving Novice
09. juni 2003 - 21:12 #3
Jeg skulle bare være sikker, for umiddelbart er der ikke noget galt med de små stumper javascript-kode, men du kan jo ikke få funktionen til at kalde din database op hvert sekund, så hvorfor lave den setTimeout ?-)

-- hvis du skal gøre det skal du udenom noget reload af siden eller noget ...
Avatar billede jps2mt Nybegynder
09. juni 2003 - 21:25 #4
Det er ligenetop for at undgå reload, og dermed kliklyden fra IE...

Det er nu heller ikke hvert sekund den skal opdatere når det virker, det var bare for at teste det...Havde regnet med hvert 15. eller 30. sekund...
Avatar billede roenving Novice
09. juni 2003 - 21:32 #5
Men den kode du har lagt, vil ved generering fra databasen optræde i din side som (ca.):

<script type="text/JavaScript">
function updater() {

  statusHTML = '<select name="sendto"><option value="76">Karl Børge</option><option value="77">Karen Elisabeth</option><option value="83">Peter</option><option value="98">Marianne</option><option value="105">Kalle</option></select>';
  parent.opdaterSpan( statusHTML );

  setTimeout( 'updater()', 1000 );
}

updater();
</script>

-- altså helt statisk -- og så er der jo ikke meget ide i at opdatere !-)
Avatar billede jps2mt Nybegynder
09. juni 2003 - 21:40 #6
Hmmm...Du siger noget...

Kan det så slet ikke lade sig gøre?? Altså at fjerne de grimme klik-lyde, mm. man går ind i indstillinger i browseren??
Avatar billede roenving Novice
09. juni 2003 - 21:52 #7
-- den der opdater-lyd, er jo noget som brugeren har sat i sin lyd-opsætning (og default er sat), så den tror jeg ikke det vil være muligt at komme udenom ...

-- forøvrigt ville der jo også være tale om en opdatering, hvis scriptet kaldte op til databasen, hvilket det så kun kan med reload e.l.

-- selvfølgelig kan man komme af med den, hvis man får brugeren til at installere en java-applet med ret store rettigheder (opkald til omverdenen uden bruger-kontrol ;-) ...

-- hvis du kigger lidt frem og tilbage i denne gruppe ( -- og i php, asp, html osv. hvor man kan tænkes at lave chatter ,-) vil du se, at mange muligheder har været afprøvet ;O)

-- men ingen har kunnet komme udenom klientens lydopsætning *-)
Avatar billede jps2mt Nybegynder
09. juni 2003 - 23:12 #8
*SUK* Med mindre man selvfølgelig laver den streaming i ASP.NET, hvilket jeg ik' har en klaphat forstand på (mindre end jeg har på JavaScript *G*)
Avatar billede roenving Novice
09. juni 2003 - 23:19 #9
Jaeh, hvad skal man sige !!!Boller fra Kohberg!!!
Avatar billede jps2mt Nybegynder
09. juni 2003 - 23:22 #10
Nej nej...Skrammel....
Avatar billede roenving Novice
09. juni 2003 - 23:24 #11
ja, eller bruger-beskyttelse, som er på tværs af det, man har brug for lige til den type applikation ...
Avatar billede jps2mt Nybegynder
09. juni 2003 - 23:27 #12
Heh...
Avatar billede =maddog= Nybegynder
10. juni 2003 - 11:49 #13
Det faktum at du poster PHP og JavaScript blandet sammen viser at du har misforstået de to sprogs respektive roller...
Så lige en gang til for Prins Knud. PHP er egentlig ikke andet end et streaming sprog. Du laver et script (program whatever) der eksekveres fra serveren. Når serveren bliver kaldt sender den en række bytes til browseren svarende til en HTML side. Og her stopper PHP's indflydelse. Når browseren modtager siden vil parseren sætte ind. Forudsat koden er validerbar er den rimelig hurtig, og den markerer scripts til JavaScript parseren. Denne vil så runtime kompile og køre dit JavaScript. Der er INTET overlap imellem eksekveringen af PHP og eksekveringen af JavaScript.
Hvis du skal have et JavaScript til at udføre et PHP script skal det gøres gennem ActiveX komponenter/Document.implementation og det vil ikke kunne bruges i alle browsere.
Avatar billede jps2mt Nybegynder
10. juni 2003 - 19:24 #14
I know, blot en tanketorst fra min side...
Avatar billede olebole Juniormester
11. juni 2003 - 01:53 #15
<ole>

Man kan nu sagtens slippe for lyden:

  window.location.reload(true)

/mvh
</bole>
Avatar billede jps2mt Nybegynder
11. juni 2003 - 16:05 #16
Får det ikke bare browseren til at opdatere konstant??

Den skal jo kun opdatere hvert x sekund...
Avatar billede roenving Novice
11. juni 2003 - 16:09 #17
setTimeout('window.location.reload(true)',1000*x)
Avatar billede olebole Juniormester
12. juni 2003 - 14:43 #18
I IE kan du loade et script ind med bestemte intervaller. Det kan så hente beskedder fra serveren og skrive dem til i et div:

<script type="text/JavaScript">
function swapScript() {
  var now = new Date();
  document.all["catScript"].src = "chat.php?s=" + now.getTime();
}
function writeChat(str) {
  document.getElementById("chatDiv").innerHTML += str;
  setTimeout("swapScript()", 10000);
}
window.onload = swapScript;
</script>

<script id="chatScript" type="text/JavaScript" src="chat.php"></script>

<div id="chatDiv"></div>

-----------------------------------------

Så kan indholdet i 'chat.php' se sådan noget lignende ud:

<?
// Hent beskeder fra databasen i MySQL-resultatet $res

while ($row=mysql_fetch_array($res)) {
  $str .= "<b>".$row["bruger"].":</b> ".$row["besked"]."<br>";
}

print "var str = '".$str."';\n";
print "writeChat(str);";
?>

/mvh
Avatar billede jps2mt Nybegynder
12. juni 2003 - 15:57 #19
Har fået det til at virke, takker mange gange :)
Avatar billede benzon Praktikant
26. august 2003 - 16:27 #20
chat.php er bare en fil der indeholder selve teksten og så sætter du resten direkte ind i selve den side hvor selve chatten skal være eller hvordan ? skal lige sørge for jeg er helt med nu hehe :)
Avatar billede benzon Praktikant
26. august 2003 - 16:45 #21
tror ikke lige scriptet funker som det skal hehehe :)
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