2016-11-03 5 views
1

私はPHPでチャットアプリケーションを作っています。私が直面している問題は、2番目のメッセージを送信したときに初めて1番目のメッセージが表示されることです。たとえば、4回目のメッセージを表示する必要がある場合は、5回目のメッセージを送信するか、ページを更新する必要があります。問題の原因を見つけるのを手伝ってください。 Simlifiedコードは以下の通りです:古いメッセージは、新しいメッセージを送信したり、チャットアプリケーションのページを更新したりするときにのみ表示されます。

<!DOCTYPE html> 
<html> 
<head> 
<title> Chatting project</title> 
<link rel="stylesheet" href="css/style.css"> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> </script> 
<script src="js/script.js"></script> 
</head> 
<body> 
<div id="container"> 
    <header> 
    <h1><span>Chatting project</span></h1> 
    </header> 
    <div id="shouts"> 
     <ul> 

    <!-- Insert MySQL datbase into HTML  --> 
    <?php 
    $connection = mysqli_connect("localhost", "root", "", "tru"); 
    $query = "SELECT * FROM shouts ORDER BY id Desc LIMIT 8"; 
    $shouts = mysqli_query($connection, $query); 
    ?> 

    <!-- Insert MySQL datbase into HTML  --> 
    <?php while ($row = mysqli_fetch_assoc($shouts)) : ?> 
    <li><?php echo $row['name']; ?>: <?php echo $row['shout']; ?> [<?php echo $row['date']; ?>]</li> 
    <?php endwhile; ?> 

    </ul> 
    </div> 
    <footer> 
     <form action="index.php" method="post"> 

     <label>Shout Text: </label> 
     <input type="text" name="shout" placeholder="Enter your message here"> 
     <input type="submit" id="submit" value="SHOUT!" > 
    </form> 

<?php 
$link = mysqli_connect("localhost", "root", "", "tru"); 
$sql = "INSERT INTO shouts (name,shout) VALUES  `('$_POST[name]','$_POST[shout]')";` 
if(mysqli_query($link, $sql)){ 
    echo "Records added successfully."; 
} else { 
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
} 

// close connection 
mysqli_close($link); 
?> 


</footer> 
</div> 

+0

AJAXを使用する方が良いでしょうか? –

+0

私はあなたのデータベースに新しい行を置く前に、私の解決策が助けなければならないと思います。あなたはデータを選択しています。 –

答えて

0

問題は、SQLからSELECTINGINSERTINGをしているあなたのコードです。これらの行:あなたが新しいものを置く前に、あなたがデータをフェッチしているあなたのケースでは

<?php 
$link = mysqli_connect("localhost", "root", "", "tru"); 
$sql = "INSERT INTO shouts (name,shout) VALUES `('$_POST[name]','$_POST[shout]')";` 
if(mysqli_query($link, $sql)){ 
    echo "Records added successfully."; 
} else { 
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
} 
$query = "SELECT * FROM shouts ORDER BY id Desc LIMIT 8"; 
$shouts = mysqli_query($link, $query); 

// close connection 
mysqli_close($link); 
?> 

:だから、それはのようになります

<?php 
$connection = mysqli_connect("localhost", "root", "", "tru"); 
$query = "SELECT * FROM shouts ORDER BY id Desc LIMIT 8"; 
$shouts = mysqli_query($connection, $query); 
?> 

<?php 
$link = mysqli_connect("localhost", "root", "", "tru"); 
$sql = "INSERT INTO shouts (name,shout) VALUES  `('$_POST[name]','$_POST[shout]')";` 
if(mysqli_query($link, $sql)){ 
    echo "Records added successfully."; 
} else { 
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
} 

// close connection 
mysqli_close($link); 
?> 

SELECTライン前であるべきあなたのデータベースは、瞬時にSELECTデータベースから新しい行がまだありません。

+0

いいえ兄弟は働いていません。 @ Karol Gasienica –

+0

新しいコードを投稿してください –

+0

1つのコメントに2番目のコードも投稿できません –

関連する問題