Avatar billede jammerlab Nybegynder
30. december 2003 - 14:30 Der er 33 kommentarer og
1 løsning

Et par PHP / JS spørgsmål til min chat

(1) Jeg vil gerne lave en kick funktion. Jeg kan sagtens se hvordan jeg kunne lave den med en if($something) men jeg kan ikke se hvordan jeg skulle kunne opdatere en variabel i hans browser :| Hvordan pokker skulle jeg gøre det?

(2) Er det muligt med JS script at opdatere en <option> i et frame uden at skulle bruge noget som <meta http-equiv="refresh" content="5"> ?
Avatar billede roenving Novice
30. december 2003 - 15:35 #1
#1

<script type="text/javascript">
var kick = <?din php-funktion, som sætter værdien?>
//andet javascript
//...
//bla. #2
function changeOption(nr){
  opt = document.getElementById('selectBox').options[nr];
  opt.value = "ny værdi";
  opt.text = "ny tekst";
}
//...
</script>

-- changeOption kaldes så med nummeret på den option, som skal ændres (eller du sætter det som fast værdi i funktionen !-)

-- og husk at options, som alt andet i javascript, nummereres 0-baseret, dvs. den første hedder .options[0], den anden options[1] osv.
Avatar billede jammerlab Nybegynder
30. december 2003 - 15:45 #2
roenving > jeg skulle lige til at lukke... til kick har jeg fundet en metode, og tror du misforstår mig med det sidste spørgsmål. Det er en option der indeholder alle online brugere altså en while loop som henter det ud. Men når en bruger logger på så bliver den ikke opdateret først når brugeren skriver en besked. Derfor ønskede jeg en slags realtime update af min "drop down menu" altså <option> ... kan de lade sig gøre?
Avatar billede roenving Novice
30. december 2003 - 15:49 #3
Jada !-)

var sel = document.getElementById('selectBox');
var newOpt = document.createElement('OPTION');
sel.appendChild(newOpt);
newOpt.value = brugerID;
newOpt.text = brugernavn;
Avatar billede jammerlab Nybegynder
30. december 2003 - 15:51 #4
Så må du lige skærer det ud i pap for mig :P

  <select name=chat_p size=1 class=form>
    <option value=0>Brugere</option>";
    $query = mysql_query("select * from chatonline") or die(mysql_error());
    while($row = mysql_fetch_array($query)) {
    echo "<option value=$row[user_id]>$row[bruger]</option>";
    }
    echo "
    </select>
Avatar billede roenving Novice
30. december 2003 - 15:57 #5
Du sætter ovenstående ind i et par javascript-tags, og sørger for, at brugerID og brugernavn er javascript-variabler med værdier (f.eks. ved at hente dem fra de felter, hvor du har de værdier !-)

-- så vil det brugernavn blive tilføjet din select-box, hvis du vil highlighte navnet i select-boxen kan du jo tilføje .selected = true;

<scr ...>

function updateSelect(){
var sel = document.getElementById('chat_p');
var newOpt = document.createElement('OPTION');
sel.appendChild(newOpt);
newOpt.value = brugerID;
newOpt.text = brugernavn;
newOpt.selected = true;
}
</script>

-- og så tilføje selecten et id:

  <select name='chat_p' id='chat_p' size='1' class='form'>
Avatar billede fcknet Nybegynder
30. december 2003 - 16:09 #6
2) <script type="text/javascript">setTimeout("self.location.reload(true);",10000);</script>

Noget i den stil???
Avatar billede jammerlab Nybegynder
30. december 2003 - 16:12 #7
fcknet > nej. Ik fedt at alle mulige frames blinker hehe det er nok med det frame som henter texten frem.

roenving > Altså... Du aner ikke hvor meget jeg er skod til js script... jeg kan sådan set godt følge dig noget af vejen men slet ikke langt nok :P Kan du ik skrive det som det skal stå i min kode. Så slipper jeg for at skulle presse mere ud af dig :)
Avatar billede roenving Novice
30. december 2003 - 16:15 #8
Det er det jeg har gjort !-)

-- men jeg ved ikke hvordan du har dine brugerID og -navn-felter/variabler ...
Avatar billede jammerlab Nybegynder
30. december 2003 - 16:16 #9
echo "<option value=$row[user_id]>$row[bruger]</option>"; < står jo lige der *vrrr* :)
okay så må jeg jo bare lege med det hvis dine evner ikke rækker længere ;)
Avatar billede roenving Novice
30. december 2003 - 16:18 #10
-- ja, men du siger jo, at det opslag ikke giver den aktuelle bruger, når han lige logger på !-)
Avatar billede jammerlab Nybegynder
30. december 2003 - 16:21 #11
hehe jow jow :) du skal bare forstille dig en masse frames. Når brugere logger på og ryger ind i "indgangen" så henter while loopen alle brugere som er online, og laver <option>. DEREFTER henter den intet FØR personen skriver en besked i text feltet da framet så opdatere :) Jeg vil gerne opnå (Uden frame blinke blinke) at den opdatere <option> med alle brugere så hvis endnu en bruger er logget på så kommer han til at stå dernede uden brugeren skal skrive en besked :P

Er vi helt ude i noget lort eller kan vi lave det? :)
Avatar billede roenving Novice
30. december 2003 - 16:29 #12
Javascript kan ikke hente oplysningen på anden måde end ved et kald til en side, altså en opdatering af (i)framen !-)
Avatar billede jammerlab Nybegynder
30. december 2003 - 16:35 #13
roenving > gider ikke lige til at lave et nyt spørgsmål men jeg åbner chatten i et popup vindue... og når jeg laver et popup link inde i dette popup så åbner den ikke et nyt vindue. Hvordan gør man det?

btw... smid et svar tak :)
Avatar billede roenving Novice
30. december 2003 - 16:39 #14
Der skulle ikke være noget galt i at åbne en popup fra en popup, hvis du bare har åbnet det med window.open() ...

-- men man kan da også give det oprindelige vindue moderskabet til den nye popup med opener.open() ...

-- og så velbekomme '-)
Avatar billede jammerlab Nybegynder
30. december 2003 - 16:40 #15
<a href=java script:PopWin('chat_index.php',450,700);>Åben chat</a>

Sådan ser mine popup vinduer ud...
Avatar billede roenving Novice
30. december 2003 - 16:42 #16
Så er det den anden metode, du skal bruge i popup'en:

<a href='java script:opener.PopWin(...)'>Se brugeroplysninger</a>
Avatar billede jammerlab Nybegynder
30. december 2003 - 16:46 #17
fejl: 'opener' er null eller ikke et objekt.

echo "<a href=java script:opener.PopWin('chat_index.php?room_id=1',450,700);>Åben chat</a><br>";

Kan bare ikke det der js scripting hehe :P
Avatar billede roenving Novice
30. december 2003 - 16:54 #18
_Ikke_ i start-vinduet, men i din popup kan du bruge opener. !-)
Avatar billede jammerlab Nybegynder
30. december 2003 - 16:55 #19
Der jeg prøvede den først :|

echo "<a href=java script:PopWin('chat_index.php?room_id=1',450,700);>Åben chat</a><br>";

Åbner chat vinduet helt fint!

echo "[<a href=java script:opener.PopWin('lala.php?kick=true',10,10);>Kick en bruger</a>]<br>";

Sker intet når jeg klikker på dette link.
Avatar billede roenving Novice
30. december 2003 - 16:58 #20
Test lige ved at sætte vinduets størrelse til 100*100 !-)
Avatar billede jammerlab Nybegynder
30. december 2003 - 16:59 #21
Intet :)
Avatar billede roenving Novice
30. december 2003 - 17:10 #22
Test så:

først

