0

私はウェブサイト用のライブチャット機能を書いていますが、入力されたテキストの表示以外はすべて機能しています。デフォルトのステートメントをチャットボックスに表示することはできますが、これを完全に実行する機能が必要です機能はこちらの別ページ

    if(isset($_POST['method']) === true && empty($_POST['method']) === false)
    {
        $method = trim($_POST['method']);

        if($method === 'fetch')
        {
            $messages = fetchMessages();

            if(empty($messages) === true)
            {
                echo 'A representative will be with you shortly';
            }else
            {
                foreach($messages as $message)
                {
                    $ts = $message['timestamp'];
                    ?>
                    <div class = "message">
                        <a href = "#"><?php echo date('n-j-Y h:i:s a', $ts); ?>
                        <?php echo $message['username']; ?></a>says:<p>
                        <?php echo nl2br($message['message']); ?></p>
                    </div>
                    <?php
                }
            }
        }
    }

fetchMessage()もちろん、このファイルの関数を呼び出しています。ただし、関数を機能させるには、chatRoom.php ファイルにセッション ID を渡して、その特定のセッションを参照するチャットのみを取得できるようにする必要があります。

このスクリプトをchatRoom.phpファイルに移動するか、このファイルにchatRoom.phpファイルを含めると、チャットルームが壊れて、チャットが行われるはずのチャットボックスに2番目のコピーが表示され、何もしません。

このコードを使用して fetchMessage をファイルに移動すると、デフォルトのメッセージのみが表示され、他には何も表示されません。

jquery と ajax を使用して、データベースのテーブルに格納されているチャットのインクリメンタル フェッチを実行しています。他の情報が必要な場合は、これに追加させていただきますが、すべてが必要かどうかはわかりません. 私はまだjqueryとajaxにかなり慣れていません。

これがchatRoom.phpのコードです

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <?php
    session_start();
    include 'conection.php';

    $name = $_GET['name'];
    $query = "SELECT * FROM chatSession WHERE user_name = '$name'";
    $result = mysql_query($query, $con) or die(mysql_error());
    $row = mysql_fetch_array($result);

    $session = $row['session_id'];

    function fetchMessages()
    {
$get = ("SELECT * FROM chatRoom WHERE session_id = '$session' ORDER BY chat.timestamp ASC");
$hold = mysql_query($get, $con);
$show = mysql_fetch_array($hold);

return $show;
    }

    if(isset($_GET['submitmsg']))
    {
$message = mysql_real_escape_string($_GET['usermsg']);
$throw = "INSERT INTO chatRoom(session_id, source, message, timestamp) VALUES('".$_GET['id']."', '".$_GET['source']."', '$message', UNIX_TIMESTAMP())";

if (!mysql_query($throw,$con))
{
    die('Error: ' . mysql_error());
}else
{

}
    }
    ?>
<head>
    <title></title>
    <link type="text/css" rel="stylesheet" href="css/chatStyle.css" />
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
</head>
<body>
    <div id="wrapper">
        <div id="menu">
            <p class="welcome"><b>Welcome, <?php echo $row['user_name']; ?></b></p>
            <p class="logout"><a href="nameSub.php?logout=true&name=<?php echo $row['user_name']; ?>&id=<?php echo $row['session_id']; ?>">Exit Chat</a></p>
            <div style="clear:both"></div>
        </div>
        <div id="chatbox">
        </div>
        <form name = "message" action = "<?php echo $_SERVER['PHP_SELF']; ?>" method = "get">
            <input type = "hidden" name = "name" value = "<?php echo $_GET['name']; ?>" />
            <input name = "id" type = "hidden" value = "<?php echo $row['session_id']; ?>" />
            <input name = "source" type = "hidden" value = "<?php echo $row['user_name']; ?>" />
            <input name = "usermsg" type = "text" id = "usermsg" size = "63" />  
            <input name = "submitmsg" type = "submit"  id = "submitmsg" value = "Send" />  
        </form> 
    </div>
    <script type="text/javascript">
        $(document).ready(function()
        {
            fetchMessages = function()
            {
                $.ajax
                ({
                    url:'functions.php',
                    type:'post',
                    data:{method:'fetch'},
                    success:function(data)
                    {
                        $('#chatbox').html(data);
                    }
                });
            }

            setInterval(fetchMessages, 5000);
            fetchMessages();
        });
    </script>
</body>

これが役立つことを願っています

4

1 に答える 1

1

functions.php必要な関数を、両方のファイルに含まれる外部ファイル (例: ) に移動します。

編集:さらに詳しく説明します:

PHP ファイル 1:

 include('functions.php');
 $myvar = $_GET['myvar']; // jQuery GET variable
 $othervar = $_POST['myvar'];

 commonFunction($myvar,$othervar);

PHP ファイル 2:

include('functions.php');
 $myvar = $_GET['myvar']; // jQuery GET variable
 $othervar = $_POST['myvar'];

 commonFunction($myvar,$othervar);

functions.php :

function commonFunction($var1, $var2) { 
  // Do common proccessing here
}
于 2013-02-28T19:04:39.240 に答える