Avatar billede kappel Nybegynder
21. maj 2004 - 12:32 Der er 16 kommentarer og
1 løsning

vise antal online i chat

Hej

Jeg vil gerne på min forside vise hvor mange der er online i chatten.
Kan man overhovedet gøre det med den chat jeg anvender? Hvis ikke hvordan gør jeg sådan at det bliver muligt?

----------------------------------------------------------------------------------------------

Derfor har jeg lavet chat.php:

<?php include('../menu/"connect".php'); ?>

<?php
    $sql = "
        SELECT user,
        FROM chat_users";
    $result = mysql_query($sql) or die( mysql_error() );

    echo "Stats<br />";
    if ( mysql_num_rows($result) == 1 ) {
        echo "Online i chatten lige nu:".mysql_result($result, 0)."<br />";
    }
?>

Der kommer følgende fejl:
You have an error in your SQL syntax near 'FROM chat_users' at line 3

----------------------------------------------------------------------------------------------

Her er chat.sql:

# MySQL-Dump
# Database: chat
# --------------------------------------------------------

# Table structure for table 'messages'
#
CREATE TABLE chat_messages (
  user char(15) NOT NULL default '0',
  msg char(250) NOT NULL default '0',
  stamp int(14) NOT NULL default '0',
  KEY stamp (stamp)
) TYPE=MyISAM;

# Table structure for table 'users'
#
CREATE TABLE chat_users (
  user char(15) NOT NULL default '0',
  UNIQUE KEY user (user)
) TYPE=MyISAM;
Avatar billede hanshenp Nybegynder
21. maj 2004 - 12:38 #1
vil umiddelbart mene, at du ikke skal have kommaet med i din SQL streng

$sql = "
        SELECT user
        FROM chat_users";

Må være mere rigtigt
Avatar billede dennismp Nybegynder
21. maj 2004 - 12:52 #2
lidt mere effektiv, lad databasen gøre det for dig.

<?php include('../menu/"connect".php'); ?>

<?php
    $sql = "
        SELECT count(1) FROM chat_users";
    $result = mysql_query($sql) or die( mysql_error() );

    echo "Stats<br />";
    if ( $row = mysql_fetch_row($result) ) {
        echo "Online i chatten lige nu:{$row[0]}<br />";
    }
?>
Avatar billede hanshenp Nybegynder
21. maj 2004 - 12:56 #3
Enig med dennis der :-)
Avatar billede kappel Nybegynder
21. maj 2004 - 13:02 #4
den meldte fejl med: <?php include('../menu/"connect".php'); ?>

Prøvede uden, men det virker.

Men jeg kan se det er det antal der har været logget ind siden jeg startede chatten, i kan se den her: http://super6.kappels.net/

Chat foroven i topmenuen.

DVs før jeg kan få det virke tror jeg at jeg skal udvide chatten eller hvad?
Avatar billede Syska Mester
21. maj 2004 - 14:43 #5
ja, brugere skal vel timeout hvis de ikke har skrevet i X antal mins, eller noget i den retning.... OLEBOLE har lavet en god chat som ligger gratis på netttet et eller andet sted.... hvis du søger her på exp.dk kan du sikkert finde den....
Avatar billede dennismp Nybegynder
21. maj 2004 - 16:19 #6
Prøv med sql'en, hvis altså stamp er time(), da beskeden er skrevet.

SELECT count(distinct u.user)
FROM chat_user u, chat_message m
WHERE u.user = m.user
AND sub_date(now(), INTERVAL 15 MIN) < FROM_UNIXTIME(m.stamp);

Så burde den vise alle de users der har skrevet indenfor de sidste 15 minutter
Avatar billede kappel Nybegynder
21. maj 2004 - 16:44 #7
nu ser den således ud:

<?php
    $sql = "
        SELECT count(distinct u.user)
FROM chat_user u, chat_message m
WHERE u.user = m.user
AND sub_date(now(), INTERVAL 15 MIN) < FROM_UNIXTIME(m.stamp)";

    $result = mysql_query($sql) or die( mysql_error() );

    if ( $row = mysql_fetch_row($result) ) {
        echo "Online i chatten lige nu:{$row[0]}<br />";
    }
