j4nk3y: Update einer Chatfunktion

Beitrag lesen

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.

  1. 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.

  1. 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 = ""; 
 	
 }
  1. 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

0 151

Update einer Chatfunktion

j4nk3y
  • html
  • javascript
  • php
  1. 2
    Felix Riesterer
    • datenbank
    • php
    • sicherheit
    1. 0
      j4nk3y
      1. 0
        Gunnar Bittersmann
    2. 0
      Gunnar Bittersmann
      1. 0
        Matthias Apsel
        1. 0
          Gunnar Bittersmann
      2. 0
        j4nk3y
        1. 0
          Gunnar Bittersmann
          1. 0
            j4nk3y
      3. 0
        Felix Riesterer
        1. 0
          j4nk3y
          • zur info
          1. 1
            Felix Riesterer
            • php
            • programmiertechnik
            • zur info
            1. 0
              j4nk3y
        2. 0
          Gunnar Bittersmann
    3. 0
      j4nk3y
      1. 0
        Felix Riesterer
        • php
        • programmiertechnik
        • sicherheit
        1. 0
          j4nk3y
          1. 0
            Der Martin
            1. 0
              j4nk3y
              1. 0
                Der Martin
                1. 0
                  j4nk3y
          2. 0
            Felix Riesterer
            1. 0
              j4nk3y
              1. 0
                Der Martin
                1. 0
                  j4nk3y
              2. 1
                dedlfix
                1. 0
                  Gunnar Bittersmann
                  • typografie
                2. 0
                  j4nk3y
                  1. 0
                    dedlfix
                    1. 0
                      j4nk3y
                      1. 0
                        dedlfix
                        1. 0
                          j4nk3y
                          1. 0
                            dedlfix
                            1. 0
                              j4nk3y
                              1. 0
                                Der Martin
                                1. 0
                                  j4nk3y
                                  1. 0
                                    Der Martin
                              2. 1
                                dedlfix
                                1. 0
                                  Der Martin
                              3. 0
                                Gunnar Bittersmann
                                • datenbank
                                • programmiertechnik
                                1. 0
                                  j4nk3y
        2. 0
          Der Martin
        3. 0
          Gunnar Bittersmann
          • internationalisierung
          • php
          1. 0
            Felix Riesterer
            1. 0
              Tabellenkalk
              • zitat
              • zu diesem forum
              1. 1
                Matthias Apsel
    4. 0
      1unitedpower
      1. 1
        dedlfix
        1. 1
          1unitedpower
          1. 0
            Christian Kruse
          2. 0
            dedlfix
            1. 0
              1unitedpower
              1. 0
                dedlfix
                1. 0
                  Christian Kruse
                  1. 0
                    dedlfix
                  2. 0
                    1unitedpower
                    1. 0
                      Christian Kruse
                      1. 0
                        1unitedpower
                    2. 0
                      dedlfix
                      1. 0
                        1unitedpower
                        1. 0
                          dedlfix
  2. 0
    j4nk3y
    1. 0
      Gunnar Bittersmann
      • html
      1. 0
        j4nk3y
        1. 0
          Gunnar Bittersmann
          1. 0
            j4nk3y
            1. 0
              Matthias Apsel
              1. 0
                j4nk3y
  3. 0
    j4nk3y
  4. 0
    pl
    1. 0
      j4nk3y
      1. 0
        dedlfix
        1. 0
          j4nk3y
          1. 0
            dedlfix
            1. 0
              j4nk3y
              1. 0
                pl
                1. 0
                  j4nk3y
                  1. 0
                    pl
                    1. 0
                      dedlfix
                      1. -2
                        pl
                        1. 0
                          Matthias Apsel
                  2. 0
                    pl
              2. 0
                dedlfix
                1. 0
                  j4nk3y
                  1. 0
                    dedlfix
            2. 0
              j4nk3y
              1. 0
                dedlfix
      2. 0
        pl
  5. 0
    j4nk3y
    1. 0
      dedlfix
    2. 0
      j4nk3y
      1. 0
        j4nk3y
        1. 0
          pl
        2. 0
          dedlfix
          1. 0
            j4nk3y
            1. 0
              dedlfix
              1. 0
                j4nk3y
          2. 0
            j4nk3y
            1. 0
              j4nk3y
  6. 0
    j4nk3y
    1. 0
      Der Martin
      1. 0
        j4nk3y
        1. 0
          dedlfix
          1. 0
            j4nk3y
            1. 0
              Der Martin
              1. 0
                j4nk3y
        2. 0
          Der Martin
          1. 0
            j4nk3y
            1. 1
              Felix Riesterer
              1. 0
                j4nk3y
                1. 0
                  Matthias Apsel
                  1. 0
                    j4nk3y
                    • menschelei
                2. 0
                  Felix Riesterer
                  • php
                  • programmiertechnik
                  • sql
                  1. 0
                    j4nk3y
                    1. 0
                      Der Martin
                      1. 0
                        j4nk3y
                        1. 0
                          Der Martin
                          1. 0
                            j4nk3y
                            • menschelei
                    2. 0
                      Felix Riesterer
                      1. 0
                        pl
                      2. 0
                        j4nk3y
                        1. 2
                          dedlfix
                          1. 0
                            j4nk3y
                            1. 0
                              dedlfix
                              1. 0
                                Christian Kruse
                                1. 1
                                  dedlfix
                  2. 0
                    j4nk3y
                  3. 0
                    j4nk3y
                    1. 0
                      Felix Riesterer
                      1. 0
                        dedlfix
                        1. 0
                          j4nk3y
                          1. 0
                            pl
                            1. 0
                              j4nk3y
                          2. 0
                            dedlfix
                      2. 0
                        j4nk3y
                        1. 0
                          Der Martin
                        2. 0
                          Felix Riesterer
                          1. 0
                            Der Martin
                            1. 0
                              dedlfix
                          2. 0
                            j4nk3y
                            1. 1
                              Der Martin
                              1. 0
                                j4nk3y
    2. 0
      j4nk3y
      1. 0
        dedlfix
        1. 0
          j4nk3y
          1. 0
            Christian Kruse
            1. 0
              j4nk3y
              1. 0
                Christian Kruse
              2. 0
                Matthias Apsel
                • zu diesem forum
                1. 0
                  j4nk3y