Avatar billede snuseren.dk Nybegynder
29. marts 2003 - 15:31 Der er 25 kommentarer og
1 løsning

Chat

hej,

hvordan er den bedste måde at lave en chat på, så den IKKE opdatere hvert 5. sekund eller sådan noget, så man slipper for at den siger "klik" lyde hele tiden, og blinker.

på forhånd tak :o)

ps. ved godt det er spurgt om mange gange, men nu prøver jeg alligevel.


MVH
Anders
Avatar billede ahv Nybegynder
29. marts 2003 - 15:39 #1
Istedet for jeg skriver det hele igen ;o)
Så vil jeg henvise til:

http://www.eksperten.dk/spm/331217


Ellers har olebole også lavet et skelet til en sådan chat.
Avatar billede ahv Nybegynder
29. marts 2003 - 15:42 #2
Opdager lige hele koden ikke var i det spm. Så er kommer det hele ;o)


chatindex.php


<frameset rows="*,20%,0,0" frameborder="no" border="0" framespacing="0">
<frame name="chatvis" src="chatvis.php" scrolling="yes" noresize style="border-bottom: #000000 1px solid;">
<frame name="chatsender" src="chatsender.php" scrolling="yes" noresize>
<frame name="chatskjult" scrolling="no" noresize src="chatskjult.php">
<frame name="chatskjultind" scrolling="no" noresize src="chatskjultind.php">
</frameset>


chatsender.php


<form action="chatskjultind.php" method="post" name="form" target="chatskjultind" onsubmit="setTimeout('document.form.reset()',200);return true;">
Besked: <input type="text" name="besked" size="30" maxlength="255">
<input type="submit" name="send" value="Send">
</form>


chatskjult.php


<html>
<head>
<script>

chatHTML = '<?php
$query = mysql_query("SELECT $tabelchat.besked, $tabelprofil.id, $tabelprofil.brugernavn FROM $tabelchat, $tabelprofil WHERE $tabelchat.beskedfraid = $tabelprofil.id order by beskedid desc limit 30") or die(mysql_error());
while($row = mysql_fetch_array($query)) {
echo "<a href=profilvis.php?id=$row[id] target=$targetprofil>$row[brugernavn]</a>: ";
echo $row[besked]."<br>";
}
?>';
if (parent.frames['chatvis'].opdaterSpan) {
parent.frames['chatvis'].opdaterSpan(chatHTML);
setTimeout("self.location.reload(true)",10000);
}
</script>
</head>
<body>
</body>
</html>


chatskjultind.php

Her skal du indsætte informationer i databasen, f.eks. noget ala
$_POST[besked] = strip_tags($_POST[besked]);
$_POST[besked] = addslashes($_POST[besked]);

$query = mysql_query("select id from $tabelprofil where id='$_SESSION[id]'") or die(mysql_error());
while ($row = mysql_fetch_array($query)) {
$id = $row[id];
}

$insertSQL = "insert into tabelchat (beskedfraid, besked, skrevet)
              values ('$id', '$_POST[besked]', now())";
mysql_query($insertSQL);



chatvis.php


<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>
Avatar billede snuseren.dk Nybegynder
29. marts 2003 - 15:45 #3
takker, men har du ikke en sql fil, til oprettelse af databasen ??
Avatar billede ahv Nybegynder
29. marts 2003 - 15:45 #4
Her kan du måske bedre overskue det:

http://www.ahv.starthotel.dk/vis.phps
Avatar billede snuseren.dk Nybegynder
29. marts 2003 - 15:46 #5
jeg har prøvet oleboles, men kan ikke få den til at virke. Får sådan en session fejl. :o(
Avatar billede ahv Nybegynder
29. marts 2003 - 15:46 #6
tabelskukturen i din database er helt op til dig, hvis du følger mit link i sidst postede kommentar, så kan du se at alt php indsættelse og udtræk fra databasen er noget du selv skal skrive, så du bestemmer selv hvordan det skal se ud.
Avatar billede snuseren.dk Nybegynder
29. marts 2003 - 15:47 #7
oki, tester lige om det virker.!
Avatar billede ahv Nybegynder
29. marts 2003 - 15:48 #8
Du skal bare være opmærksom på at ind login side osv. skal du selv lave, mit er blot skeletet til en chatkode der ikke blinker hver gang den opdatere.
Avatar billede snuseren.dk Nybegynder
29. marts 2003 - 17:29 #9
hej ahv, jeg har næsten fået det til at virke, ptoblemet er bare at den kun viser en chat besked ad gangen.

chatskjult:

<?php
    mysql_connect("localhost", "localhost", "xzkp23xi");
    mysql_select_db("nychat");
    $resultat = mysql_query("select * from tekst");
    while($row = mysql_fetch_array($resultat)){
    #Skriver det ud der står i "kollone navn" ud.
    $beskeder = $row["tekst"];
} #Slutter løkken
?>

<html>
<head>
<script>

chatHTML = "<?php echo $beskeder ?>";
if (parent.frames['chatvis'].opdaterSpan) {
parent.frames['chatvis'].opdaterSpan(chatHTML);
setTimeout("self.location.reload(true)",10000);
}
</script>
</head>
<body>
</body>
</html>
Avatar billede ahv Nybegynder
29. marts 2003 - 17:33 #10
Prøv med:

<html>
<head>
<script>

<?php
    mysql_connect("localhost", "localhost", "xzkp23xi");
    mysql_select_db("nychat");
?>

<html>
<head>
<script>

chatHTML = '<?php   
$resultat = mysql_query("select * from tekst");
while($row = mysql_fetch_array($resultat)){
echo $row['tekst'];
}
?>';
if (parent.frames['chatvis'].opdaterSpan) {
parent.frames['chatvis'].opdaterSpan(chatHTML);
setTimeout("self.location.reload(true)",10000);
}
</script>
</head>
<body>
</body>
</html>
Avatar billede snuseren.dk Nybegynder
29. marts 2003 - 17:35 #11
så kommer der ikke noget op på skærmen overhovedet efter man har indtastet noi :o(
Avatar billede ahv Nybegynder
29. marts 2003 - 17:37 #12
Hvad hvis du indsætter noget direkte i databasen viser den så dem alle i chatten?
Avatar billede snuseren.dk Nybegynder
29. marts 2003 - 17:39 #13
nej, jeg tror jeg har over 20 poster i databasen, men den viser kun den nyeste, med det script jeg postede ovenfor.
Avatar billede ahv Nybegynder
29. marts 2003 - 17:41 #14
Så prøv lige det jeg postede ?
Avatar billede snuseren.dk Nybegynder
29. marts 2003 - 17:41 #15
det har jeg gjort, men der kommer der overhovedet ikke noget. så er chat framen helt tom.
Avatar billede ahv Nybegynder
29. marts 2003 - 17:53 #16
Jeg har en gang lavet en den så sådan her ud:

<?php
$query = mysql_query("SELECT * FROM tekst order by id desc limit 30") or die(mysql_error());
while($row = mysql_fetch_array($query)) {
echo "$row[tekst]<br>";
}
?>

Her har jeg et felt med som hedder id, sådan et har du vel også i din, så du kan kende beskederne fra hinanden også viser den det i omvendt rækkefølge og kun 30.
Avatar billede snuseren.dk Nybegynder
29. marts 2003 - 18:06 #17
det virker heller ik :-( vil du ikke prøve at skrive hele siden?
Avatar billede ahv Nybegynder
29. marts 2003 - 18:08 #18
Altså hele den der trækker data ud?

<?php
Her connecter du til din db.
?>

<html>
<head>
<script>

chatHTML = '<?php
$query = mysql_query("SELECT * FROM tekst order by id desc limit 30") or die(mysql_error());
while($row = mysql_fetch_array($query)) {
echo "$row[tekst]<br>";
}
?>';
if (parent.frames['chatvis'].opdaterSpan) {
parent.frames['chatvis'].opdaterSpan(chatHTML);
setTimeout("self.location.reload(true)",10000);
}
</script>
</head>
<body>
</body>
</html>

også skal du bare selv i toppen af side connecte til din database.
Avatar billede snuseren.dk Nybegynder
29. marts 2003 - 18:15 #19
takker, nu virker det :o) Du ved vel ikke tilfældigvis, hvordan man kan få scrolleren til at være nederst, så man ik skal trække den ned, hver gang der kommer en besked ??
Avatar billede snuseren.dk Nybegynder
29. marts 2003 - 18:17 #20
men hvordan kan det være, at der ca går 8 sekunder, fra man har sendt beskeden, til den er på skærmen ??
Avatar billede ahv Nybegynder
29. marts 2003 - 18:17 #21
? Du mener, de nyeste beskeder kommer nederst nu?
Avatar billede ahv Nybegynder
29. marts 2003 - 18:18 #22
<?php
Her connecter du til din db.
?>

<html>
<head>
<script>

chatHTML = '<?php
$query = mysql_query("SELECT * FROM tekst order by id desc limit 30") or die(mysql_error());
while($row = mysql_fetch_array($query)) {
echo "$row[tekst]<br>";
}
?>';
if (parent.frames['chatvis'].opdaterSpan) {
parent.frames['chatvis'].opdaterSpan(chatHTML);
setTimeout("self.location.reload(true)",1000);
}
</script>
</head>
<body>
</body>
</html>


Så nu går der kun et sekund eller lignende.
Avatar billede snuseren.dk Nybegynder
29. marts 2003 - 18:19 #23
ja det er fordi, jeg ik har noget id felt (endnu), og jeg syntes det er rarere at de kommer i bunden, ligesom jubii chat.
Avatar billede snuseren.dk Nybegynder
29. marts 2003 - 18:21 #24
oki, takker nu går den hurtig.
Avatar billede ahv Nybegynder
29. marts 2003 - 18:22 #25
uha, nej det ved jeg ikke lige nu hvordan man gør, kan huske der var en for nogle måneder siden der havde samme problem han fik det løst, men kan desværre ikke huske linket til spm.
Avatar billede snuseren.dk Nybegynder
29. marts 2003 - 18:23 #26
ok, men takker for svarene !!
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