Avatar billede chrisson Nybegynder
30. juli 2006 - 14:58 Der er 21 kommentarer og
1 løsning

Sæt shoutbox i innerHTML

Hej exp,

Er der nogle der kan finde ud af at sætte en enkel shoutbox i innerhtml?

Kode:

<?
mysql_connect("hmmm", "hmmm", "hmmm");
mysql_select_db("hmmm");
$hent = mysql_query("SELECT * FROM chattekst ORDER BY id DESC") or die(mysql_error()); // vi henter dataene fra databasen
while($vis = mysql_fetch_array($hent)) { // vi bruger while til at sørge for at den henter ALLE dataene ud fra databasen, vi gemmer alle dataene i virablen $vis
?>
<body bgcolor="silver">
<div style="position: absolute; width: 141px; height: 378px;left:10px; top:15px" border="1" width="16%" height="252">
<b><? echo $vis[brugernavn]; ?>: </b><p><? echo $vis[tekstbesked]; ?></p>
<?
}
?>
</div>
Avatar billede chrisson Nybegynder
30. juli 2006 - 15:00 #1
Har ikke ret megen forstand på innerhtml
Avatar billede esbenp Nybegynder
30. juli 2006 - 16:50 #2
En åbenlys fejl er at body er inden i din while. Sæt den op foran.

Hvad er det du prøvet at lave?
Avatar billede chrisson Nybegynder
30. juli 2006 - 17:20 #3
Ok, sætter body op.

Det her er selve det der viser min shoutbox, Hvis du skal bruge den der skriver til databasen, så skriv lige!

PS: Systemet virker fint!
Avatar billede esbenp Nybegynder
30. juli 2006 - 17:35 #4
Hvad er det lige en shoutbox er?
Avatar billede chrisson Nybegynder
30. juli 2006 - 17:46 #5
Ligesom en chat, hvor man kan skrive sammen
Avatar billede esbenp Nybegynder
30. juli 2006 - 18:09 #6
Hvorfor vil du bruge innerHTML? Det bruger man i forbindelse med javascript.

Jeg har en ide til en løsning inspiret af "gaps" sektionen på letour.fr

Du får lige lidt pseodo kode:

<html opdater-hvert-minut-som-nødløsning>
Vis alle beskeder i chatten...
while(ingen beskeder){
  wait();
}
// Nu er der en ny besked i chatten
udskriv en kommando til browseren til om at reloade siden.
//Slut
Denne løsning gør at alle brugere vil se nye beskeder så snart de er skrevet. Der er altså ikke tale om polling som det eks ses på hjertebanken.dk.

For brugeren vil der i browseren stå: "Overfører data fra webstedet..." så længe chatten er aktiv.

Når der bliver skrevet en besked i chatten skal du så lave en notifyAll(), hvilket gør at wait() kaldet returnerer.

bemærk wait og notify er noget man typisk bruger i java. I php kan du lave et "ændret" felt i din database.
Avatar billede esbenp Nybegynder
30. juli 2006 - 18:11 #7
Sendte lidt for hurtigt. Dette "ændret" felt kan du så checke med få sekunders mellemrum. Hvis værdien så er sand sender du så "opdater" kommandoen til browseren.

