Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 03:43

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Chat box via Mssql

Discussion on Chat box via Mssql within the Web Development forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Feb 2011
Posts: 57
Received Thanks: 35
Chat box via Mssql

hi hab ein kleines problem.
undzwar möchte ich das die ausgabe von der sql abfrage live ist ( wie in ner chatbox halt).

die frage ist nun wie ich das anstelle.. kann mir da jemand helfen?

hier ist mal der code der abfrage.

Code:
<?php
	odbc_exec($mssql, 'USE [****]');
	if(isset($_POST['ok'])) {
		if($_POST['post'] == '') {
			echo '<div class="fail">Du musst einen Text eingeben</div>';
		} else {
			odbc_exec($mssql, 'INSERT INTO [web_shoutbox](username, post, datetime) VALUES(\''.mssql_escape_string($_POST['uname']).'\', \''.mssql_escape_string($_POST['post']).'\', \''.date('d.m.Y H:i:s').'\')');

		}
	}
	
	$select = odbc_exec($mssql, 'select * from (select top 13 * from [web_shoutbox] order by nid Desc) as a Order by nid ASC');

	echo '	<div id="box"></div>
		<table id="table" style="width: 700px; height: 200px; background-color:#FFFFFF;" "border-width:thick; padding:5px; border-color:#000000;
      		border-style:ridge;">
		<tr>
			<td id="key" style="width:500px;"></td>
			<td id="key" style="width:100px;"></td>
			<td id="key" style="width:50px;"></td>
		</tr>';
	while($result = odbc_fetch_array($select)) {
	echo '<tr id="did_'.$result['nid'].'" class="row">
			<td id="value" style="width:500px;">'.$result['username'].': '.$result['post'].'</td>
			<td id="value">'.date('G:i', strtotime($result['datetime'])).'Uhr '.date('d.m.y', strtotime($result['datetime'])).'';
		odbc_exec($mssql, 'USE [******]');
		$auth = odbc_exec($mssql, 'SELECT Authority FROM [ACCOUNT_TBL] WHERE account=\''.mssql_escape_string($_SESSION['user']).'\'');
		if(odbc_result($auth, 'Authority') == 'A' || odbc_result($auth, 'Authority') == 'M') {

		echo'<a href="javascript:chat_delete('.$result['nid'].');" title="Delete"><img src="img/delete.png" /></a></td>';
		}
		echo'</tr>';
		
	}


	echo '</table>';
	echo '<span id="text"></span>';
	echo '<div id="box"></div>';
	echo '<form method="post"  >
		<input type="hidden" name="uname" value="'.$_SESSION['user'].'" />
		<table id="table"><center>

			<tr>
				<td id="key"></td>
				<td id="value"><textarea name="post" style="width: 400px; height: 15px;"></textarea></td>
			</tr>

			<tr>
				<td id="key"></td>
				<td id="value"><input type="submit" name="ok" value="OK"/></td>
		</tr>
		</center></table>
	</form><br/>';
?>
xXConsXx is offline  
Old 07/07/2012, 14:03   #2
 
NotEnoughForYou's Avatar
 
elite*gold: 0
Join Date: Jun 2010
Posts: 3,406
Received Thanks: 2,024
mit ajax immer die neuen einträge nachholen
NotEnoughForYou is offline  
Thanks
1 User
Old 07/08/2012, 07:47   #3
 
elite*gold: 0
Join Date: Feb 2011
Posts: 57
Received Thanks: 35
ok hab das ganze nun mal probier..
muss dazu sagen hab noch nie vorher mit java oder ajax gearbeitet...
funktionieren tut es jedoch will ich nochmal das ok bekommen ob man das so lassen kann oder ob ich es noch verbessern soll. und wenn verbessern wie..

die funktion
PHP Code:
<script type "text/javascript">
var 
reg;
get();

function 
get()
{
    
rq = new XMLHttpRequest();
    
rq.open("post""getchat.php"true);
    
rq.send(null);
    
rq.onreadystatechange auswerten;
        
window.setTimeout(get10000);
}

function 
auswerten()
{
    if(
rq.readyState == && rq.status == 200)
        
document.getElementById("chatshowbox").innerHTML rq.responseText;
}

