Avatar billede thorus Nybegynder
11. marts 2003 - 23:34 Der er 32 kommentarer og
1 løsning

popup ved ny post?

JEg har et community hvor man har intern besked system, jeg er bare ikke helt klar over hvordan man laver en funktion som giver en bruger en popup besked når man modtager ny post..
Avatar billede schaefner Juniormester
11. marts 2003 - 23:37 #1
ved ikke hvordan du tjekker for ny post, men et lille eksempel:

<?php
if($nypost < 0) {
?>
<script>alert('Du har modtaget ny post');</scrip>
<?
}
?>
Avatar billede ahv Nybegynder
11. marts 2003 - 23:38 #2
Dette vil kræve du har en frame, som står og opdatere f.eks. hvert 5 sek. så skal den tjekke om der er komme noget nyt post brugeren ikke har læst og er der det, kan du lave denne funktion:

<script language="javascript">
var popup = window.open("besked.php", "ahv", "top=0,left=0,width=200,height=400,status=0,resizable=0,scrollbars=0,menubar=0,toolbar=0");
</script>

Er dette tilstrækkeligt eller ønsker du en færdig funktion?
Avatar billede schaefner Juniormester
11. marts 2003 - 23:40 #3
Skal selvfølgelig være:

<?php
if($nypost > 0) {
?>
<script>alert('Du har modtaget ny post');</scrip>
<?
}
?>

:)
Avatar billede chatonline Nybegynder
11. marts 2003 - 23:41 #4
Hvad så med sådan en funk. Som der er på hotpeople.dk
Avatar billede schaefner Juniormester
11. marts 2003 - 23:41 #5
Hvis du ønsker et bedre eksempel må du nok af med lidt kode :)
Avatar billede schaefner Juniormester
11. marts 2003 - 23:42 #6
Nu har jeg ikke lige en bruger på hotpeople.dk :)
Avatar billede thorus Nybegynder
11. marts 2003 - 23:45 #7
ok. altås med noget javascript og en frame vil det kunne lade sig gøre..

jeg bruger php/mysql.  og der er en post tabel med navn "profil_post" hvor alt post er i.
Avatar billede thorus Nybegynder
11. marts 2003 - 23:46 #8
-> ahv -> hvordan en frame?
Avatar billede ahv Nybegynder
11. marts 2003 - 23:48 #9
Hvis du nu har et felt i din database som f.eks. kan stå til 1 eller 0.
1 for læst og 0 for ulæst, når brugeren så læser et brev skal den så skifte til 1, på denne måde kan du i en frame som evt. sætte til 0 px så ingen kan se den, her opdatere du f.eks. hvert 5 sekund og tjekker på alle poster der svarer til brugerens id samt at dette "læse" felt står på 0, kommer den igennem kan du så smække det javascript på dem intet schaefners eller min.
Avatar billede ahv Nybegynder
11. marts 2003 - 23:50 #10
Du laver bare et frameset:

<frameset cols="*,0">
<frame name="main" src="index.php" scrolling="no" title="Dating system">
<frame src="usynligfil.php" title="">
<noframes>
<body>
Din browser understøtter ikke frames, desværre!
</body>
</noframes>
</frameset>

Dette kunne være en løsning hvor usynligfil.php så opdateres hvert 5 sekund og tjekker efter nyt post.
Avatar billede thorus Nybegynder
11. marts 2003 - 23:50 #11
ok så jeg skal altså lave min side om til et frame set? og ja min post system virker på den måde 0=ulæst 1=læst 2=besvaret
Avatar billede schaefner Juniormester
11. marts 2003 - 23:51 #12
En iframe burde være nok :)
Avatar billede thorus Nybegynder
11. marts 2003 - 23:51 #13
en iframe kan jeg bedre lide..

hvordan skal jeg impl. den? på min side?
Avatar billede schaefner Juniormester
11. marts 2003 - 23:52 #14
Prøver lige at lave et eksempel til dig :)
Avatar billede thorus Nybegynder
11. marts 2003 - 23:52 #15
super duper..
Avatar billede ahv Nybegynder
11. marts 2003 - 23:53 #16
Ja en iframe kan også gøre det.

Hvor du vil impl. er jo helt op til dig, i bunden måske?
Avatar billede thorus Nybegynder
11. marts 2003 - 23:54 #17
jeg har brugt noget iframe på mit site men ikke til den her slags
Avatar billede schaefner Juniormester
11. marts 2003 - 23:56 #18
Burde virke:
<?php
$query = mysql_query("SELECT * FROM profil_post WHERE modtager = 'etellerandet' ORDER BY id DESC");
$row = mysql_fetch_array($query);
if ($row[laest] == 0) {
?>
<script>alert('Du har modtaget ny post');</scrip>
<?php
}
?>
Avatar billede ahv Nybegynder
11. marts 2003 - 23:56 #19
usynligfil.php

