Nun gut.
Also bleibt es nach den neuen Veränderungen in der chat_list.php und der chat_insert.php bei den 2 Fragestellungen:
Erstens kann ich zurzeit nur aus einer Tabelle die Nachrichten ausgeben bzw. in diese schreiben. Ich möchte aber in mehrere Tabellen schreiben können, jenachdem wohin der User schreiben möchte.
Zweitens wird die chat_list funktion jede Sekunde ausgeführt, was ja sehr unschön ist und viel zuviel Serverkapazität benötigt, sprich eine Websocket verbindung soll her.
- Der Html Teil * geändert:
<section id="chat_wrapper">
<!--<form>
<input type="checkbox" name="world" class="checkbox_chat" id="chat_world_list" value="world" />
<label for="world">World</label>
<input type="checkbox" name="language" class="checkbox_chat" id="chat_language_list" value="<?php echo $_SESSION['language'];?>"/>
<label for="language">Language</label>
<?php if($page == "lobby"){echo '<input type="checkbox" name="alliance" class="checkbox_chat" id="chat_alliance_list" value="alliance" />
<label for="alliance">Alliance</label>';} ?>
</form>-->
<div id="chatbox"></div>
<!--<form>
<select name="destination" size="5">
<option selected>World</option>
<option>Language_1</option>
<option>Language_2</option>
<option>Alliance</option>
<option>Private_name_1</option>
<option>Private_name_2</option>
<option>Private_name_3</option>
<option>Private_name_4</option>
</select>
-->
<input type="text" name="chat" id="chat_text" size="25" onkeydown = "if (event.keyCode == 13) {document.getElementById('chatbutton').click()}"/>
<button id="chatbutton" onclick="post_chat();" >Send</button>
</form>
<script>
list_chat();
</script>
</section>
Hier hab ich nur kurz eine Auswahlliste hinzugefügt, so wie sie aussehen könnte. World ist die standart Tabelle, weiter wären Language_1 , Language_2 , Alliance und Private.
- Die js Funktionen:
function list_chat()
{
var hr = new XMLHttpRequest();
var url = "../functions/php/chat_list.php";
hr.onreadystatechange = function()
{
if (hr.readyState == 4 && hr.status == 200)
{
document.getElementById("chatbox").innerHTML = hr.responseText;
var div = document.getElementById("chatbox");
div.scrollTop = div.scrollHeight;
}
}
hr.open("GET", url, true) // Mehr informationen zu der chat_list senden!...??
hr.send();
setTimeout(list_chat, 1000); //Problem! zu wss ändern...??
}
function post_chat()
{
var hr = new XMLHttpRequest();
var url = "../functions/php/chat_insert.php";
var chat = document.getElementById("chat_text").value;
var text = "chat=" + chat;
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.send(text); // Mehr informationen zu der chat_insert senden!...??
document.getElementById("chat_text").value = "";
}
- Nun zu php *geändert :
3.1 Die chat_list.php
$output = "";
require_once('db_connect_function.php');
$get_messages = "Select * FROM (Select message_writer, message, message_date FROM chat ORDER BY message_date DESC Limit 50 ) chat ORDER BY message_date ASC";
if ($result = $db->query($get_messages)):
while ($row = $result->fetch_assoc()):
?>
<article>
<footer>
<time datetime="<?php echo date('c', $row['message_date']); ?>"><?php echo date('H:i:s', $row['message_date']); ?></time>
<span class="author"><?php echo htmlspecialchars($row['message_writer']); ?></span>
</footer>
<p class="message"><?php echo htmlspecialchars($row['message']); ?></p>
</article>
<?php
endwhile;
else:
//error_log! $create_db_connect->error.
endif;
3.2 Die chat_insert.php *geändert
session_start();
require_once('db_connect_function.php');
if(isset($_POST['chat']) && !empty($_POST['chat']))
{
$writer = $_SESSION['user_name'];
$chat = $_POST['chat'];
$world = $_POST['world'];
$language = $_POST['language'];
$alliance = $_POST['alliance'];
$insert_message = sprintf(
'INSERT INTO chat ('
. 'message_writer, message, message_date'
. ') VALUES ('
. '\'%1$s\', \'%2$s\', \'%3$s\''
. ')',
$_SESSION['user_name'],
$_POST['chat'],
time());
if($db -> query($insert_message) === TRUE)
{
$db -> commit();
}
else
{
//error_log! $create_db_connect->error.
}
exit();
}
Sonniger Gruß Jo