</script> 
xXConsXx is offline  
Old 07/08/2012, 13:25   #4


 
Xijezu's Avatar
 
elite*gold: 0
Join Date: May 2011
Posts: 5,086
Received Thanks: 3,472
Ich persönlich würde es über Cache laufen lassen, direkte Datenbankverbindungen bei einer Shoutbox ist meist etwas resourcen-kostspielig, vorallem bei MS SQL.
Xijezu is offline  
Old 07/08/2012, 13:44   #5
 
NotEnoughForYou's Avatar
 
elite*gold: 0
Join Date: Jun 2010
Posts: 3,406
Received Thanks: 2,024
Quote:
Originally Posted by Xijezu View Post
Ich persönlich würde es über Cache laufen lassen, direkte Datenbankverbindungen bei einer Shoutbox ist meist etwas resourcen-kostspielig, vorallem bei MS SQL.
das sowieso, außerdem sollte man auch immer nur die neuen Beiträge aus der DB holen und nicht alle.
NotEnoughForYou is offline  
Old 07/08/2012, 17:21   #6
 
elite*gold: 0
Join Date: Feb 2011
Posts: 57
Received Thanks: 35
und wie mache ich das?
wie gesagt hab noch nie damit gearbeitet
xXConsXx is offline  
Old 07/08/2012, 17:54   #7
 
elite*gold: 0
Join Date: Oct 2008
Posts: 319
Received Thanks: 88
Quote:
PHP Code:
<script type "text/javascript">
var 
reg;
get();

function 
get()
{
    
rq = new XMLHttpRequest();
    
rq.open("post""getchat.php"true);
    
rq.send(null);
    
rq.onreadystatechange auswerten;
        
window.setTimeout(get10000);
}

</script> 
Du solltestper try .. catch erstmal prüfen ob das ActiveXObject vorhanden ist, und wenn ja welche Version, da das XMLHttpRequest im IE8 oder 9 verbuggt ist, und wenn ActiveXObjekt vorhanden ist schauen welche Version (Microsoft.XMLHTTP oder Msxml2.http). Auserdem sendest du ja nichts, von daher solltest du "get" anstelle von "post" verwenden.

