Newsgroup: it.comp.lang.javascript
Titolo: query php e ajax

prepare("SELECT * FROM $nameLogTab ORDER BY idAmbientLog DESC");
 
 
		 $qambientlog->execute(array());
 
$logAmbient = $qambientlog->fetch(PDO::FETCH_OBJ);
//print_r  ($elcatp);
   $logtimestamp= $logAmbient->TIMESTAMP;
    $log02_value= $logAmbient->O2_VALUE;
       $logset_point_oxygen= $logAmbient->SET_POINT_OXYGEN;
          $logisteresi= $logAmbient->ISTERESI;
                $logsoglia_max_oxygen= $logAmbient->SOGLIA_MAX_OXYGEN;
                   $logsoglia_min_oxygen= $logAmbient->SOGLIA_MIN_OXYGEN;
 
 
}catch(PDOException  $e ){
echo "Error: ".$e;
}		 
			  unset($qambientlog); 		
 ----------------------
 
IN TEORIA MI DOVREBBE SERVIRE QUALCOSA DEL GENERE, MA CI HO CAPITO POCO
 
<script>
 
 function showValue() {
	if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
	xmlhttp = new XMLHttpRequest();
		} else {
// code for IE6, IE5
 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var res = (this.responseText).split("_");
 
document.getElementById("data").innerHTML = 
res[2].concat("/",res[1],"/",res[0],"-",res[3],":",res[4],":",res[5]);
 
document.getElementById("isteresi").innerHTML = '<h1>Sensor1: 
'+(res[2]).replace('%','')+"%"+'</h1>';
 
document.getElementById("gauge2").innerHTML = '<h1>Sensor2: 
'+(res[3]).replace('%','')+"%"+'</h1>';
 
document.getElementById("zona").innerHTML = '<h1>Zone: 
'+(res[4).replace('%','')+"%"+'</h1>';
					}
				};
xmlhttp.open("GET",<?php echo "getAmbientLog.php";  php?>,true);
				xmlhttp.send();
 
			}
			</script>
 
chi mi aiuta? 


Risposta lampo forse troppo.
Con jquery ajax lo usi in questa maniera: $('#zona').load('pagina.php');
quindi se vuoi semplificare includi jquery.
 
Non ho assolutamente capito come funziona la tua pagina, ma temo da questo:
xmlhttp.open("GET",<?php echo "getAmbientLog.php";  php?>,true);
che sei fuori strada, a meno che getAmbientLog.php restituisca un uri.
 
Ciao

  ----------------------
 
 
 
allora cosa ho fatto :
//qui metto in div  su cui fare il refresh
  <div class="column"  id="refresh">
 
<?php
//-->>  per fare un po' di test: lego il valore della sessione
 $a=$_SESSION['priorita'];
// ----->>lo incremento ogni refresh
 $a++;
print $a;
// --------->> e lo riscrivo sulla sessione
$_SESSION['priorita']=$a;
 
// ---- sotto la funzione che me lo fa rigenereare. e funziona +-
?>
 	<?php
//---------> qui ci ncludo la query che non viene rigenerata come lo script 
della sessione, allora ho provato a farla rigenerare a ajax, vedi sotto.	
 
	 	include 'getAmbientLog.php';
 
					 	if 
($attiva==0) { 	$iconaambient="ic-ambienteoff.png"; }else { 	
$iconaambient="ic-ambiente.png";	 }
 
 
				echo	"<div style=\"text-
align: center\"><a href=\"ambient.php?id=$id\"><img 
src=\"album/$iconaambient\" border=\"0\" class=\"ic-link\"></a></div>  
</div>  <div class=\"column\"> <p>".$ambiente."  </p></div>    <div 
class=\"column\"><p>".$lang_setoxigen.": ".$logset_point_oxygen."  </p> 
</div>  <div class=\"column\"><p>".$lang_istresi.": ".$logisteresi."  
</p></div>   <div class=\"column\"><p>".$lang_setmaxoxigen.": ".
$logsoglia_max_oxygen."   </p></div>  <div class=\"column\"><p>".
$lang_setminoxygen.": ".$logsoglia_max_oxygen; 
 
 
 
 
 
}
 
 
  unset($cat);   
  unset($rvdb); 
    ?>
