Anonymní profil kozusnik – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil kozusnik – Programujte.comAnonymní profil kozusnik – Programujte.com

 

Příspěvky odeslané z IP adresy 188.175.31.–

kozusnik
JavaScript, AJAX, jQuery › Odkazování na elementy JavaS…
13. 11. 2012   #166677

děkuju, už jsem to vyřešil - tak jak jste říkal tím getElementById....
Ale mám druhý problém, a sice mám dejme tomu 3 chaty a u každého potřebuji, aby se mi co sekundu prováděl dotaz na databázi a vypisoval se text z databáze... problém ale je, že mi funguje pouze poslední volaná funkce na vypisování a ne všechny 3... nevím jak to vyřešit, mohli byste mi poradit? 
 AJAXOVÉ ZPRACOVÁNÍ A VYPSÁNÍ DIVŮ

<?php
require_once 'chatDiv.php';
?>
<?php
require_once 'chatDiv2.php';
?>
<?php
require_once 'chatDiv3.php';
?>
<script>
//id příspěvku
var id=0;
//čas obnovování
var timer=1000;
//ÄŤtecĂ­ a zapisovacĂ­ objekt
var ajax1 = (window.XMLHttpRequest ? new XMLHttpRequest() : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false));
var ajax2 = (window.XMLHttpRequest ? new XMLHttpRequest() : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false));
//čtení zpráv
function zpravy(recipient){
if(!ajax1){
alert("Tady AJAX neběží...");
return true;
}

ajax1.onreadystatechange= function () {text(recipient); } ;
//požadavek na čtené nových příspěvků
ajax1.open("GET", "include/chat/chatZpracovani.php?action=aktualizovat&id="+id, true);
ajax1.send(null);
return false;
}

//zápis zpráv
function posli(recipient){
if(!ajax2){
alert("Tady AJAX neběží...");
return true;
}
ajax2.onreadystatechange= function () {poslano(form, chat); } ;
ajax2.open("POST", "include/chat/chatZpracovani.php?action=poslat", true);
ajax2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//poslání hodnot z formuláře

chatForm = "chatForm"+recipient;
chatText = "chatText"+recipient;
recipientId = "recipientId"+recipient;
    
ajax2.send("chatText="+document.getElementById(chatText).value+"&recipientId="+recipient+"&senderId="+document.getElementById("senderId").value+"&senderName="+document.getElementById("senderName").value);
return false;
}

//úkony pro poslání zprávy
function poslano(recipient){
if (ajax2.readyState == 4){
if(ajax2.status == 200  || ajax2.status==0){
//pokud se zpráva uložila, dojde k vymazání prvku se zprávou
if(ajax2.responseText=="ok"){
    

chatText = "chatText"+recipient;    
document.getElementById(chatText).value="";
zpravy(recipient);
}
else alert("Bohužel se nepodařilo zprávu odeslat ");
}
else alert("Chyba: "+ ajax2.status +":"+ ajax2.statusText);
}
}
//vypsání získaných příspěvků
function text(recipient){
var txt;
var param= new Array();
if (ajax1.readyState == 4){
if(ajax1.status == 200  || ajax1.status==0){
//rozdělení textového řetězce na text a id
param=ajax1.responseText.split("|id=");
//výpis do DIVu chtext
//recipient = 23;
chtext = "chtext"+recipient;
document.getElementById(chtext).innerHTML = param[0] + document.getElementById(chtext).innerHTML;
//uložení id nejaktuálnějšího příspěvku
}
else alert("Chyba: "+ ajax1.status +":"+ ajax1.statusText);
}
}
//aktualizace příspěvků
window.setInterval("zpravy(1)", 1000);
window.setInterval("zpravy(2)", 1000);
window.setInterval("zpravy(3)", 1000);




//function aktualizovat(){
//window.setTimeout("aktualizovat()", timer);
//zpravy();
//}

</script>   

<div class="clear"></div>

chatDiv.php

<div id="section" class="chat red left"> 
<div class="info">
<h1>Mark</h1>
<h2>online</h2>
</div>
<div class="text">

<ul id="chtext1" class="scroll">  
</ul>
 
<form name="chatForm1" id="chatForm1" action="include/chat/chatZpracovani.php?action=poslat" method="POST">
<input type="text" size="20" id="chatText1" name="chatText1" value="">
<input type="hidden" id="senderId" name="senderId" value="<?php echo $_SESSION['id'];?>">
<input type="hidden" id="senderName" name="senderName" value="<?php echo $_SESSION['username']; ?>">
<input type="hidden" id="recipientId" name="recipientId" value="1">
<input onclick="return posli(1);" type="submit" value="poslat">
</form>    
</div>
<div class="status left"><img src="images/on.png"><form method="post" action="">
<input type="status" name="chat_status" id="chat_status" class="chat_status" placeholder="nějaký status">
</form>
</div>
<div class="settings right">Settings</div>
<div class="clear"></div>
</div>


