Avatar billede dennism Nybegynder
21. februar 2003 - 12:04 Der er 20 kommentarer og
1 løsning

Jeg er igang med en Chat

Jeg sidder iøjeblikket og er igang med at lave en chat.
Men jeg har imidlertid et lille problem.

Jeg har tænkt mig at lave sådan chatten viser de 50 nyeste beskeder i chatten (altså LIMIT 0,50). Men jeg har så sat den til at sortere sådan at de nyeste beskeder står nederst i vinduet!
Det fungerer så også fint, indtil videre.

Men når indholdet i den framen, hvori beskederne bliver vist, bliver længere end vinduet, som kommer der selvfølgelig en scroll frem.
Jeg har så også lavet sådan, at vinduet opdaterer hvert 5 sek, men det betyder så at hver gang den opdaterer vinduet så kører scrollen jo op i toppen igen, og man er nød til at scrolle igen!..

Det er ret upraktisk, og jeg vil derfor høre hvad jeg kan gøre for at forhindre at man skal scrolle hvert 5 sek.?
Avatar billede dennism Nybegynder
21. februar 2003 - 12:10 #1
Det kan godt være at min system skal fungere på en anden måde, det ved jeg ikke!..
Avatar billede bootie Nybegynder
21. februar 2003 - 12:15 #2
Hvis du nu sætter inputtet til chatten for oven vil det jo være naturligt at den nyeste besked er for oven...
Det er da den nemme løsning i hvert fald :)

/henrik
Avatar billede dennism Nybegynder
21. februar 2003 - 12:19 #3
Ja... Men på en chat er det mest normalt at de nyeste beskeder er for neden!
Avatar billede tangveje Nybegynder
21. februar 2003 - 12:37 #4
Prøv dette

Sæt en <a name="bund"></a> ind nederst (aller nederst) på siden... Når du så opdaterer skal du blot kalde siden dinside.php#bund og du vil automatisk blive placeret i bunden... Skulle virke, og er da en rimelig nem løsning :)
Avatar billede dennism Nybegynder
21. februar 2003 - 12:46 #5
Jeg opdaterer min side vha.:
<META HTTP-EQUIV="Refresh" CONTENT="5; URL="#bund">

Jeg har indsat <a name="bund"></a> nederst på siden, men det hjælper ikke!

Gør jeg noget forkert?
Avatar billede tangveje Nybegynder
21. februar 2003 - 12:51 #6
Hmm, underligt... Har du prøvet at skrive hele sidens navn og ikke kun #bund i dit meta-tag? Altså noget i stil med

<META HTTP-EQUIV="Refresh" CONTENT="5; URL="side.php#bund">

Ved ikke om det gør nogen forskel. Ellers ville det nok hjælpe hvis vi kunne se noget af koden
Avatar billede dennism Nybegynder
21. februar 2003 - 12:53 #7
Det hjælper ikke..

Har har du koden:

<META HTTP-EQUIV="Refresh" CONTENT="5;" URL="top.php#bund">
<body style="background-image: url('../../../images/bg.jpg');">

<?PHP

$mysql = mysql_query("SELECT fra, til, tekst, date_format(dato, '%H:%i:%s') AS fdato FROM chat WHERE til = '' || til = '$_SESSION[brugernavn]' ORDER BY dato ASC LIMIT 0,50");
$mysql_antal = mysql_num_rows($mysql);

echo"<table border=0 align=center cellspacing=0 cellpadding=0 style=\"width: 100%; height: 100%; background-color: $bg_color; border: thin solid #000000; border-width: 1px; padding:2px;\">
<tr>
<td style=\"vertical-align:top; height:100%;\">";

while ($row = mysql_fetch_array($mysql)) {
$row[fra] = strtoupper($row[fra][0]).substr($row[fra], 1);
echo"<table cellspacing=0 border=0 cellpadding=0 style=\"width: 100%; height: 15px;\">
<tr>
<td style=\"vertical-align:top; width:50px;\"><B>$row[fra]&nbsp;($row[fdato]):&nbsp;</B></td>
<td style=\"vertical-align:top;\">$row[tekst]</td>
</tr>
</table>";
}