</p>  </div>   
    </div> 
    </div>
    <script>
// ------>> rigenero il div che mi somma la variabile della sessione
setInterval(function() {
$("#refresh").load(location.href+" #refresh>*","");
}, 5000);
 
// ------>> rigenero lo script ajax
$(function() {
    setInterval("updateTopic()", 5000); // ogni 2 secondi richiamo la 
funzione updateTopic()
});
 
// ----->> qui dovrei rigenerare la query
function updateTopic() {
      $.ajax({
        method: 'get',                    // tipo di richiesta HTTP
        url : 'getAmbientLog.php',               // percorso allo script 
lato server
        data: "nameLogTab=$nameLogTab",        // parametro opzionale, per 
impostare la query string da inviare
        dataType : 'json',                // parametro opzionale, formato 
dei dati (xml, json, script, o html)
        success: function (data) {        // istruzioni richiamate al 
termine della richiesta
          $("#latest-topic").html(data);  // inserisco i dati restituiti nel 
DIV!!!
        }
      });
    }
</script>
 
// ----> adesso come faccio a scrivere i nuovi valori sull'output sopra 
mostrato?

 Ciao
 
diciamo che brancolo nel buoi .. dai un occhio all'altro post che ho messo .
 
credo che mi basti capire come far scrivere correttamente dei dati alla 
query in maniera che ajax riesca a gestirli e riscriverli in un <div 
name="apposito">
 
Spiego la pagina.. c'è un database che si aggiorna autonomamente , tabella 
ambient_log1 
 
io ho bisogno a teminale di vedere l'ultimo record aggiornato ongi 5 
secondi; potrei fare il refresh dell'intera pagina , ma vorrei ridurre le 
risorse usate al minimo.
 
Grazie
 


Io semplificherei,
file 1 in php (solo php) che restituisce una tabella (con solo i tag <table>contenuto</table>con gli ultimi record del log
file 2 in html che invochi ogni n secondi $('#risultato').load('file1.php');
 
In modo da tenere separati php e javascript che la difficoltà maggiore (almeno la mia) è dovuta proprio 
dalla commistione dei due.

 (almeno la mia) è dovuta proprio dalla commistione dei due.
 
tipo questo? 
 
 
<div class="dati" id="cbox">
   <div class="row small-up-2 medium-up-3 large-up-6">
     <hr  >
    <?php 
 
			// ambienti esistenti attivi 
 
			$cat="SELECT * FROM system   ";
 
 foreach($rvdb->query($cat) as $rcat)
					{
 
$id=$rcat['idSystem'];
 
$ambiente=$rcat['ambient_local'];
 
$setOxygen=$rcat['SET_POINT_OXYGEN'];
			 	$isteresi=$rcat['ISTERESI'];
 
$maxoxygen=$rcat['SOGLIA_MAX_OXYGEN'];
 
$minoxygen=$rcat['SOGLIA_MIN_OXYGEN'];				
 
				$attiva=$rcat['ATTIVA'];
 
 
$nameLogTab="ambientlog_".$id;
 
 
					 ?>
 
 
 
 
			   <div class="column"  id="refresh">
 
<?php $a=$_SESSION['priorita'];
 $a++;
print $a;
$_SESSION['priorita']=$a;
?>
					 	<?php
 
					 	include 
'getAmbientLog.php';
 
					 	if 
($attiva==0) { 	$iconaambient="ic-ambienteoff.png"; }else { 	
$iconaambient="ic-ambiente.png";	 }
 
 
				echo	"<div style=\"text-
align: center\"><a href=\"ambient.php?id=$id\"><img 
src=\"album/$iconaambient\" border=\"0\" class=\"ic-link\"></a></div>  
</div>  <div class=\"column\"> <p>".$ambiente."  </p></div>    <div 
class=\"column\"><p>".$lang_setoxigen.": ".$logset_point_oxygen."  </p> 
</div>  <div class=\"column\"><p>".$lang_istresi.": ".$logisteresi."  
</p></div>   <div class=\"column\"><p>".$lang_setmaxoxigen.": ".
$logsoglia_max_oxygen."   </p></div>  <div class=\"column\"><p>".
$lang_setminoxygen.": ".$logsoglia_max_oxygen; 
 
 
 
 
 
}
 
 
  unset($cat);   
  unset($rvdb); 
    ?>
</p>  </div>   
    </div> 
 
    <script>
        $(document).ready(function() {
            setInterval(function(){getUpdates()}, 2000); 
        });
 
        function getUpdates() {
            $("#cbox").load("getAmbientLog.php?nameLogTab=$nameLogTab");
        }
        </script>
    </div>
 
 

> (almeno la mia) è dovuta proprio dalla commistione dei due.
 
ok. mi spiego meglio, 
 
ho una query che per ogni ambiente mi associa la tabella delle misurazioni, 
 
io dovrei vedere ogni 5 secondi le ultime misurazioni;
 
 
un ipotesi è che io dico a ajax,  di far sostituire il contenuto di un div, 
con un file che mi contiene le query, tramite jquery temporizzo la richiesta 
ogni tot secondi.
 
questa potrebbe essere la strada? 
 
enrico 


 </div>
 	<div class="dati" id="cbox">
   <div class="row small-up-2 medium-up-3 large-up-6">
     <hr  >
 
 
 
 
  </div>   
    </div> 
 
    <script>
        $(document).ready(function() {
            setInterval(function(){getUpdates()}, 2000); 
        });
 
        function getUpdates() {
 
            $("#cbox").load("getAmbientLog.php");
 
        }
        </script>
    </div>
 
 
yes .. funziona.. adesso devo solo aggiustare i css. 
 
thank you!!


Prego

 thank you!!
 
ma non ho finito , step 2 
 
 
adesso o da caricare unavariabile di php.
 
mi spiego 
ambient.php?id=1
 
ambient.php è uguale  a quello sopra  solo che contiene GetAmbientSys.php
----------------------------------------------------------->ambient.php 
 </div>
        <div class="dati" id="cbox">
   <div class="row small-up-2 medium-up-3 large-up-6">
     <hr  >
 
 
 
 
  </div>   
    </div> 
 
    <script>
        $(document).ready(function() {
            setInterval(function(){getUpdates()}, 2000); 
        });
 
        function getUpdates() {
 
            $("#cbox").load("getAmbientLog.php");
 
        }
        </script>
    </div>
-----------------------
----------------------------------------------------->GetAmbientSys.php
 $ida=$_GET['id'];
 
$cat="SELECT * FROM sysambient  INNER JOIN system ON 
sysambient.idSystem=system.idsystem WHERE idSystem='$ida' ";
 
 foreach($rvdb->query($cat) as $rcat) {
 
				}
----------------------------------------------------------
 
non mi arriva il $_GET['id']

 
 
 
non so se è ortodosso ma ho fatto così. 
 
http://forum.html.it/forum/showthread/t-1445442.html
 
 
c'è un modo più corretto?
 
Enrico 
 

sysambient.idSystem=system.idsystem WHERE idSystem='$ida' "; 
 
$ida va sanitizzata prima di usarla nella query, altrimenti consenti
attacchi malevoli.
Lo so che questa pagina la userai solo tu, ma poi diventa una cattiva abitudine.
 
Ajax gestisce sia get che post, il metodo get è molto intuitivo:
   $("#cbox").load("getAmbientLog.php?arg=val"); 
 
Sempre se ho capito dove ti sei fermato.

    $("#cbox").load("getAmbientLog.php?arg=val");
 
 
quindi devo passare a ajax oltre jquery così? 
 
 
 
$(function() {
    setInterval("updateTopic()", 5000); // ogni 2 secondi richiamo la 
funzione updateTopic()
});
function updateTopic() {
      $.ajax({
 $("#cbox").load("getAmbientLog.php?arg=val");
        }
      });


.load() è già "ajax"
è sufficiente


 $("#cbox").load("getAmbientLog.php?arg=val");
 
 
    $("#cbox").load("getDeviceLog.php?idd=<?php echo $ida; ?>");
 
c'è un altro modo per inserire la variabile? 
 
ho provato così ma non mi funziona:
 
<script>
        $(document).ready(function() {
            setInterval(function(){getUpdates()}, 2000); 
        });
 
		var gidd='<?php echo $ida; ?>';
 
        function getUpdates() {
 
    $("#cbox").load("getDeviceLog.php?idd=gidd");
 
        }
        </script>