获取数据库数据而不重新加载页面

时间:2014-05-26 04:28:26

标签: php

的index.php

<?php 
    include_once ('Messages.php');
        $object = new Messages();
        $object->NewMessage($nick, $message); // INSERT NEW MESSAGE TO DATABASE 
        $object->ShowMessage(); // SHOWS MESSAGES FROM DATABSE


?>
Leave a message:
<form method = 'POST'>
    <textarea name='message'></textarea><br>
    <input type='submit' name='submit' value='Send'>
</form>

Messages.php

<?php

include_once('../login/connect.php');
class Messages {

    private $db;

    public function __construct(){
        $this->db = new Connect();
        $this->db = $this->db->DbConnect();
    }

    // INSERT NEW MESSAGE TO DATABASE
    public function NewMessage($nick, $message){
        if (isset($_POST['submit'])) {
            $message = $_POST['message'];
            if(!empty($message)){           
                $nick = $_SESSION['nickname'];

                $userid = $this->db->prepare("SELECT id FROM users WHERE name=?");
                $userid->bindParam(1, $nick);
                $userid->execute();

                foreach($userid as $userid1){
                    $userid = $userid1['id'];       
                }
                $st = $this->db->prepare("INSERT INTO bericht (message, uid) VALUES (?,?)");
                $st->bindParam(1, $message);
                $st->bindParam(2, $userid);
                $st->execute();
            } else {
                echo 'Please enter a message!';
            }
        }
    }

    //SHOW ALL NICKNAME/MESSAGE FROM DATABASE
    public function ShowMessage() {

        $st = $this->db->query("SELECT * FROM bericht");
        $stt = $this->db->query("SELECT * FROM users");


        foreach($stt as $uhu){
        foreach ($st as $bericht){

        $nicknames = $bericht['uid'];

        $nick = $this->db->prepare("SELECT name FROM users WHERE id=?");
        $nick->bindParam(1, $nicknames);
        $nick->execute();

        foreach ($nick as $nick1){
            $nick = $nick1['name'];
            $image = $uhu['foto'];

            $a = $this->db->prepare("SELECT users FROM users WHERE name=?");
            $a->bindParam(1, $nick);
            $a->execute();

            foreach($a as $b){
            $image = $b['foto'];
            }

            echo "<b>". $nick . ": </b>";
            echo $bericht['message'].'<br>';
            }
            }
        }
    }
}
?>

http://pastebin.com/BPWjXpt1 // MESSAGES.PHP上面的代码


消息存储在数据库中。

现在,每当有人发布新消息时,都需要重新加载页面才能看到新消息。

我想知道当有人发布消息而没有刷新以查看新消息时,如何直接获取新消息。

我尝试过使用AJAX,但由于我的知识有限,我无法正常工作。

我可以下载一个已经由网络上某人编写的聊天框,但这对我不了解。

我希望有人可以帮我这个(我不想让TimeRut的AutoReloadPage()函数每次都重新加载页面。)

1 个答案:

答案 0 :(得分:3)

你的第一个猜测是正确的,为了避免重新加载页面Ajax是要走的路,没有办法解决它,我强烈建议你深入研究它。阿贾克斯可能很难学,但它真的不那么可怕。

实现ajax以发送新消息相对容易。

实现ajax以检查服务器上的任何人是否发布了新消息,然后为所有用户更新DOM,这有点难度,您需要轮询服务器并检查更改< / p>