2017-09-12 3 views
0

私はphp、mysql、ajaxを使用して小さなチャットアプリケーションを作成しようとしています。関数ajaxを使用した後、出力にメッセージが表示されませんでした。データはデータベースに転送されます。はインデックスページにメッセージを表示していません

インデックスページコード

<?php 

    require('includes/core.inc.php'); 

    if(isset($_POST['send'])){ 

    if(send_msg($_POST['sender'], $_POST['message'])){ 
     echo 'Message sent.'; 
    }else{ 
     echo 'message faild to sent.'; 
    } 

    } 
?> 
<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <!--Page title--> 
    <title>chat application</title> 

    <!--css stylesheet--> 
    <link type="text/css" rel="stylesheet" href="public/css/main.css"/> 
    </head> 
    <body> 

    <div id="input"> 
     <form action="index.php" method="post"> 
     <lable>Enter name:<input type="text" name="sender"/></lable> 
     <lable>Enter message:<input type="text" name="message"/></lable><br/> 
     <input type="submit" name="send" value="send message"/> 
     </form> 
    </div><!--input--> 


    <div id="messages"> 

    </div> <!--Messages--> 

<!--JAVASCRIPT--> 

    <script type="text/javascript" src="scripts/js/jquery-1.7.2.min.js"></script> 
    <script type="text/javascript" src="scripts/js/auto_chat.js"></script> 


    </body> 
</html> 

chat.php

<?php 
    require('../../includes/database/connect.db.php'); 
    require('../../includes/functions/chat.func.php'); 

    $messages = get_msg(); 
    foreach($messages as $message){ 
    echo '<strong>'.$message['sender'].' sent</strong><br/>'; 
    echo $message['message'].'<br/><br/>'; 
    } 

?> 

チャット機能

<?php 

    function get_msg(){ 

    $query = "SELECT Sender,Message FROM chat"; 

    $run = mysql_query($query); 

    $messages = array(); 


    if($run === FALSE) { 
     die(mysql_error()); // TODO: better error handling 
    } 


    while($message = mysql_fetch_assoc($run)){ 

     $messages[] = array('sender'=>$message['Sender'], 'message'=>$message['Message']); 

    } 

    return $messages; 

    } 

    function send_msg($sender, $message){ 
    if(!empty($sender) && !empty($message)){ 
     $sender = mysql_real_escape_string($sender); 
     $message = mysql_real_escape_string($message); 

     $query = "INSERT INTO chat VALUES (null , '{$sender}', '{$message}')"; 

     if($run = mysql_query($query)){ 
     return true; 
     }else{ 
     return false; 
     } 

    }else{ 
     return false; 
    } 

    } 

?> 

これは私が追加したajaxの部分です。私はここに問題があると思うが、私はそれを見つけることができない。私は以前にjqueryとajaxを使用しなかった。どんな前提条件もありますか?

$(document).ready(function() { 
    var interval = setInterval(function() { 
    $.ajax({ 
     url: 'scripts/php/chat.php', 
     success: function(data){ 
     $('#messages').html(data); 
     } 
    }); 
    }, 1000); 
}); 

私は、データベース接続ファイルを持っています。問題はありません。もし私がそれを投稿することができます。私は

+0

これをデバッグすると、どのように具体的に失敗しますか?ブラウザのデバッグツールでAJAX操作を観察します。彼らは成功していますか?予想される間隔でAJAXリクエストがサーバーに送信されていますか?サーバーの応答は何ですか? – David

+0

私は初めてAJAXを使用しています。ブラウザにajaxを追加する方法私はFirefoxのブラウザを使用しています。エラー応答はありません。インデックスページにはメッセージは表示されません。しかし、私はメッセージを送るときにデータベースに行きます。 –

+0

Firefoxでは、推奨されるデバッグツールがまだFirebugプラグインであると思います。それをFirefoxに追加して、AJAXコードが行っているネットワーク要求を調べるために使用します。現時点では無視しているエラーがあります。 – David

答えて

0

だけindex.phpファイル

<?php 
error_reporting(0); 
$conn = mysql_connect('localhost','root',''); 
$db = mysql_select_db('test',$conn); 
    function send_msg($sender, $message){ 
    if(!empty($sender) && !empty($message)){ 
     $sender = mysql_real_escape_string($sender); 
     $message = mysql_real_escape_string($message); 
     $query = "INSERT INTO chat VALUES (null , '{$sender}', '{$message}')"; 
     if($run = mysql_query($query)){ 
     return true; 
     }else{ 
     return false; 
     } 
    }else{ 
     return false; 
    } 
    } 
    if(isset($_POST['send'])){ 
    if(send_msg($_POST['sender'], $_POST['message'])){ 
     echo 'Message sent.'; 
    }else{ 
     echo 'message faild to sent.'; 
    } 
    } 
?> 
<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <!--Page title--> 
    <title>chat application</title> 
    <!--css stylesheet--> 
    <link type="text/css" rel="stylesheet" href="public/css/main.css"/> 
    </head> 
    <body> 
    <div id="input"> 
     <form action="" method="post"> 
     <lable>Enter name:<input type="text" name="sender"/></lable> 
     <lable>Enter message:<input type="text" name="message"/></lable><br/> 
     <input type="submit" name="send" value="send message"/> 
     </form> 
    </div><!--input--> 
    <div id="messages"> 
    </div> <!--Messages--> 
    </body> 
</html> 
<script src="https://code.jquery.com/jquery-3.2.1.js"></script> 
<script> 
$(document).ready(function() { 
    var interval = setInterval(function() { 
    $.ajax({ 
     url: 'test1.php', 
     success: function(data){ 
     $('#messages').html(data); 
     } 
    }); 
    }, 1000); 
}); 
</script> 

にコードの下に入れて、AJAX呼び出しtest1.phpに1つのファイルを作成して、私のために動作します上記

<?php 
error_reporting(0); 
$conn = mysql_connect('localhost','root',''); 
$db = mysql_select_db('test',$conn); 
    function get_msg(){ 
    $query = "SELECT Sender,Message FROM chat"; 
    $run = mysql_query($query); 
    $messages = array(); 

    if($run === FALSE) { 
     die(mysql_error()); // TODO: better error handling 
    } 

    while($message = mysql_fetch_assoc($run)){ 
     $messages[] = array('sender'=>$message['Sender'], 'message'=>$message['Message']); 
    } 
    return $messages; 
    } 


    $messages = get_msg(); 
    foreach($messages as $message){ 
    echo '<strong>'.$message['sender'].' sent</strong><br/>'; 
    echo $message['message'].'<br/><br/>'; 
    } 

?> 

コード

の下に入れて助けてください。他のjsファイルは必要ありません。

+0

あなたに親切にdb接続ごとにdb設定を変更していただきありがとうございます。 –

+0

に感謝mahipal。問題はjのクエリファイルです。私は別の人がそれを試して作成しました。出来た。ありがとうございました。 –