Det er ikke så elegant som wait og notify men det burde virke.
Avatar billede esbenp Nybegynder
30. juli 2006 - 18:13 #8
Skriv endelig hvis der er noget der skal forklares bedre
Avatar billede chrisson Nybegynder
30. juli 2006 - 18:21 #9
Med innerHTML der blinker og klikker den ik, og vil gerne have at den skal opdateres hvert 2. sek
Avatar billede esbenp Nybegynder
30. juli 2006 - 18:30 #10
Hvis du vil bruge innerHTML har det ikke noget php at gøre, men derimod javascript. Du skal dog være opmærksom på at det ikke vil skalere til ret mange brugere hvis du vil polle og hele tiden opdatere.
Avatar billede mclemens Nybegynder
30. juli 2006 - 22:18 #11
Hvad med dem her?
http://www.eksperten.dk/spm/321103
http://www.eksperten.dk/spm/320350
- luk evt. denne tråd eller den anden
... du må ikke have 2 ens tråde samtidig
( http://www.eksperten.dk/spm/723218 )
Avatar billede mclemens Nybegynder
30. juli 2006 - 22:20 #12
setTimeout( "location.href='chat.php?s=<?=$s?>'", 5000 ); <- de 5000 er vist antal ms. mellem opdateringer det skal så være 2000 for 2 sekunder (har ikke prøvet scriptet selv)
Avatar billede chrisson Nybegynder
31. juli 2006 - 16:49 #13
esbenp er du der stadig?
Avatar billede esbenp Nybegynder
01. august 2006 - 00:59 #14
yes
Avatar billede chrisson Nybegynder
01. august 2006 - 02:17 #15
Tror godt jeg kan bruge din måde sammen med innerHTML, fik det sat innerHTML op for nogle timer siden. Ved at sætte de to sammen, ville man spare en del trafik tror jeg!

Med innerHTML blinker eller klikker den ik....
Avatar billede esbenp Nybegynder
01. august 2006 - 18:09 #16
Jeg forstår virkelig ikke hvad du snakker om mht innerHTML. Hvordan ved den når der er en ny besked i chatten? Er det noget ajax du har gang i?
Avatar billede mclemens Nybegynder
01. august 2006 - 18:17 #17
Kunne du bruge mine links?
Eller er det noget andet?
Avatar billede mclemens Nybegynder
01. august 2006 - 18:25 #18
chrisson, m.h.t. min kommentar i 30/07-2006 22:18:05:
[ - luk evt. denne tråd eller den anden
... du må ikke have 2 ens tråde samtidig
( http://www.eksperten.dk/spm/723218 ) ]

Så er lige lidt information om det her:

http://www.eksperten.dk/regler.phtml

2. Regler for brug af Eksperten.dk
- 1. Det er ikke tilladt at:

- - 11. oprette det samme spørgsmål flere gange - heller ikke selv om spørgsmålet kunne ligge i flere kategorier. Er der ikke indløbet tilfredsstillende svar på et spørgsmål efter 7 dage, er det dog tilladt at lukke det oprindelige spørgsmål, og oprette et nyt identisk.

- - 11.1. oprette reference/reklame spørgsmål, hvor man kun reklamerer for et tidligere oprettet spørgsmål for at få folk til at hjælpe i det spørgsmål.


- Jeg vurderer derfor om du har set / overset mit indlæg?


Spørsmålstekst:
[ Er der nogle der kan finde ud af at sætte en enkel shoutbox i innerhtml? ]

M.h.t. 01/08-2006 18:17:30 er den del jeg forespurgte
på feedback på det her fra 30/07-2006 22:18:05:

[ Hvad med dem her?
http://www.eksperten.dk/spm/321103
http://www.eksperten.dk/spm/320350 ]

... Det tager ikke to sekunder at sige ja eller nej til om linket kunne bruges...?
Avatar billede chrisson Nybegynder
02. august 2006 - 22:02 #19
Har fixet det, Takker for hjælpen! Skal jeg nok huske mclemens!
Avatar billede mclemens Nybegynder
02. august 2006 - 22:11 #20
[ Har fixet det, Takker for hjælpen! Skal jeg nok huske mclemens! ]
Nu synes jeg du hamrer spørgsmålet i og beholder pointene uden at give
noget? ... Regner så med at du valgte en anden løsning
- og så bliver jeg da nysgerrig efter hvad løsningen var - du manglede
jo et innerhtml system ... hvad blev løsningen så?

http://www.eksperten.dk/regler.phtml

2. Regler for brug af Eksperten.dk

- 10. Finder man selv svaret på sit spørgsmål, og dermed ønsker at tage de udlovede point retur, er man forpligtet til at skrive, hvordan problemet blev løst. Det kan f.eks. være et link eller en nærmere beskrivelse. Ekspertens grundlag bygger bl.a. på de svar, der er på de mange spørgsmål. Derfor er ens egen
løsning også til gavn for andre.
Denne regel gælder ikke med tilbagevirkende kraft, men kun fra 12. august 2004 og fremefter.

^ - Bemærk ordene man er forpligtet til at skrive det...
Hvorfor? Tjah, måske fordi folk der har givet hjælp eller henvisninger til brugbare løsninger måske gerne vil vide om det er en reel lukning der er sket eller om spørgeren bare vil beholde pointene... Det tager også tid / sparer også en tid at en finder / poster linket til noget brugbart...
Avatar billede chrisson Nybegynder
03. august 2006 - 03:08 #21
Jeg satte det i innerhtml, kan ikke huske hvilken side jeg fandt det fra

Sådan gjorde jeg:

<?php
session_start();
include("check.php");
include("connect.php");
$res9 = mysql_query("SELECT * FROM brugeroplysninger WHERE brugernavn = '$_SESSION[Brugernavn]'");
$row9 = mysql_fetch_array($res9);
$hent = mysql_query("SELECT * FROM chattekst where rum='$row9[rumid]' ORDER BY id DESC") or die(mysql_error()); // vi henter dataene fra databasen
while($vis = mysql_fetch_array($hent)) { // vi bruger while til at sørge for at den henter ALLE dataene ud fra databasen, vi gemmer alle dataene i virablen $vis

?>
<body bgcolor="silver">

<div style="width: 141px; height: 378px;left:10px; top:15px" border="1" width="16%" height="552">
  <b><font size="2" color=green><?=$vis[brugernavn];?>:</font><font size="2" color=black> <?=$vis[tekstbesked];?></font><br>
<?
}
?></b>
</div><script type="text/JavaScript">
window.onload = function() {
    setTimeout('location.reload()', 1500)
    parent.writeChat(this);
}
</script>

og så lavede jeg en iframe

<body bgcolor="silver">

<script type="text/JavaScript">
function writeChat(obj) {
    var o = document.getElementById("chat");
    o.innerHTML = obj.document.body.innerHTML + o.innerHTML;
}
</script>

<div id="chat"></div>

<iframe src="viss.php" frameborder="0"
    style="position:absolute;width:1px;height:1px;left0px;top:0px;"></iframe>

</body>

Godt nok?
Avatar billede mclemens Nybegynder
03. august 2006 - 08:49 #22
Yes, fint nok ;o)
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





White paper
Tidsbegrænset kampagne: Overvejer du at udskifte eller tilføje printere i din forretning? Vi kan tilbyde én eller flere maskiner gratis