echo"</td></tr></table>";

} else {
echo"<LI><font color=#FF0000>Du er ikke logget ind.</FONT><BR>";
}

?>

<a name="bund"></a>
Avatar billede tangveje Nybegynder
21. februar 2003 - 13:06 #8
Prøv at fjern dit meta tag, placer dette istedet

<script type="text/javascript">
function re() {
  setTimeout("self.location.href='top.php#bund'", 5000) ;
}
</script>

Og sæt dette på dit <body> tag.

onload="re()"

Kan ikke lige se noget problem i din kode, men måske dur den slags bare ikke med metarefresh... Den her metode sparer dig også for det kedelige klik der kommer når den opdaterer (om ikke andet er det da meget rart :)... Håber det virker
Avatar billede dennism Nybegynder
21. februar 2003 - 13:09 #9
Genialt :D

Det virker nu.. Men nej, den der klik-lyd kommer alligevel!...
Avatar billede dennism Nybegynder
21. februar 2003 - 13:11 #10
Nej.. Den opdaterer kun siden en gang!... Hvorfor?
Avatar billede tangveje Nybegynder
21. februar 2003 - 13:12 #11
Hmm, underligt... Begge dele altså... Måske det var nemmere at finde en anden måde at løse problemet på... Øjeblik
Avatar billede dennism Nybegynder
21. februar 2003 - 13:14 #12
Jeg venter :D
Avatar billede tangveje Nybegynder
21. februar 2003 - 13:32 #13
OK, prøv dette script istedet for mit forrige

<script type="text/javascript">
    function re() {
        self.location.href = "test.htm#bund" ;
        self.location.reload() ;
    }
</script>

Det ser ud til at virke hos mig
Avatar billede tangveje Nybegynder
21. februar 2003 - 13:34 #14
Hov, og den her i dit <body> tag :)

onload="setTimeout('re()', 5000) ;"
Avatar billede dennism Nybegynder
21. februar 2003 - 13:35 #15
Jeg er lige ved at ændre lidt i opsætningen af min chat, så det er ik muligt at teste det lige nu!.. Men jeg vender tilbage så snart jeg har testet det!..

Tak for hjælpen indtil videre!...
Avatar billede tangveje Nybegynder
21. februar 2003 - 13:39 #16
OK, faktisk skulle dette være mere end rigeligt. Bare husk at du så altid skal starte med top.php#bund istedet for blot top.php... Hvis du forstår hvad jeg mener

onload="setTimeout('self.location.reload()', 5000) ;"
Avatar billede dennism Nybegynder
21. februar 2003 - 13:42 #17
Jeg tror ikke jeg forstå hvad du mener!..
Mener du at når jeg henter top.php via min frameset så skal jeg hente top.php#bund ?
Avatar billede dennism Nybegynder
21. februar 2003 - 13:45 #18
Jeg har nu indsat dette:

<script type="text/javascript">
    function re() {
        self.location.href = "top.php#bund" ;
        self.location.reload() ;
    }
</script>

<body style="background-image: url('../../../images/bg.jpg');" onload="setTimeout('re()', 5000) ;">

Den opdaterer godtnok, men den starter ikke i bunden!.. Hvorfor?
Avatar billede tangveje Nybegynder
21. februar 2003 - 13:56 #19
Ja det var det jeg mente :)

Men forstår det ikke, det virker ganske glimrende for mig
Avatar billede dennism Nybegynder
21. februar 2003 - 13:57 #20
HVad var grunden til at du skrev "onload="setTimeout('self.location.reload()', 5000) ;"" kl. 13:39?
Avatar billede tangveje Nybegynder
21. februar 2003 - 14:07 #21
Fordi det nok er en lidt pænere/bedre måde at gøre det på, og den virkede lige så godt her hos mig. Men kan ikke lige se hvorfor det ikke virker hos dig, desværre :(
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