Quote:
PHP Code:
function auswerten()
{
    if(
rq.readyState == && rq.status == 200)
        
document.getElementById("chatshowbox").innerHTML rq.responseText;

Würde mich wundern wenn das in jedem Browser hinhaut, man kann sich bei JS da ja nie richtig sicher sein.
Fratyr is offline  
Thanks
1 User
Old 07/08/2012, 18:15   #8
 
elite*gold: 0
Join Date: Feb 2011
Posts: 57
Received Thanks: 35
Also gestestet habe ich es mit IE 8,9 Google crome, Firefox, Opera und Safari.
funktionieren tut es überall.

und das es ziemlich resourcen lastig ist habe ich mitlerweile schon bemerkt wir haben ihn mal getestet mit 15 leuten und da ging bei manchen die ladezeit hoch ohne ende...

wie mache ich das so das er nur dann abfragt wenn was neues gepostet wurde... die sql abfrage zu erstellen ist ja nicht das problem bei mir harkt es am ajax

Ich hab mal nen bisi weitergemacht.
komme nun aber wieder nicht mehr weiter.
bekomme die Funktionen nicht richtig hin.
Zur Zeit sieht mein script so aus;

Der Eigentliche Chatroom:

PHP Code:
<?php
    session_start
();
    include(
'inc/config.inc.php');
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" dir="ltr">
<head>
    <title>Chat Box</title>

    <!-- Contents -->
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="res/template.css" media="screen" />
    

<script type = "text/javascript">
var rq;
send();



function send()
{

}

function checknew()
{

}

function get()
{
    rq = new XMLHttpRequest();
    rq.open("get", "getchat.php", true);
    rq.send(null);
    rq.onreadystatechange = auswerten;
            window.setTimeout(get, 10000); /* Soll später wieder hier raus und bei send reinkommen*/
}
function auswerten()
{
    if(rq.readyState == 4 && rq.status == 200)
        document.getElementById("chatshowbox").innerHTML = rq.responseText;
}

</script>
</head>
<body topmargin="0" leftmargin="0" style="background-color: #000000;">
<br>
<div border=1; style="background-color: #FFFFFF; width: 250px; height: 50px;><font size='2'>
<span id="loggedin">Logged in as <b><?php echo $_SESSION['user']; ?></b></span><br>
<a href="chat.php">Refresh</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="./../account.php">Zurück</a>
</font></div>
<?php

    



    odbc_exec
($mssql'USE [WEBSITE_TCR_DBF]');
    if(isset(
$_POST['ok'])) {
        if(
$_POST['post'] == '') {
            echo 
'<div class="fail">You must fill-in all fields!</div>';
        } else {
            
odbc_exec($mssql'INSERT INTO [web_shoutbox](username, post, datetime) VALUES(\''.mssql_escape_string($_POST['uname']).'\', \''.mssql_escape_string($_POST['post']).'\', \''.date('d.m.Y H:i:s').'\')');

        }
    

    }



    echo
'<div id = "chatshowbox"><font size="2">';
    

    echo
'</font></div>';

    echo 
'</table>';
    echo 
'<span id="text"></span>';

        
    
    
    echo 
'<form method="post">';
    echo 
'<input type="hidden" name="uname" value="'.$_SESSION['user'].'" />
        <table id="table"><center>

            <tr>
                <td id="key"></td>
                <td id="value"><textarea name="post" style="width: 400px; height: 15px;"></textarea></td>
            </tr>

            <tr>    <td id="key"></td>
                <td id="value"><input type="submit" name="ok" value="OK" onclick="send();"></td>'
;


        echo
'</tr>
        </center></table>
    </form><br/>'
;
    
?>

</body>
</html>
Hier ist die getchat.php wird bereits durch die funktion get() aufgerufen
PHP Code:
<?php    session_start(); 
    include(
'inc/config.inc.php');
    
    
odbc_exec($mssql'USE [****_DBF]');



    echo 
'    <div id="box"></div>
        <table id="table" style="width: 900px; height: 200px; background-color:#FFFFFF;" "border-width:thick; padding:5px; border-color:#000000;
              border-style:ridge;">
        <tr>
            <td id="key" style="width:90%;"></td>
            <td id="key" style="width:10%;"></td>
        </tr>'
;

    
$select odbc_exec($mssql'select * from (select top 10 * from [web_shoutbox] order by nid Desc) as a Order by nid ASC');

    while(
$result odbc_fetch_array($select)) {
    echo 


            <td id="value" style="width:700px;">'
.$result['username'].': '.$result['post'].'</td>
            <td id="value" align="right">'
.date('G:i'strtotime($result['datetime'])).'Uhr '.date('d.m.y'strtotime($result['datetime'])).'</td>';        
    echo
'</tr>';    
    }


?>
die Checknew.php soll mit der function checknew() gestartet werden
PHP Code:
<?php

    
include('inc/config.inc.php');    
    
odbc_exec($mssql'USE [*****_DBF]');


if(isset(
$_GET['nid'])){
    
$get=($_GET['nid']);
    
$select odbc_exec($mssql'SELECT top 1 nid FROM [web_shoutbox] ORDER BY nid DESC');
    if(
odbc_result($select'nid') !=$get) {
                echo 
'<script language="JavaScript"><!--send;();// --></script>';
        } else {
        echo 
'<script language="JavaScript"><!--get();// --></script>';
    }else{
    echo 
'<script language="JavaScript"><!--send();// --></script>';
    }
?>
und die letzt die getnid.php soll mit der function Send() abgefragt werden
PHP Code:
<?php

    
include('inc/config.inc.php');    
    
odbc_exec($mssql'USE [****_DBF]');
    
$select odbc_exec($mssql'SELECT top 1 * FROM [web_shoutbox] ORDER BY nid DESC');
 

 if(
$result odbc_fetch_array($select) )
    {
    echo
'
    <script type = "text/javascript">
    window.location.href = "*******/inc/chat.php?nid='
.$result['nid'].'";
    </script>'
;
}else{ 
    echo
'
    <script type = "text/javascript">
    window.location.href = window.location.href;
</script>'
;

exit; 
?>
xXConsXx is offline  
Reply




All times are GMT +1. The time now is 03:44.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.