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.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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!
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.
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.
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
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.
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.
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 ?
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'];
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.
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.
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..?
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.
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:
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.
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.
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.
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.
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.
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..
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'];
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'];
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.
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'];
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
Okay, jeg lukker igen. Fandt lidt en tråd her på eksperten, der gav mig hjælpen og svaret.
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.