echo "[<a href=java script:alert(opener);>Kick en bruger</a>]<br>";

-- derefter
echo "[<a href=java script:alert(opener.PopWin);>Kick en bruger</a>]<br>";

-- skulle gerne give noget med [object] eller lignende !-)
Avatar billede jammerlab Nybegynder
30. december 2003 - 17:42 #23
echo "[<a href=java script:alert(opener);>Kick en bruger</a>]<br>";

Åbner en alert med: undefined

echo "[<a href=java script:alert(opener.PopWin);>Kick en bruger</a>]<br>";

Sker intet med nummer 2... samme som før. Den gør intet.
Avatar billede roenving Novice
30. december 2003 - 17:46 #24
I popup'en ?-)

-- så har du opdateret modervinduet og så bliver du nødt til at flytte hele PopWin-koden med i popup'en !-)
Avatar billede jammerlab Nybegynder
30. december 2003 - 17:49 #25
Ja i popup'en.
Opdateret modervinduet? Det tror jeg ik... Man kan slet ikke opdatere hele chat vinduet uden at den så smider brugeren af og lukker vinduet :)
Avatar billede jammerlab Nybegynder
30. december 2003 - 17:50 #26
Første link åbner index filen som indeholder framsne altså

<frameset rows="100,*" frameborder="NO" border="0" framespacing="0">
  <frameset cols="*,0" frameborder="NO" border="0" framespacing="0" rows="*">
    <frameset cols="*,0" frameborder="NO" border="0" framespacing="0" rows="*">
      <frame name="topFrame" scrolling="NO" noresize src="chat_F1.php" >
      <frame name="rightFrame1" scrolling="NO" noresize src="hidden_f.php">
    </frameset>
    <frame name="rightFrame" scrolling="NO" noresize src="hidden_f2.php">
  </frameset>
  <frameset rows="*,80" frameborder="NO" border="0" framespacing="0">
    <frameset cols="160,*" frameborder="NO" border="0" framespacing="0" rows="*">
      <frame name="leftFrame" scrolling="NO" noresize src="chat_F2.php">
      <frame name="mainFrame" src="chat_F3.php">
    </frameset>
  <frame name="bottomFrame" scrolling="NO" noresize src="chat_F4.php">
</frameset>
</frameset>

og det er i leftframe hvor linket befinder sig i...
Avatar billede roenving Novice
30. december 2003 - 17:54 #27
Så reloader du leftFrame !-)
Avatar billede jammerlab Nybegynder
30. december 2003 - 17:55 #28
Korrekt :) Det gør jeg... og så kan jeg aldrig never ever lave popup links? :|
Avatar billede roenving Novice
30. december 2003 - 17:59 #29
Jo, du sætter den der PopWin-funktion ind i popup'en også !-)
Avatar billede jammerlab Nybegynder
30. december 2003 - 18:01 #30
echo "<a href=java script:PopWin('chat_index.php?room_id=1&&PopWin(chat_index.php?room_id=1,450,700)',450,700);>Åben chat</a><br>";

?!?!?! :D
Avatar billede roenving Novice
30. december 2003 - 18:06 #31
Nej,

function PopWin(hgjlkj,h,w){

-- som du har i en javascript-sektion !-)

Hele funktionen skal med i den chat_index.php som du loader i popup'en !-)
Avatar billede jammerlab Nybegynder
06. januar 2004 - 23:15 #32
Argh roenving :P Det her er jo fucked ... jeg har droppet det popup i mit chat vindue... det fattede jeg ik... men nu kan jeg stadig ikke åbne 2 popups i 1 fil uden frames.
Avatar billede jammerlab Nybegynder
07. januar 2004 - 00:52 #33
fandt løsningen her i olebole's svar :)

http://www.eksperten.dk/spm/316646
Avatar billede roenving Novice
07. januar 2004 - 00:56 #34
Okay, timestamps ?-)

-- men tak for points da !-)
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