chatDiv2.php
 

<div id="section" class="chat lime left"> 
<div class="info">
<h1>Mark</h1>
<h2>online</h2>
</div>
<div class="text">

<ul id="chtext2" class="scroll">  
</ul>
 
<form name="chatForm2" id="chatForm2" action="include/chat/chatZpracovani.php?action=poslat" method="POST">
<input type="text" size="20" id="chatText2" name="chatText2" value="">
<input type="hidden" id="senderId" name="senderId" value="<?php echo $_SESSION['id'];?>">
<input type="hidden" id="senderName" name="senderName" value="<?php echo $_SESSION['username']; ?>">
<input type="hidden" id="recipientId" name="recipientId" value="2">
<input onclick="return posli(2);" type="submit" value="poslat">
</form>    
</div>
<div class="status left"><img src="images/on.png"><form method="post" action="">
<input type="status" name="chat_status" id="chat_status" class="chat_status" placeholder="nějaký status">
</form>
</div>
<div class="settings right">Settings</div>
<div class="clear"></div>
</div>

chatDiv3.php
 

<div id="section" class="chat blue left" style="margin: 0px;"> 
<div class="info">
<h1>Mark</h1>
<h2>online</h2>
</div>
<div class="text">

<ul id="chtext3" class="scroll">  
</ul>
 
<form name="chatForm3" id="chatForm3" action="include/chat/chatZpracovani.php?action=poslat" method="POST">
<input type="text" size="20" id="chatText3" name="chatText3" value="">
<input type="hidden" id="senderId" name="senderId" value="<?php echo $_SESSION['id'];?>">
<input type="hidden" id="senderName" name="senderName" value="<?php echo $_SESSION['username']; ?>">
<input type="hidden" id="recipientId" name="recipientId" value="3">
<input onclick="return posli(3);" type="submit" value="poslat">
</form>    
</div>
<div class="status left"><img src="images/on.png"><form method="post" action="">
<input type="status" name="chat_status" id="chat_status" class="chat_status" placeholder="nějaký status">
</form>
</div>
<div class="settings right">Settings</div>
<div class="clear"></div>
</div>

chatZpracovani.php
 

<?php
$connect = mysql_connect ("xxxx", "xxxx", "xxxx") or die ("Nepodařilo se připojit k databázi");
mysql_select_db("xxxx");

//získání id, defaultně 0
$lastid=isset($_GET["id"])?$_GET["id"]:0;
//zjištění akce (aktualizovat/poslat), defaultně aktualizovat
$action=isset($_GET["action"])?$_GET["action"]:"aktualizovat";

switch($action){
case "aktualizovat":
//pokud id=0 tak se vybere z databáze 30 nejnovějších příspěvků
if ($lastid<=0) $result = mysql_query("SELECT *  FROM chat ORDER BY time desc limit 30");
//jinak příspěvky s id větším než zadaným
else $result = mysql_query("SELECT * FROM chat WHERE chat.id > {$_GET['id']} ORDER BY time desc");
//pro každý příspěvek se vygeneruje HTML kód
while ($zaznam = mysql_fetch_array($result)){
echo '<li><h3>'.$zaznam['name'].'</h3><span class="time">'.$zaznam['time'].'</span>'.$zaznam['text'].'</li>';
//do proměnné lastid se bude ukládat nejvyšší id
$lastid=($lastid>$zaznam['id'])?$lastid:$zaznam['id'];
}
//na konec je vypsáno nejvyšší aktuální id za oddělovačem, šlo by to samozřejmě udělat i jiným způsobem...
echo "|id=$lastid";
break;
case "poslat":
//pokud jsou vloženy potřebné údaje, je příspěvek vložen do databáze
if (isset($_POST["chatText"]) and $_POST["chatText"]!=''){
 
if (mysql_query("INSERT INTO chat (sender, name, recipient, time, text) VALUES('".$_POST['senderId']."','".$_POST['senderName']."','".$_POST['recipientId']."',NOW(), '".nl2br(htmlspecialchars($_POST["chatText"]))."')" )) 
//odpověď pokud se zápis do databáze povedl1
echo "ok";
}
break;
} 
?>

Nevím si s tím rady.... mohli byste mi poradit? Děkuji


 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý