Autor Zpráva
twenty-six
Profil
Zdravim vsechny ptrichozi.
Muj problem je to, ze nevim jak valot z JavaScriptu php funkci.

mam setInterval ktery se opakuje kazde 2 vteriny a ja pokazde potrebuji poslat dotaz do MySQL databaze, takze v tom setInterval potrebuji volati funkci PHP Pripoj_k_DB(server, jmeno, heslo).

setInterval(function gauge() {
                    gm_options.value =  5 ;
                    gm.setOptions(gm_options);
                    gm.draw();
                }, 2000);
_es
Profil
twenty-six:
PHP, Javascript, PHP
twenty-six
Profil
Tak nakonec jsem to vyřešil AJAXem.

Ma straně klienta jsem volal soubor php, ve které se mi generoval na serveru XML dokument a ten jsem si na klientské straně rozparsoval a jednotlivé části uložil do proměnných. Ale protože se jednalo o číselné hodnoty, tak jsem je ještě po přenosu musel převést zpět na číslo pomocí parseFloat();

Klient (JavaScript)

function Prenos() 
   {
     if (rReq.readyState == 4 || rReq.readyState == 0) 
     {
         i = !i;
         document.getElementById("pocDiv").innerHTML = i;
         rReq.open("GET", 'inner/xml.php', true);
         rReq.onreadystatechange = ZmenaStavu; 
         rReq.send(null);
     }            
   }
            
 
            
      function ZmenaStavu() 
     {
    if (rReq.readyState == 4) 
        {
       var chat_div = document.getElementById('div_chat');
       var xmldoc = rReq.responseXML;
       var uzly = xmldoc.getElementsByTagName("DATA"); 
       var t = uzly[0].getElementsByTagName("TEPLOTA");
     teplotaGauge = parseFloat(t[0].firstChild.nodeValue);
     var p = uzly[0].getElementsByTagName("TLAK");
     tlakGauge = parseFloat(p[0].firstChild.nodeValue);
.
.
.
.

 var gm_temp = new Gauge( document.getElementById( 'teplota'), gm_options_temp );
                  setInterval(function gauge_temp() {
                    gm_options_temp.value =  teplotaGauge ; // tady vkládám získané hodnoty 
                    gm_temp.setOptions(gm_options_temp);
                    gm_temp.draw();
                }, 2000);

Server(PHP) xml.php

<?php
header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" ); 
header("Cache-Control: no-cache, must-revalidate" ); 
header("Pragma: no-cache" );
header("Content-Type: text/xml; charset=utf-8");
.
.
.
.
.
//Generování odpovědi XML.
$xml = '<?xml version="1.0" ?><root>';

   $xml .= '<DATA id="' . $pocet_radku_teplota . '">';
  $xml .= '<TEPLOTA>' . $teplota . '</TEPLOTA>';
  $xml .= '<TLAK>' . $tlak . '</TLAK>';
  $xml .= '</DATA>';

 $xml .= '</root>';
echo $xml;
?>
_es
Profil
twenty-six:
mam setInterval ktery se opakuje kazde 2 vteriny a ja pokazde potrebuji poslat dotaz do MySQL databaze
Naozaj je potrebné každé dve sekundy zo serveru niečo sťahovať?
Okrem toho, naozaj zo serveru každé dve sekundy niečo sťahuješ? Lebo z volania funkcie setInterval v tvojom kóde to nie je isté, teda čo vlastne robia metódy setOptions a draw.
twenty-six
Profil
Samozřejmě že v budoucnu není potřeba stahovat ze serveru každé dvě vteřiny, ale teď potřebuji vidět, že to pravidelně pracuje. Potom tam bude interval třeba 5 minut. Je tam ještě jeden setInterval, který volá funkci Prenos(), kterou sahám na serverou část. Část kodu kde je setOptions jsem uvedlo proto, aby bylo vidět, kde používám proměnou s hodnotou získanou z databáze a draw() je funkce která mi potom vykresluje v CANVASU gauge meter jehož kód je ke stažení zde http://code.google.com/p/jsgauge/

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0