Ajax si raspuns PHP

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
keenbr
Mesaje:44

Ajax si raspuns PHP

Marius,am luat scriptul de la pagina https://marplo.net/ajax/ajax_formulare.html" target="_blank" target="_blank si iam adaugat o baza de date...acum as mai vrea ceva si nu stiu de unde sa o apuc...sa fac o functie body onload astfel incat la 3 sau 5 secunde sa apara un mesaj nou daca s-a scris...ma poti ajuta?

asta e codul js:

Cod: Selectaţi tot


function get_XmlHttp() {
  var xmlHttp = null;
  if(window.XMLHttpRequest) {	
    xmlHttp = new XMLHttpRequest();
  }
  else if(window.ActiveXObject) {	
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  return xmlHttp;
}
function ajaxrequest(formular, tagID) {
  var cerere_http =  get_XmlHttp();	
  var numele = formular.nume.value;
  var mesajul = formular.mesaj.value;
  var  datele = 'nume='+numele+'&mesaj='+mesajul;
  cerere_http.open("POST", 'add.php', true);			
  cerere_http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  cerere_http.send(datele);	
  cerere_http.onreadystatechange = function() {
    if (cerere_http.readyState == 4) {
      document.getElementById(tagID).innerHTML = cerere_http.responseText;
    }
  }
}

iar asta este pagina add.php

Cod: Selectaţi tot


<?php
include("config.php");
if (isset($_POST['nume']) && isset($_POST['mesaj'])) {
    $nume = $_POST['nume'];
    $mesaj = $_POST['mesaj'];

    if (strlen($nume)>0 && strlen($mesaj)>0) {
	mysql_query("insert into mesaje set nume='".$nume."',mesaj='".$mesaj."'");
    }
    else {
        
    }
}
	$sql=mysql_query("select * from mesaje order by id desc");
	while($row=mysql_fetch_array($sql))
	{
	$user=$row['nume'];
	$msg=$row['mesaj'];
    print "<b>".$user.":</b><i>".$msg."<br/>";
	}
?>

asta e functia de adaugare mesaje:

Cod: Selectaţi tot


function shootbox()
{
print '
<div id="divLogin">
<div class="panelTop">Shootbox</div>
<div class="panel" style="font-size: 14px;"> 
';

print '
<div id="raspuns"> </div>
<form action="add.php" method="post" name="form1" onsubmit="ajaxrequest(this, \'raspuns\'); return false;">
  Numele tau: <input type="text" name="nume" id="nume" size="20" maxlength="33" /><br />
  Transmite un mesaj:<br />
  <textarea name="mesaj" id="mesaj" cols="15" rows="2"></textarea><br />
  <input type="submit" value="Trimite" />
</form>

';

print '
</div>
<div class="panelBottom"></div>
</div>
';
}


MarPlo Mesaje:4343
O idee ar fi folosirea unui fisier text in care, din "add.php", atunci cand adauga datele in mysql sa adauge timpul curent (format UNIX) in acel fisier, apoi, seteaza si o SESSION in care pune acel timp.
Functia ajax apeleaza un script php care citeste data din acel fisier si din SESSION. Daca sunt egale, inseamna ca nu s-a adaugat nici un mesaj, si nu trasmite ceva la Ajax, daca sunt diferite, transmite la Ajax ce vrei si reactualizeaza timpul din SESSION cu cel din fisierul text.
Pe partea Ajax, verifici daca s-a primit ceva:
if(cerere_http.responseText.length>1) { // Face ce vrei }

Cam asta este ideea, mai departe, Spor.