<head>
<meta HTTP-EQUIV="REFRESH" CONTENT="5">
</head>

$check = mysql_query("SELECT * FROM posttabel where laest='0' and id='$id'") or die (mysql_error());

    if(mysql_num_rows($check) != 0) {
?>
<script language="javascript">
var popup = window.open("besked.php", "ahv", "top=0,left=0,width=200,height=400,status=0,resizable=0,scrollbars=0,menubar=0,toolbar=0");
</script>
<?php
}

Noget ala dette burde kunne gøre det.
Avatar billede schaefner Juniormester
11. marts 2003 - 23:56 #20
Skal lige rettes til :)
Avatar billede ahv Nybegynder
11. marts 2003 - 23:58 #21
Der glippede min start og slut på php lige:

<head>
<meta HTTP-EQUIV="REFRESH" CONTENT="5">
</head>

<?php
$check = mysql_query("SELECT * FROM posttabel where laest='0' and id='$id'") or die (mysql_error());

    if(mysql_num_rows($check) != 0) {
?>
<script language="javascript">
var popup = window.open("besked.php", "ahv", "top=0,left=0,width=200,height=400,status=0,resizable=0,scrollbars=0,menubar=0,toolbar=0");
</script>
<?php
}
?>
Avatar billede thorus Nybegynder
12. marts 2003 - 00:01 #22
jeg prøve at teste..
Avatar billede schaefner Juniormester
12. marts 2003 - 00:08 #23
min tjekker kun på den nyeste mail. Ahv's vil også melde "ny post" på en gammel mail som brugeren bare ikke har læst.
Avatar billede ahv Nybegynder
12. marts 2003 - 00:12 #24
Ja det er rigtigt nok, men der bliver vel nødt til at være et felt mere i databasen om at nu har personen set denne besked så den ikke dumper frem hele tiden, evt kald dette felt set og sær det til 1 og tjek så om dette felt er 1 når du kører funktionen.
Avatar billede schaefner Juniormester
12. marts 2003 - 00:13 #25
Hvis du skal ha' hjælp til at få det op at køre, så må du lige vente til imorgen. Regner med at du kan se  vor der skal rettes til :)
Avatar billede thorus Nybegynder
12. marts 2003 - 00:14 #26
ok det virker, men den bliver ved med at poppe up hvert 5 sec..
Avatar billede schaefner Juniormester
12. marts 2003 - 00:15 #27
ja, så længe du ike læser mailen. Ville nok fjerne den ting der opdaterer.
Avatar billede ahv Nybegynder
12. marts 2003 - 00:17 #28
schaefner, så vil der ikke dukke noget op mens man surfer der inde vil der? den bliver jo nødt til at blive reloaded hvis den skal tjekke om der er en som har skrevet til en.
Avatar billede schaefner Juniormester
12. marts 2003 - 00:40 #29
ja, men så burde der også blive blandet lidt cookies ind idet ellers vil den jo opdaterer så længe han ikke læser sin mail.
Avatar billede thorus Nybegynder
12. marts 2003 - 01:19 #30
Løsningen:

<head>
<meta HTTP-EQUIV="REFRESH" CONTENT="20">
</head>

<?php
$mysql_host = "";
$mysql_user = "";
$mysql_password = "";
$mysql_db = "";

mysql_connect($mysql_host,$mysql_user,$mysql_password);
mysql_select_db("$mysql_db");

$check = mysql_query("SELECT * FROM bruger_post where laest='0' and til_Id='$bruger_id' and til_slet = '0' and til_popup = '0'") or die (mysql_error());


    if(mysql_num_rows($check) != 0) {

$res1 = mysql_query("SELECT * FROM bruger_post where laest='0' and til_Id='$bruger_id' and til_slet = '0'") or die (mysql_error());
    while($row1 = mysql_fetch_array($res1))
      {       
        mysql_query("UPDATE bruger_post set til_popup = '1' where post_Id = '{$row1["post_Id"]}'");
        }
?>
<script language="javascript">
var popup = window.open("besked.php", "ho....", ",left=180,top=200,width=200,height=10,status=0,resizable=0,scrollbars=0,menubar=0,toolbar=0");
</script>
<?php
   
                    }


?>
Avatar billede ahv Nybegynder
12. marts 2003 - 08:13 #31
Thorus >> Det ser jo fint ud, og nu for brugeren vel kun en besked ikke?
Avatar billede thorus Nybegynder
12. marts 2003 - 17:45 #32
ahv >> ja de får kun popupen 1 gang, men det er lidt små irreterende at status varen lige loader hvert 20 sec. nu.. kan man lave noget så den ikke gør det?  istedert for meta refresh..
Avatar billede ahv Nybegynder
12. marts 2003 - 19:39 #33
Du kan lave en "evig" while som bliver ved med at stå åben, dog er dette meget krævende og anbefales ikke.
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