?>



Men den melder følgende fejl:

You have an error in your SQL syntax near '(now(), INTERVAL 15 MIN) < FROM_UNIXTIME(m.stamp)' at line 5
Avatar billede dennismp Nybegynder
21. maj 2004 - 17:59 #8
hov, prøv date_sub istedet for sub_date
Avatar billede kappel Nybegynder
21. maj 2004 - 18:22 #9
You have an error in your SQL syntax near 'MIN) < FROM_UNIXTIME(m.stamp)' at line 5
Avatar billede dennismp Nybegynder
21. maj 2004 - 18:29 #10
sub_date(now(), INTERVAL 15 MINUTE) < FROM_UNIXTIME(m.stamp)
Avatar billede kappel Nybegynder
21. maj 2004 - 18:37 #11
nu har jeg:

<?php
    $sql = "
        SELECT count(distinct u.user)
        FROM chat_user u, chat_message m
        WHERE u.user = m.user
        sub_date(now(), INTERVAL 15 MINUTE) < FROM_UNIXTIME(m.stamp)

    $result = mysql_query($sql) or die( mysql_error() );

    if ( $row = mysql_fetch_row($result) ) {
        echo "Online i chatten lige nu:{$row[0]}<br />";
    }
?>


og den melder følgende fejl:

Parse error: parse error, unexpected T_STRING in /customers/kappels.net/kappels.net/httpd.www/super6/sider/chat.php on line 12
Avatar billede kappel Nybegynder
21. maj 2004 - 18:39 #12
linie 12:
        echo "Online i chatten lige nu:{$row[0]}<br />";
Avatar billede dennismp Nybegynder
21. maj 2004 - 20:24 #13
<?php
    $sql = "
        SELECT count(distinct u.user)
        FROM chat_user u, chat_message m
        WHERE u.user = m.user
        sub_date(now(), INTERVAL 15 MINUTE) < FROM_UNIXTIME(m.stamp)";

    $result = mysql_query($sql) or die( mysql_error() );

    if ( $row = mysql_fetch_row($result) ) {
        echo "Online i chatten lige nu:{$row[0]}<br />";
    }
?>
Avatar billede kappel Nybegynder
21. maj 2004 - 20:31 #14
fejl:

You have an error in your SQL syntax near 'sub_date(now(), INTERVAL 15 MINUTE) < FROM_UNIXTIME(m.stamp)' at line 5
Avatar billede dennismp Nybegynder
21. maj 2004 - 20:35 #15
<?php
    $sql = "
        SELECT count(distinct u.user)
        FROM chat_user u, chat_message m
        WHERE u.user = m.user
        AND sub_date(now(), INTERVAL 15 MINUTE) < FROM_UNIXTIME(m.stamp)";

    $result = mysql_query($sql) or die( mysql_error() );

    if ( $row = mysql_fetch_row($result) ) {
        echo "Online i chatten lige nu:{$row[0]}<br />";
    }
?>
Avatar billede kappel Nybegynder
21. maj 2004 - 20:38 #16
stadig:
You have an error in your SQL syntax near '(now(), INTERVAL 15 MINUTE) < FROM_UNIXTIME(m.stamp)' at line 5
Avatar billede dennismp Nybegynder
21. maj 2004 - 20:47 #17
Jeg må vist til at tage mig sammen.. Her:
<?php
    require("../lib/db.php");
    mysql_select_db("dennis_test");
    $sql = "
        SELECT count(distinct u.user)
        FROM chat_users u, chat_messages m
        WHERE u.user = m.user
        AND subdate(now(), INTERVAL 15 MINUTE) < FROM_UNIXTIME(m.stamp)";

    $result = mysql_query($sql) or die( mysql_error() );

    if ( $row = mysql_fetch_row($result) ) {
        echo "Online i chatten lige nu:{$row[0]}<br />";
    }
?>

Koden virker (syntaksmæssigt).. Men det er stadig under antagelse at stamp er en værdi du har fået fra now() når du opretter beskeden i databasen.
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