Avatar billede nwn Nybegynder
28. oktober 2007 - 20:36 Der er 83 kommentarer og
1 løsning

Opdater uden blink med ajax, jeg har en guide, men forstår ikke

Hej

Jeg har kigget på http://www.eksperten.dk/spm/139721

Som mange nu har brugt til deres chat og har fået det til at virke, men jeg forstår simpelt hen ikke det de skriver, det er som om de skriver i kode sprog.

Jeg har inde i chat.php en iframe med src='chat-text.php' og iframen har name='chat'

Derud over har jeg også en skjult iframe inde i chat.php og den iframe har src='skjult-chat.php'

Jeg forstår næsten ingenting af det de skriver inde i det andet spørgsmål, hvor jeg har givet link højere oppe.

Jeg har nu givet information omkring mine iframes og hvad de hedder, hvis i skal bruge mere så bare sig til.

Hvis en kan "guide" mig, altså fortælle mig præcist hvad jeg skal gøre nu via http://www.eksperten.dk/spm/139721, så ville jeg blive MÆGTIG glad :D

200 point til den her får det til at virke hos mig.

Tusind tak på forhånd!
Avatar billede w13 Novice
28. oktober 2007 - 20:48 #1
Jeg ville nok lede efter en anden artikel (eller helt undlade at bruge Ajax, da det er svært at bruge ordentlig). Så vidt jeg kan se ved første øjekast, har den side intet at gøre med Ajax!
Avatar billede nwn Nybegynder
28. oktober 2007 - 20:58 #2
Okay, så er det ikke ajax de bruger i det spørgsmål jeg linkede til, men kan du ikke guide mig igennem det han skriver ?
Avatar billede w13 Novice
28. oktober 2007 - 21:04 #3
Så vidt jeg kan se, udfører de bare databasekaldene i en skjult IFrame. Det vil undgå opdatering af den side, brugeren ser. Man vil dog stadig høre opdateringskliklyden (i Internet Explorer), når chatbeskederne opdateres.
Avatar billede w13 Novice
28. oktober 2007 - 21:04 #4
Så spørgsmålet er, om du kan leve med en kliklyd hvert x. sekund, når nye beskeder indlæses i chatten.
Avatar billede w13 Novice
28. oktober 2007 - 21:08 #5
Det fungerer sådan her:

<iframe id="updatechat" src="updatechat.php" style="display:none"></iframe>

<script type="text/javascript">
setInterval("document.getElementById('updatechat').contentWindow.location.reload()",10000);
</script>

Følgende kode laver et iframe, som kører siden "updatechat.php". Iframet er dog sat til display:none, hvilket vil sige, at det ikke kan ses af brugeren.

Javascriptkoden kører så hvert 10.000. ms. og opdaterer IFramets side.

I updatechat.php skal du så med PHP hente nye chatbeskeder og overføre dem vha. JavaScript til hovedvinduet, hvor din chat ligger. Det kan jeg hjælpe med, hvis du stadig er interesseret.
Avatar billede nwn Nybegynder
28. oktober 2007 - 21:08 #6
Jep, det kan jeg sagtens leve med.

Folk kan jo også slå den lyd fra i deres kontrol panel, og det har jeg.
Hvis jeg fik det til at virke, kunne jeg evt skrive et lille tip på min side, om hvordan man fjerner det (;

Så hvis du har tid og lyst til at guide mig, er jeg klar
Avatar billede w13 Novice
28. oktober 2007 - 21:10 #7
Ja, eller de kan lære at bruge Firefox. :P

Forstår mit sidste tip?
Avatar billede nwn Nybegynder
28. oktober 2007 - 21:11 #8
Ja jeg er interessered, men jeg har ingen fil eller id som er updatechat

Jeg fatter hat af sådan noget, så du må gerne bruge mine informationer :D
Avatar billede nwn Nybegynder
28. oktober 2007 - 21:12 #9
OK, jeg indsætter nu følgende til chat.php:

<iframe id="updatechat" src="updatechat.php" style="display:none"></iframe>

<script type="text/javascript">
setInterval("document.getElementById('updatechat').contentWindow.location.reload()",10000);
</script>

Som det første
Avatar billede nwn Nybegynder
28. oktober 2007 - 21:14 #10
Jeg opretter nu en fil ved navn updatechat.php

Men jeg forstår ikke helt:

I updatechat.php skal du så med PHP hente nye chatbeskeder og overføre dem vha. JavaScript til hovedvinduet, hvor din chat ligger. Det kan jeg hjælpe med, hvis du stadig er interesseret.

Uddyb lige med nogle koder ;)
Avatar billede w13 Novice
28. oktober 2007 - 21:18 #11
Ok, vis mig lige, hvordan du ville hente chatbeskeder fra databasen. Viser du et bestemt antal poster fra databasen eller viser du alle?
Avatar billede nwn Nybegynder
28. oktober 2007 - 21:21 #12
Jeg henter via en sql query?

$foresp = mysql_query("SELECT * FROM bog ORDER BY nr DESC");
while($content = mysql_fetch_array($foresp)){

Der er ingen limit sat, så den viser alle?
Avatar billede w13 Novice
28. oktober 2007 - 21:31 #13
Okidoke.

Og hvor ser din HTML-kode ud, som viser en besked i chatten?
Avatar billede nwn Nybegynder
28. oktober 2007 - 21:38 #14
Altså det er chat-text der udskriver beskederne, og det gør jeg bare med en echo

echo $content["besked"];

Så det er ikke en html kode der udskriver beskederne...
Avatar billede w13 Novice
28. oktober 2007 - 21:42 #15
Men hvordan bliver de vist i chatten?

Bare:

Hej<br>
Jamen hej<br>
Hej igen<br>


Eller hvordan? Står der ikke, hvem der siger noget eller dato eller andet af den art?
Avatar billede nwn Nybegynder
28. oktober 2007 - 21:48 #16
Jo det ser sådan ud:

Navn: besked
Navn: besked
Navn: besked

Og navn samt : er med fed (<b>)
Avatar billede nwn Nybegynder
28. oktober 2007 - 21:49 #17
Men hvad skal du bruge det til :P ?


Jeg ville gerne have det så beskederne kom uden det blink ;)
Avatar billede w13 Novice
28. oktober 2007 - 22:11 #18
Ja, men jeg skal jo stadig indsætte det, så jeg skal vide, hvordan det skal sættes op.

Hvis vi siger, at du vil indsætte alle dine chatbeskeder i <div id="chatmessages"></div>

Jeg ville generere denne kode:

<script type="text/javascript">
arrMessage=new Array("besked1","besked2","besked3");
arrName=new Array("navn1","navn2","navn3");
for(i=0;i>arrMessage.length;i++){
container=parent.document.getElementById("chatmessages");
newElement=parent.document.createElement("span");
newElement.style.fontWeight="bold";
newElement.style.margin-right="5px";
newElement.appendChild(parent.document.createTextNode(arrName[i]);
container.appendChild(newElement);
newElement=parent.document.createElement("span");
newElement.appendChild(parent.document.createTextNode(arrMessage[i]);
container.appendChild(newElement);
container.appendChild("br");
}
</script>

Den er dog absolut utestet. Men bemærk 2. og 3. linje, hvor henholdsvis beskeder og navne skal indsættes.
Avatar billede nwn Nybegynder
28. oktober 2007 - 22:17 #19
Så jeg skal indsætte

<script type="text/javascript">
arrMessage=new Array("besked1","besked2","besked3");
arrName=new Array("navn1","navn2","navn3");
for(i=0;i>arrMessage.length;i++){
container=parent.document.getElementById("chatmessages");
newElement=parent.document.createElement("span");
newElement.style.fontWeight="bold";
newElement.style.margin-right="5px";
newElement.appendChild(parent.document.createTextNode(arrName[i]);
container.appendChild(newElement);
newElement=parent.document.createElement("span");
newElement.appendChild(parent.document.createTextNode(arrMessage[i]);
container.appendChild(newElement);
container.appendChild("br");
}
</script>

i updatechat.php

og hvor skal jeg placerer <div id="chatmessages"></div>??
Avatar billede nwn Nybegynder
28. oktober 2007 - 22:19 #20
Og hvad skal indsættes istedet for besked1, besked2, besked 3, navn1, navn2 og navn3?

Skal der bare smides variabler ind i stedet?
Avatar billede w13 Novice
28. oktober 2007 - 22:34 #21
Altså div'en skal ligge i hovedsiden, og den kommer til at indeholde alle beskederne. Så på sin vis er det chatten, eller i hvert fald det felt, som viser beskeder. Har du allerede bygget chatten i HTML? Hvis du f.eks. har den i en table kan du også bare lægge id="chatmessages" på den td-celle, som skal indeholde beskederne.

Og "besked1","besked2",osv. og "navn1","navn2",osv. skal indeholde henholdsvis beskederne og navnene fra databasen.

Så beskederne

"besked1","besked2"

og navnene

"navn1","navn2"

vil blive vist sådan her:

navn1: besked1
navn2: besked2
Avatar billede w13 Novice
28. oktober 2007 - 22:38 #22
Så <div id="chatmessages"></div> skal altså sættes på den originale side (hvor også IFramet ligger), der hvor beskederne skal vises. =)
Avatar billede nwn Nybegynder
28. oktober 2007 - 22:41 #23
Den skriver bare der opstod en fejl på siden nede i venstre hjørne...

Og burde jeg ikke smide <div id=chatmessages"> ind på chat-text.php og så beholde iframet på chat.php til chat-text.php så jeg kan udskifte navn1, besked1 osv med variabler ?
Avatar billede nwn Nybegynder
28. oktober 2007 - 22:41 #24
Smutter lige i bad, bare fortsæt med at skrive, er tilbage om lidt
Avatar billede w13 Novice
28. oktober 2007 - 22:44 #25
chat-text.php? Var det den, jeg kaldte updatechat.php?

Nej, den skal ligge på samme side som IFramet, på den side, hvor chatten skal kunne ses.
Avatar billede nwn Nybegynder
28. oktober 2007 - 22:58 #26
OK, men den skriver jo det der med at der opstod en fejl...

Jeg tror det ville være nemmere hvis du lige have filerne:

chat.php
-----------------------------------------------
<?php
session_start();

mysql_connect('192.168.1.3', 'webadmin', 'pass');
mysql_select_db("webadmin");

if($_SESSION['login'] == 'true'){
$user = $_SESSION[data];
$get = mysql_query("SELECT * FROM login WHERE user = '$user' LIMIT 1") or die(mysql_error());
$show = mysql_fetch_array($get);

$id = $_POST['id'];

echo "<!DOCTYPE html PUBLIC \"\">
<html>
<head>
    <title>Xhero.dk</title>
<link rel=\"stylesheet\" href=\"style.css\" type=\"text/css\">
<script type='text/javascript'>
function validering()
  {
  error = 0;

  tekst=(document.forms[0].besked.value).toLowerCase();
    if(tekst ==''){
    alert ('Du skal skrive en besked');
    error = 1;
}
if(error == 0)
document.forms[0].submit();   
}

</script>
<script type='text/javascript'>
setInterval(\"document.getElementById('updatechat').contentWindow.location.reload()\",1000);
</script>
</head>
<body>
<center>

<div style=\"margin-top:60px;\">

<table class=\"main\">&nbsp;&nbsp;<img src=\"images/header.png\">
        <tr>
            <td width=\"700\" height=\"25\" class=\"top-background\"></td></tr>
        <tr>
            <td width=\"700\" height=\"14\" class=\"menu\">
              <a href=\"index.php\" target=\"_self\">Nyheder</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link2</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"chat.php\" target=\"_self\">Chat</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link4</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link5</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link6</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link7</a>&nbsp;&nbsp;|&nbsp;</td></tr>
        <tr>
            <td width=\"700\" height=\"375\" class=\"background\">
              <table align=\"left\"><tr>
              <td width=\"143\" style=\"background-color: white;\" valign=\"top\"><br><br>
<table>
<tr><td width=\"36\" style=\"background-color: white;\"></td><td width=\"36\" style=\"background-color: white;\" valign=\"top\"><a href=\"profil.php\" target=\"_self\"><font color=\"#000000\">Profil</a><br><a href=\"indbakke.php\" target=\"_self\"><font color=\"#000000\">Post"; if (mysql_num_rows(mysql_query("SELECT `laest` FROM `post` WHERE `laest` = 'nej' AND `modtager` = '$_SESSION[user]'")) >0) {

echo "";
}
      echo "</a><br><a href=\"brugere.php\" target=\"_self\"><font color=\"#000000\">Brugere</a><br><a href=\"logud.php\" target=\"_self\"><font color=\"#000000\">Logud</a></td></tr></table><center><br><br><br><br><br><br><b>Reklame</b><br><br><!-- Kode start -->
<a href=\"http://ref.newbie.dk/reftop.php?refuser=electrical\"><img border=\"0\" alt=\"www.newbie.dk\" src=\"http://www.newbie.dk/topref.php?picid=125x125/125x125-statisk.gif\" /></a>
<!-- Kode slut --></td><td width=\"548\" style=\"background-color: white;\" valign=\"top\" align=\"center\">
<center><br /><iframe name='online' src='http://www.xhero.dk/Scripts/chat/option.php' width='500' height='11' frameborder='0' scrolling='no'></iframe><table border='1' style='border-collapse: collapse' bordercolor='#000000' width='500' height='300'><tr>
<td width='100%' height='100%' valign='top'>


<div id='chatmessages'></div></td></tr></table> // HER VISER DEN BESKEDERNE


<FORM METHOD='POST' ACTION='skriv.php' onsubmit='validering();return false;'><INPUT TYPE=hidden NAME=skriv VALUE=1><input type='hidden' name='user' value='$user'>
<input type'text' name='besked' id='besked' maxlength='125' size='88' style=' background-color: #ffffff; border-style: solid; border-width: 1px; font-family: verdana, arial, sans-serif; font-size: 10px; color: #000000; padding: 0px;'> <INPUT TYPE=submit VALUE='Send' style=' background-color: #ffffff; border-style: solid; border-width: 1px; font-family: verdana, arial, sans-serif; font-size: 10px; color: #000000; padding: 0px;'><br><img src='images/smiler.gif' style='cursor:pointer;' onclick=\"document.getElementById('besked').value += ':D';\">&nbsp;<img src='images/glad.gif' style='cursor:pointer;' onclick=\"document.getElementById('besked').value += ':)';\">&nbsp;<img src='images/blink.gif' style='cursor:pointer;' onclick=\"document.getElementById('besked').value += ';)';\">&nbsp;<img src='images/ujj.gif' style='cursor:pointer;' onclick=\"document.getElementById('besked').value += '=)';\">&nbsp;<img src='images/tunge.gif' style='cursor:pointer;' onclick=\"document.getElementById('besked').value += ':P';\">&nbsp;<img src='images/ked.gif' style='cursor:pointer;' onclick=\"document.getElementById('besked').value += ':(';\">&nbsp;<img src='images/sur.gif' style='cursor:pointer;' onclick=\"document.getElementById('besked').value += '=(';\"><iframe id='updatechat' src='updatechat.php' style='display:none'></iframe>";

if ($show['user'] == "admin") {

echo " - <a href='clean.php'><font color=black>[Reset]</a> <a href='start-chat.php'><font color=black>[Start]</a> <a href='stop-chat.php'><font color=black>[Stop]</a></form></td></tr></table></body></html>";
} else {

echo "</form></td></tr></table></body></html>";
}
} else {
?>
<html>
<head>
<script language="JavaScript">
alert('Denne funktion kræver du er logget ind');
window.location="index.php";
</script>
<?php
}
?>
--------------------------------------------
updatechat.php
-------------------------------------------
<script type="text/javascript">
arrMessage=new Array("besked1","besked2","besked3");
arrName=new Array("navn1","navn2","navn3");
for(i=0;i>arrMessage.length;i++){
container=parent.document.getElementById("chatmessages");
newElement=parent.document.createElement("span");
newElement.style.fontWeight="bold";
newElement.style.margin-right="5px";
newElement.appendChild(parent.document.createTextNode(arrName[i]);
container.appendChild(newElement);
newElement=parent.document.createElement("span");
newElement.appendChild(parent.document.createTextNode(arrMessage[i]);
container.appendChild(newElement);
container.appendChild("br");
}
</script>
---------------------------------------------

Så kan du lige sætte det sådan som du mener
Avatar billede w13 Novice
28. oktober 2007 - 23:12 #27
Hvad siger den, fejlen var, hvis du klikker på fejlmeddelelsen?
Avatar billede nwn Nybegynder
28. oktober 2007 - 23:19 #28
Linje: 8
Tegn: 30
Fejl: Der er en syntaks fejl
Kode: 0
URL-adresse: updatechat.php
Avatar billede w13 Novice
28. oktober 2007 - 23:24 #29
newElement.style.margin-right="5px";
skal være:
newElement.style.marginRight="5px";
=)
Avatar billede w13 Novice
28. oktober 2007 - 23:25 #30
Og det bør i øvrigt være i HTML:

<html>
<head></head>
<body>
<script type="text/javascript">
arrMessage=new Array("besked1","besked2","besked3");
arrName=new Array("navn1","navn2","navn3");
for(i=0;i>arrMessage.length;i++){
container=parent.document.getElementById("chatmessages");
newElement=parent.document.createElement("span");
newElement.style.fontWeight="bold";
newElement.style.marginRight="5px";
newElement.appendChild(parent.document.createTextNode(arrName[i]);
container.appendChild(newElement);
newElement=parent.document.createElement("span");
newElement.appendChild(parent.document.createTextNode(arrMessage[i]);
container.appendChild(newElement);
container.appendChild("br");
}
</script>
</body>
</html>
Avatar billede nwn Nybegynder
28. oktober 2007 - 23:27 #31
Den skriver udført nu, men med et error tegn på:

Linje: 9
Tegn: 66
Fejl: Tegnet ')' var ventet
Kode:0

Samme side som før
Avatar billede w13 Novice
28. oktober 2007 - 23:29 #32
Ja, der mangler et par ):

<html>
<head></head>
<body>
<script type="text/javascript">
arrMessage=new Array("besked1","besked2","besked3");
arrName=new Array("navn1","navn2","navn3");
for(i=0;i>arrMessage.length;i++){
container=parent.document.getElementById("chatmessages");
newElement=parent.document.createElement("span");
newElement.style.fontWeight="bold";
newElement.style.marginRight="5px";
newElement.appendChild(parent.document.createTextNode(arrName[i]));
container.appendChild(newElement);
newElement=parent.document.createElement("span");
newElement.appendChild(parent.document.createTextNode(arrMessage[i]));
container.appendChild(newElement);
container.appendChild("br");
}
</script>
</body>
</html>
Avatar billede nwn Nybegynder
28. oktober 2007 - 23:29 #33
Prøver :D
Avatar billede nwn Nybegynder
28. oktober 2007 - 23:30 #34
Sååådan, nu skriver den udført uden nogle error tegn.

Men der kommer ingen beskeder, jeg har ikke erstattet navn1 osv med noget.


Kan vi kigge videre imorgen, jeg skal tidligt op imorgen (; ?
Avatar billede w13 Novice
28. oktober 2007 - 23:37 #35
Ja, det er fint.
Hvad hvis du skriver præcis:

arrMessage=new Array("besked1","besked2","besked3");
arrName=new Array("navn1","navn2","navn3");
Avatar billede nwn Nybegynder
29. oktober 2007 - 18:19 #36
Hej igen :D

Det står der jo allerede.

Burde jeg ikke lave et udtræk af beskederne fra databasen, og derefter f.eks sætte det til variabler f.eks $besked = $content['besked']; og $navn = $content['navn'];

Og så burde det da være:

arrMessage=new Array("$besked");
arrName=new Array("$navn");
Avatar billede w13 Novice
29. oktober 2007 - 21:17 #37
Jo, men det er lettere, hvis vi først får det til at virke, når vi skriver beskederne manuelt ind i arrayet.

Skriver den ikke beskederne ind?
Avatar billede nwn Nybegynder
29. oktober 2007 - 22:11 #38
Nej, men det er jo også klart. Vi har jo ikke lavet en fil hvor den indsætter noget.

Derfor bliver vi vel nød til at lave det jeg skrev før.

Vi har lavet så den opdater beskederne, og udskriver via <div id="chatmessages">

Men den kan jo ikke vide hvilke beskeder der er blevet indsat, det kan du vel se ?
Avatar billede nwn Nybegynder
29. oktober 2007 - 22:12 #39
Den har ingen mulighed for at vide hvornår jeg trykker på knappen Skriv, det skal vi have lavet (;
Avatar billede w13 Novice
29. oktober 2007 - 22:33 #40
Jo, den burde sætte teksten ind i div'en med id'et chatmessages, hver gang IFramet loades. Har du det liggende et sted, hvor jeg kan se det?
Avatar billede nwn Nybegynder
30. oktober 2007 - 15:29 #41
Okay prøv lige og tænk dig som (:

Den viser intet, fordi der ikke er sat noget ind i div chatmessages, kig selv dette spørgsmål igennem?

Hvor laver vi måske en fil der bruges til at INDSÆTTE noget til div chatmessages?

Når man klikker på knappen Send besked lige nu, så kommer man bare til skriv.php som indsætter noget til databasen...
Avatar billede w13 Novice
30. oktober 2007 - 20:45 #42
Her:

<html>
<head></head>
<body>
<script type="text/javascript">
arrMessage=new Array("besked1","besked2","besked3");
arrName=new Array("navn1","navn2","navn3");
for(i=0;i>arrMessage.length;i++){
container=parent.document.getElementById("chatmessages");
newElement=parent.document.createElement("span");
newElement.style.fontWeight="bold";
newElement.style.marginRight="5px";
newElement.appendChild(parent.document.createTextNode(arrName[i]));
container.appendChild(newElement);
newElement=parent.document.createElement("span");
newElement.appendChild(parent.document.createTextNode(arrMessage[i]));
container.appendChild(newElement);
container.appendChild("br");
}
</script>
</body>
</html>

:D
Avatar billede nwn Nybegynder
30. oktober 2007 - 22:51 #43
Ah, okay vi gør som du siger, men den viser intet når man trykker send på knappen...

Den viser ingen beskeder mener jeg
Avatar billede w13 Novice
30. oktober 2007 - 23:58 #44
Som du siger, har vi ikke gjort noget ved send-knappen endnu. Men når IFramet bliver kørt, burde den indsætte:
navn1: besked1
navn2: besked2
navn3: besked3

Kan jeg evt. se siden via et link?

Eller alternativt sidernes koder, så jeg kan se, hvordan du gør? Burde fungere.
Avatar billede nwn Nybegynder
31. oktober 2007 - 15:50 #45
http://www.webadmin.frac.dk/admin

login med test og test, og vælg dernæst Chat i menuen.
Avatar billede w13 Novice
31. oktober 2007 - 16:53 #46
Hvor dum har jeg lov at være.. Et > tegn sku' være et < tegn:

<script type="text/javascript">
arrMessage=new Array("besked1","besked2","besked3");
arrName=new Array("navn1","navn2","navn3");
for(i=0;i<arrMessage.length;i++){
container=parent.document.getElementById("chatmessages");
newElement=parent.document.createElement("span");
newElement.style.fontWeight="bold";
newElement.style.marginRight="5px";
newElement.appendChild(parent.document.createTextNode(arrName[i]));
container.appendChild(newElement);
newElement=parent.document.createElement("span");
newElement.appendChild(parent.document.createTextNode(arrMessage[i]));
container.appendChild(newElement);
container.appendChild("br");
}
</script>
Avatar billede w13 Novice
31. oktober 2007 - 17:00 #47
Det gjorde, at koden aldrig blev afviklet, hvis ikke jeg ta'r meget fejl.
Avatar billede nwn Nybegynder
31. oktober 2007 - 20:21 #48
Ja nu sker der sgu noget (;

Og så "renser" den også automatisk chatten for personerne.

Den udskriver hvert sekund som jeg har stilt den til, besked1 navn1
osv.

Så det med besked2, besked3, navn2 og navn3 det skal væk, for så sætter vi vel bare en variable for navn1 og besked1.

Der skal doh lige en br mellem hver, og _kan_ jeg så sætte det via et iframe, så jeg sætter <div id=chatmessages></div> på en anden side ?
Avatar billede nwn Nybegynder
31. oktober 2007 - 20:23 #49
Der er vist stadig langvej :P

Det skal jo sættes til kun når en skriver en besked, og så i sidste ende kunne jeg også tænke mig at få mit PHP replace ind som jeg havde før, hvor den f.eks erstatter :) med en glad smiley (billede) og så vil jeg også gerne have det der på, så man kan ikke kan skrive med htmlkoder osv.
Avatar billede nwn Nybegynder
31. oktober 2007 - 20:29 #50
Når jeg i chat.php udskifter <div id="chatmessages"></div> og istedet indsætter et iframe til en side, hvor der så er <div id="chatmessages"></div>, så udskriver den fejl i chat.php

Hvordan kan jeg få chatten's tekst via et iframe..?
Avatar billede w13 Novice
31. oktober 2007 - 20:31 #51
Koden kan desværre ikke kun opdatere, når en af brugerne skriver en besked. Din eller min computer ved ikke, når en anden skriver. Så den må opdatere IFramet, når du trykker "Send besked", og ellers hvert 10. sekund.
Avatar billede w13 Novice
31. oktober 2007 - 20:32 #52
Og ja, den kan godt vise dem i et IFrame, men det bli'r lidt sværere. Men hvorfor ha' det i et IFrame? Du kan efterligne et IFrame sådan her:

<div id="chatmessages" style="width:400px;height:400px;overflow:scroll"></div>
Avatar billede w13 Novice
31. oktober 2007 - 20:44 #53
Og din PHP-kode i updatechat.php skal så generere disse 2 linjer:

arrMessage=new Array("besked1","besked2","besked3");
arrName=new Array("navn1","navn2","navn3");

Med data fra databasen, så det er de rigtige beskeder, der vises.
Avatar billede w13 Novice
31. oktober 2007 - 20:46 #54
Og grunden til, at den opdaterer lidt sjovt lige nu, er at der er en javascript-fejl. Jeg har slået til, at jeg vil se en meddelelse om hver JS-fejl, men du må have slået det fra på din computer. Grunden til fejlen er følgende linje i updatechat.php:

container.appendChild("br");

Som skal være:

container.appendChild(parent.document.createElement("br"));
Avatar billede w13 Novice
31. oktober 2007 - 20:46 #55
Så sku' den virke fint :)
Avatar billede nwn Nybegynder
31. oktober 2007 - 20:59 #56
Ok, jeg prøver sgu lige (;

Men jeg kan vel bare sætte den til at opdater hvert 3 sekund, men det skal jo ikke være sådan, at hvis personerne ikke har skrevet i 5 sekunder f.eks, så udskriver den, den samme besked igen.
Avatar billede nwn Nybegynder
31. oktober 2007 - 21:05 #57
Lige en anden ting, hvis beskederne bliver lange nok, så skal man jo til at scrolle med "side" scrolleren. Ved det gamle jeg havde med det lorte blink, der gik det der i virkeligheden skulle komme så langt over at man skulle scrolle, det kom bare nedenunder.
Avatar billede w13 Novice
31. oktober 2007 - 21:10 #58
Ja, men vi retter det bare til henadvejen. Vi skal have ordnet noget PHP for at den ikke skriver de samme beskeder igen.

Og det går desværre ikke hvert 3. sekund. For det første bruger det meget serverkraft at hente beskederne så ofte, så bare nogle få brugere ville få den til at gå ned hurtigt, for det andet bruger det meget CPU-kraft hos brugeren at indsætte beskederne, så brugerens pc ville gå ned hurtigt.

Derfor må man gå lidt på kompromis, så vi kan starte på 10 sekunder. Senere laver vi det sådan, at der kun hentes, hvis der er kommet nye beskeder siden sidst. Det sparer meget kraft.
Avatar billede nwn Nybegynder
31. oktober 2007 - 21:13 #59
Ok, jeg har lige prøvet at sætte margin-top og topmargin osv ind, men det ville ikke virke.

Kan du ikke gøre sådan i updatechat.php i javascriptet, så den skal placerer det øverst i venstre hjørne, altså margintop="0" og marginleft="0"
Avatar billede w13 Novice
31. oktober 2007 - 21:15 #60
Vi gør det bare i div'en:

<div id="chatmessages" style="text-align:left;width:400px;height:400px;overflow:scroll"></div>
Avatar billede nwn Nybegynder
31. oktober 2007 - 21:23 #61
Doh, havde glemt at den i forvejen var øverst, og fik ikke det margin til at virke, prøver sgu lige det der (;
Avatar billede nwn Nybegynder
31. oktober 2007 - 21:28 #62
Jeg smider bare en connection og en mysql query samt en while, så jeg kan sætte nogle variabler ind istedet for besked1 osv ?
Avatar billede nwn Nybegynder
31. oktober 2007 - 21:28 #63
Alså ind i updatechat.php
Avatar billede nwn Nybegynder
31. oktober 2007 - 21:40 #64
Nu kommer der ingen beskeder frem, efter jeg har ændret updatechat.php til:

<?php
session_start();

$db = mysql_connect("192.168.1.3", "webadmin", "pass");
mysql_select_db("webadmin", $db);

$foresp = mysql_query("SELECT * FROM bog ORDER BY nr DESC");
while($content = mysql_fetch_array($foresp)){
extract($content);

$content['besked'] = htmlentities($content['besked']);
$content['user'] = htmlentities($content['user']);

$content['besked'] = str_replace("[f:", "<b>", $content['besked']);
$content['besked'] = str_replace("[u:", "<u>", $content['besked']);
$content['besked'] = str_replace("[k:", "<i>", $content['besked']);
$content['besked'] = str_replace("]", "</b></u></i>", $content['besked']);
$content['besked'] = str_replace(":)", "<img src='images/glad.gif'>", $content['besked']);
$content['besked'] = str_replace(":(", "<img src='images/ked.gif'>", $content['besked']);
$content['besked'] = str_replace(":D", "<img src='images/smiler.gif'>", $content['besked']);
$content['besked'] = str_replace("=)", "<img src='images/ujj.gif'>", $content['besked']);
$content['besked'] = str_replace("=(", "<img src='images/sur.gif'>", $content['besked']);
$content['besked'] = str_replace(";)", "<img src='images/blink.gif'>", $content['besked']);
$content['besked'] = str_replace(":p", "<img src='images/tunge.gif'>", $content['besked']);
$content['besked'] = str_replace(":P", "<img src='images/tunge.gif'>", $content['besked']);

if($_SESSION['login'] == 'true') {
$user = $_SESSION[data];
$get = mysql_query("SELECT * FROM login WHERE user = '$user' LIMIT 1") or die(mysql_error());
$show = mysql_fetch_array($get);
$id = $_POST['id'];
echo "
<html>
<head></head>
<body>
<script type='text/javascript'>
arrMessage=new Array(\"$content['besked'];\",\"besked2\",\"besked3\");
arrName=new Array(\"$content['user'];\",\"navn2\",\"navn3\");
for(i=0;i<arrMessage.length;i++){
container=parent.document.getElementById(\"chatmessages\");
newElement=parent.document.createElement(\"span\");
newElement.style.fontWeight=\"bold\";
newElement.style.marginRight=\"5px\";
newElement.appendChild(parent.document.createTextNode(arrName[i]));
container.appendChild(newElement);
newElement=parent.document.createElement(\"span\");
newElement.appendChild(parent.document.createTextNode(arrMessage[i]));
container.appendChild(newElement);
container.appendChild(parent.document.createElement(\"br\"));
}
</script>
</body>
</html>
";
}
else
{
echo "<script language='JavaScript'>alert('Du skal være logget ind for at benytte denne funktion');window.location = 'index.php';";
}
?>

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

Og den skriver udført i chat.php uden nogle error på.

Hvad gør jeg forkert ?
Avatar billede w13 Novice
01. november 2007 - 01:12 #65
Når du er logget ind og prøver at køre: http://www.webadmin.frac.dk/admin/updatechat.php ser du hvorfor.
Avatar billede nwn Nybegynder
01. november 2007 - 22:17 #66
Ja, doh, havde ikke tjekket updatechat.php igennem ;)

Retter lige
Avatar billede nwn Nybegynder
03. november 2007 - 15:20 #67
Har ikke fået det rettet, men skal nok lige få det gjort.
Avatar billede nwn Nybegynder
03. november 2007 - 15:37 #68
Sådan, nu skriver den konstant:

admin 1234
admin 1234
admin 1234

admin 1234
admin 1234
admin 1234

osv

Så skal der vel laves så den ikke udskriver samme besked 2 eller flere gange, og på en måde en form for "limit" så hvis der er skrevet 100 beskeder, og en logger på chatten, så udskriver den alle de 100 beskeder før den udskriver de nye beskeder.
Avatar billede nwn Nybegynder
03. november 2007 - 15:37 #69
FEJL:

så udskriver den IKKE alle de 100 beskeder først
Avatar billede w13 Novice
03. november 2007 - 15:48 #70
Ja. Umiddelbart vil jeg foreslå, at du sidst på updatechat.php sætter en Session til nuværende tidspunkt. Og når du så henter fra databasen skal den kun hente poster, der er ældre end dette tidspunkt.

Nogen lunde sådan her:
----------------------
Er Session("chattime") blank, så sæt den til nuværende tidspunkt.

strSQL, som henter alle poster, hvor tidspunktet er ældre end Session("chattime").

Konstruer JavaScript-kode.

Sæt Session("chattime")=nuværende tidspunkt.
-----------------------
På denne måde bliver kun nye beskeder hentet.
Jeg kan dog ikke meget PHP, så håber, du har styr på det.
Avatar billede nwn Nybegynder
03. november 2007 - 18:08 #71
Ok det prøver jeg.

Kunne du ikke imellem tiden gøre så istedet for det bliver

navn besked så kommer der kolon så det bliver navn: besked
Avatar billede nwn Nybegynder
03. november 2007 - 18:50 #72
Der er dog også nogle andre problemer:

Chatten fejler og viser intet hvis man bruger en smiley, fordi at de erstattes med et billede.

Dernæst virker fed, kursiv og understreget tekst heller ikke, den skriver bare <b></b> eller <i></i> eller <u></u>

Og chatten bliver jo automatisk tømt når man besøger den på ny, og det er et problem når man skriver en besked, for når man så kommer til skriv.php (indsætter besked til database) og man så bliver smidt tilbage til chat.php så er chatten blank, og den skal til at udskrive dem igen..
Avatar billede w13 Novice
03. november 2007 - 18:52 #73
Prøv at skrive din nuværende updatechat.php her.
Avatar billede nwn Nybegynder
04. november 2007 - 15:42 #74
<?php
session_start();

$db = mysql_connect("192.168.1.3", "webadmin", "pass");
mysql_select_db("webadmin", $db);

if($_SESSION['login'] == 'true') {
$user = $_SESSION[data];
$get = mysql_query("SELECT * FROM login WHERE user = '$user' LIMIT 1") or die(mysql_error());
$foresp = mysql_query("SELECT * FROM bog ORDER BY nr DESC") or die(mysql_error());
$content = mysql_fetch_array($foresp);
extract($content);
$show = mysql_fetch_array($get);
$id = $_POST['id'];

$content['besked'] = htmlentities($content['besked']);
$content['user'] = htmlentities($content['user']);

$content['besked'] = str_replace("[f:", "<b>", $content['besked']);
$content['besked'] = str_replace("[u:", "<u>", $content['besked']);
$content['besked'] = str_replace("[k:", "<i>", $content['besked']);
$content['besked'] = str_replace("]", "</b></u></i>", $content['besked']);
$content['besked'] = str_replace(":)", "<img src='images/glad.gif'>", $content['besked']);
$content['besked'] = str_replace(":(", "<img src='images/ked.gif'>", $content['besked']);
$content['besked'] = str_replace(":D", "<img src='images/smiler.gif'>", $content['besked']);
$content['besked'] = str_replace("=)", "<img src='images/ujj.gif'>", $content['besked']);
$content['besked'] = str_replace("=(", "<img src='images/sur.gif'>", $content['besked']);
$content['besked'] = str_replace(";)", "<img src='images/blink.gif'>", $content['besked']);
$content['besked'] = str_replace(":p", "<img src='images/tunge.gif'>", $content['besked']);
$content['besked'] = str_replace(":P", "<img src='images/tunge.gif'>", $content['besked']);

echo "
<html>
<head></head>
<body>
<script type='text/javascript'>
arrMessage=new Array('$content[besked]','$content[besked]','$content[besked]');
arrName=new Array('$content[user]','$content[user]','$content[user]');
for(i=0;i<arrMessage.length;i++){
container=parent.document.getElementById('chatmessages');
newElement=parent.document.createElement('span');
newElement.style.fontWeight='bold';
newElement.style.marginRight='5px';
newElement.appendChild(parent.document.createTextNode(arrName[i]));
container.appendChild(newElement);
newElement=parent.document.createElement('span');
newElement.appendChild(parent.document.createTextNode(arrMessage[i]));
container.appendChild(newElement);
container.appendChild(parent.document.createElement('br'));
}
</script>
</body>
</html>
";
}
else
{
echo "<script language='JavaScript'>alert('Du skal være logget ind for at benytte denne funktion');window.location = 'index.php';";
}
?>
Avatar billede w13 Novice
04. november 2007 - 17:57 #75
Så gør vi det sådan her:
-------------------------
<?php
session_start();

$db = mysql_connect("192.168.1.3", "webadmin", "pass");
mysql_select_db("webadmin", $db);

if($_SESSION['login'] == 'true') {
$user = $_SESSION[data];
$get = mysql_query("SELECT * FROM login WHERE user = '$user' LIMIT 1") or die(mysql_error());
$foresp = mysql_query("SELECT * FROM bog ORDER BY nr DESC") or die(mysql_error());
$content = mysql_fetch_array($foresp);
extract($content);
$show = mysql_fetch_array($get);
$id = $_POST['id'];

$content['besked'] = htmlentities($content['besked']);
$content['user'] = htmlentities($content['user']);

$content['besked'] = str_replace("[f:", "<b>", $content['besked']);
$content['besked'] = str_replace("[u:", "<u>", $content['besked']);
$content['besked'] = str_replace("[k:", "<i>", $content['besked']);
$content['besked'] = str_replace("]", "</b></u></i>", $content['besked']);
$content['besked'] = str_replace(":)", "<img src='images/glad.gif'>", $content['besked']);
$content['besked'] = str_replace(":(", "<img src='images/ked.gif'>", $content['besked']);
$content['besked'] = str_replace(":D", "<img src='images/smiler.gif'>", $content['besked']);
$content['besked'] = str_replace("=)", "<img src='images/ujj.gif'>", $content['besked']);
$content['besked'] = str_replace("=(", "<img src='images/sur.gif'>", $content['besked']);
$content['besked'] = str_replace(";)", "<img src='images/blink.gif'>", $content['besked']);
$content['besked'] = str_replace(":p", "<img src='images/tunge.gif'>", $content['besked']);
$content['besked'] = str_replace(":P", "<img src='images/tunge.gif'>", $content['besked']);

echo "
<html>
<head></head>
<body>
<script type='text/javascript'>
arrMessage=new Array('$content[besked]','$content[besked]','$content[besked]');
arrName=new Array('$content[user]','$content[user]','$content[user]');
for(i=0;i<arrMessage.length;i++){
container=parent.document.getElementById('chatmessages');
newElement='<b>'+parent.document.createTextNode(arrName[i])+':</b> '+parent.document.createTextNode(arrMessage[i])+'<br>';
container.innerHTML=containter.innerHTML+newElement;
}
</script>
</body>
</html>
";
}
else
{
echo "<script language='JavaScript'>alert('Du skal være logget ind for at benytte denne funktion');window.location = 'index.php';";
}
?>
-------------------------------
Jeg bruger godt nok innerHTML her, da en fuldstændig DOM-løsning ville kræve ret meget.
Avatar billede nwn Nybegynder
04. november 2007 - 22:45 #76
Den udskriver fejl:

container er ikke denfineret
linie: 13
tegn: 1
Avatar billede w13 Novice
05. november 2007 - 13:30 #77
Burde ikke give fejl, men vi kan godt rette til sådan her:
----------------------------------------------------------
<?php
session_start();

$db = mysql_connect("192.168.1.3", "webadmin", "pass");
mysql_select_db("webadmin", $db);

if($_SESSION['login'] == 'true') {
$user = $_SESSION[data];
$get = mysql_query("SELECT * FROM login WHERE user = '$user' LIMIT 1") or die(mysql_error());
$foresp = mysql_query("SELECT * FROM bog ORDER BY nr DESC") or die(mysql_error());
$content = mysql_fetch_array($foresp);
extract($content);
$show = mysql_fetch_array($get);
$id = $_POST['id'];

$content['besked'] = htmlentities($content['besked']);
$content['user'] = htmlentities($content['user']);

$content['besked'] = str_replace("[f:", "<b>", $content['besked']);
$content['besked'] = str_replace("[u:", "<u>", $content['besked']);
$content['besked'] = str_replace("[k:", "<i>", $content['besked']);
$content['besked'] = str_replace("]", "</b></u></i>", $content['besked']);
$content['besked'] = str_replace(":)", "<img src='images/glad.gif'>", $content['besked']);
$content['besked'] = str_replace(":(", "<img src='images/ked.gif'>", $content['besked']);
$content['besked'] = str_replace(":D", "<img src='images/smiler.gif'>", $content['besked']);
$content['besked'] = str_replace("=)", "<img src='images/ujj.gif'>", $content['besked']);
$content['besked'] = str_replace("=(", "<img src='images/sur.gif'>", $content['besked']);
$content['besked'] = str_replace(";)", "<img src='images/blink.gif'>", $content['besked']);
$content['besked'] = str_replace(":p", "<img src='images/tunge.gif'>", $content['besked']);
$content['besked'] = str_replace(":P", "<img src='images/tunge.gif'>", $content['besked']);

echo "
<html>
<head></head>
<body>
<script type='text/javascript'>
arrMessage=new Array('$content[besked]','$content[besked]','$content[besked]');
arrName=new Array('$content[user]','$content[user]','$content[user]');
var container=parent.document.getElementById('chatmessages');
for(i=0;i<arrMessage.length;i++){
newElement='<b>'+parent.document.createTextNode(arrName[i])+':</b> '+parent.document.createTextNode(arrMessage[i])+'<br>';
container.innerHTML=containter.innerHTML+newElement;
}
</script>
</body>
</html>
";
}
else
{
echo "<script language='JavaScript'>alert('Du skal være logget ind for at benytte denne funktion');window.location = 'index.php';";
}
?>
------------------------------------------------
Men der er stadig PHP-fejl på updatechat.php
Avatar billede w13 Novice
06. november 2007 - 10:55 #78
Tror umiddelbart, fejlen ligger i php'en. Får du det til at spille?
Avatar billede nwn Nybegynder
10. november 2007 - 21:31 #79
Har sgu lidt travlt for tiden, skal nok lige få din sidste post prøvet
Avatar billede w13 Novice
11. november 2007 - 16:03 #80
Det er i orden. =)
Avatar billede nwn Nybegynder
24. november 2007 - 21:47 #81
Hej w13 vil lige hører om du stadig kigger på denne tråd?

Tjah, frac er nede fortiden, må håbe det snart kommer op (:
Avatar billede w13 Novice
25. november 2007 - 02:29 #82
Jeg er stadig med. =)
Avatar billede nwn Nybegynder
16. januar 2008 - 21:49 #83
Frac er endelig kommet op igen, hvis du stadig er her :P
Avatar billede nwn Nybegynder
06. februar 2008 - 22:38 #84
Okay, jeg lukker igen. Fandt lidt en tråd her på eksperten, der gav mig hjælpen og svaret.
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