View Full Version : interrogare db con javascript
Ciao a tutti. io ho in un file html una select di questo tipo:
<select name=choice size=1 onchange=go()>
<option value=uno>One</option>
<option value=due>Two</option>
<option value=tre>Three</option>
</select>
e una funzione js
function go(){
var choice = document.getElementById("choice").options[document.getElementById("choice").selectedIndex].value;
alert("choice = " + choice);
}
la risposta viene restituita corretta.
A questo punto ho bisogno di usare questa variabile per interrogare il database. Come posso realizzare questo passaggio nella funzione js?
Grazie ;)
usare un linguaggio client side per interrogare un db è un po' improponibile, devi passare a qualche script server side che possa interagire appunto con il db
'iao
yorkeiser
25-01-2007, 15:42
Se vuoi farlo lato client con tecnologia Java, puoi utilizzare tranquillamente Applet e jdbc; con il solo javascript la vedo dura, a meno che non ti appoggi ad un linguaggio di scripting o qualche altro accrocchio, come da post di Orph3n
Semplice usi javascript inseme all'oggetto xmlhttp, e il tutto prende il nome di AJAX ( alla gente piace cambiare nome alle cose per farle sembrare più complicate e affiscinanti...).
Ecco un esempio di una richiesta http ad uno script php, utilizzando il metodo GET(ma si può fare anche con POST)
var myRequest=null;
function CreateXmlHttpObject(myFunction){
var xmlhttpObject=null;
try{
xmlhttpObject=new XMLHttpRequest();
}catch(e){
try{
xmlhttpObject=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
xmlhttpObject=new ActiveXObject("Microsoft.XMLHTTP");
}
}
xmlhttpObject.onreadystatechange=myFunction;
return xmlhttpObject;
}
function httpReturnResponse(){
if(myRequest.readyState==4&&myRequest.status==200){
var readText=myRequest.responseText;
}
function httpRequest(){
myRequest=CreateXmlHttpObject(httpReturnResponse);
myRequest.open("GET",php_link+"?variabile="+variabile,true);
myRequest.send(null);
}
E' semplicissimo, te chiami la funzione httpRequest, la quale crea un oggetto xmlHttp che si occupa di interrogare lo scritp php(link_php è l'indirizzo) passandogli la variabile tramite GET(variabile=12345).
Dopo tornerà indietro il codice della pagina web chiamata, quindi torna indietro tutto quello di cui nello script php ne fai l'echo.
Quindi se farai l'echo di un risultato ottenuto dal DB, in readText avrai quel risultato ;)
giannola
25-01-2007, 16:22
Semplice usi javascript inseme all'oggetto xmlhttp, e il tutto prende il nome di AJAX ( alla gente piace cambiare nome alle cose per farle sembrare più complicate e affiscinanti...).
Ecco un esempio di una richiesta http ad uno script php, utilizzando il metodo GET(ma si può fare anche con POST)
var myRequest=null;
function CreateXmlHttpObject(myFunction){
var xmlhttpObject=null;
try{
xmlhttpObject=new XMLHttpRequest();
}catch(e){
try{
xmlhttpObject=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
xmlhttpObject=new ActiveXObject("Microsoft.XMLHTTP");
}
}
xmlhttpObject.onreadystatechange=myFunction;
return xmlhttpObject;
}
function httpReturnResponse(){
if(myRequest.readyState==4&&myRequest.status==200){
var readText=myRequest.responseText;
}
function httpRequest(){
myRequest=CreateXmlHttpObject(httpReturnResponse);
myRequest.open("GET",php_link+&variabile=12345,true);
myRequest.send(null);
}
E' semplicissimo, te chiami la funzione httpRequest, la quale crea un oggetto xmlHttp che si occupa di interrogare lo scritp php(link_php è l'indirizzo) passandogli la variabile tramite GET(variabile=12345).
Dopo tornerà indietro il codice della pagina web chiamata, quindi torna indietro tutto quello di cui nello script php ne fai l'echo.
Quindi se farai l'echo di un risultato ottenuto dal DB, in readText avrai quel risultato ;)
php che è ovviamente un linguaggio server sided cui faceva menzione 0rph3n. ;)
scordatevi di poter usare il solo javascript per poter eseguire una connessione al db. :ciapet:
Non rientra nelle sue potenzialità. :mc:
Oltretutto MeMon sfruttare per i propri programmi la creazione di oggetti activeX equivale a renderli compatibili solo con windows, visto che sono una invenzione microsoft.
Oltretutto MeMon sfruttare per i propri programmi la creazione di oggetti activeX equivale a renderli compatibili solo con windows, visto che sono una invenzione microsoft.
quei due new ActiveXObject se noti sono dentro ad un blocco catch che cattura l'errore generato da new XMLHttpRequest()...
prova un po' ad immaginare perchè ;)
'iao
giannola
25-01-2007, 16:38
quei due new ActiveXObject se noti sono dentro ad un blocco catch che cattura l'errore generato da new XMLHttpRequest()...
prova un po' ad immaginare perchè ;)
'iao
:doh: :stordita: :doh: :muro: :( :doh: :D
può bastare ? ;)
http://www.forumeye.it/invision/style_emoticons/default/famale.gif
:D :friend:
sarà ma io lo utilizzo in una mia estensione che ovviamente va anche su linux.
Semplice usi javascript inseme all'oggetto xmlhttp, e il tutto prende il nome di AJAX ( alla gente piace cambiare nome alle cose per farle sembrare più complicate e affiscinanti...).
Ecco un esempio di una richiesta http ad uno script php, utilizzando il metodo GET(ma si può fare anche con POST)
var myRequest=null;
function CreateXmlHttpObject(myFunction){
var xmlhttpObject=null;
try{
xmlhttpObject=new XMLHttpRequest();
}catch(e){
try{
xmlhttpObject=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
xmlhttpObject=new ActiveXObject("Microsoft.XMLHTTP");
}
}
xmlhttpObject.onreadystatechange=myFunction;
return xmlhttpObject;
}
function httpReturnResponse(){
if(myRequest.readyState==4&&myRequest.status==200){
var readText=myRequest.responseText;
}
function httpRequest(){
myRequest=CreateXmlHttpObject(httpReturnResponse);
myRequest.open("GET",php_link+&variabile=12345,true);
myRequest.send(null);
}
E' semplicissimo, te chiami la funzione httpRequest, la quale crea un oggetto xmlHttp che si occupa di interrogare lo scritp php(link_php è l'indirizzo) passandogli la variabile tramite GET(variabile=12345).
Dopo tornerà indietro il codice della pagina web chiamata, quindi torna indietro tutto quello di cui nello script php ne fai l'echo.
Quindi se farai l'echo di un risultato ottenuto dal DB, in readText avrai quel risultato ;)
sto provando. ma poi, l'interrogazione mysql la piazzo nel file php giusto? e come variabile da inserire nella query che nome metto? quello passato nella funzione js? il mio "choice"?
certo, e fai in modo che la pagina php stampi il risultato della query con echo
non riesco a passargli quella variabile. nel file js io attribuisco
var choice = document.getElementById("choice").options[document.getElementById("choice").selectedIndex].value;
ok, poi torna al file php in cui inserisco la query, ma se nella query inserisco come criterio di scelta il mio choice, non funziona. probabilmente perchè non sa che choice è il nome assegnato dal file js alla scelta fatta nella select...
ma la pagina php da dove la chiami?
dovrai usare javascript per appiccicarci il parametro alla fine!
del tipo:
document.location.href = "paginaInterfacciaDB.php?choice=" + choice;
o comunque qualcosa del genere!
e poi nella pagina php ti dovrai recuperare il parametro:
$choice = $_GET['choice'];
'iao
Io un file "Index.php" in cui eseguo del codice javascript per far comparire due menu a tendina diversi in base alla scelta effettuta in un primo menu a tendina. Da qui vado tramite form ad un secondo file "auth.php" in cui propongo una terza scelta con menu a tendina ed è in questo che richiamo con l'evento onchange della select il file js che deve eseguire codice in stile ajax, quindi creare l'oggetto xmlhttprequest, leggere il valore della select precedente (choice) e fin qui va bene.
A questo punto, quando termina l'esecuzione, il controllo mi torna al file auth.php e non riesco a capire come fare per eseguire la query mysql in cui inserire il valore di choice memorizzato nel file js.
spero di essere riuscito a spiegarmi... :) lo so, sono un pò incasinato :help:
choice gliela devi pssare con GEt ovviamente, forse ti sfugge come funziona.
In pratica ad uno script PHP puoi passare una variabile tramite l'URL, basta mettere un "?" dopo l'URL seguito dal nome della variabile e dal suo valore.
esempio:
Vuoi pssare alla pagina php(http://tuodominio/pippo.php) la variabile choice, quindi scrivi l'URL così:
http://tuodominio/pippo.php?choice=12345
ora nello script php per riprendere la variabile ti basta fare:
$scelta=$_GET['choice']
vedrai che $scelta ora vale 12345 e la puoi utilizzare come ti pare.
Vediamo con AJAX ora:
var php_link="http://tuodominio/pippo.php";
var choice=12345;
function httpRequest(){
myRequest=CreateXmlHttpObject(httpReturnResponse);
myRequest.open("GET",php_link+"?choice="+choice,true);
myRequest.send(null);
}
ed ecco che hai passato la variabile choice al php.
In "auth.php" ho scritto
echo"
<select name=choice size=1 onchange=httpRequest()>
<option value=uno>One</option>
<option value=due>Two</option>
<option value=tre>Three</option>
</select>
";
$scelta=$_GET['choice'];
nel file js:
function httpRequest(){
var php_link="getTopicsByCountryID.php";
var choice = document.getElementById("choice").options[document.getElementById("choice").selectedIndex].value; alert("choice = " + choice);
myRequest=CreateXmlHttpObject(httpReturnResponse);
myRequest.open("GET",php_link+"?choice="+choice,true);
myRequest.send(null);
}
ma quando apre il file "auth.php" mi da l'errore
Notice: Undefined index: choice in C:\www\auth.php
che significa quande apre il file?? :confused:
Comunque non va bene così, il php deve solo fare la query e stampare il risultato, la richiesta la devi lanciare da un altro file...
mmmm......... ok
a proposito... conosci qualche script che mi permette di visualizzare il grafico a torta relativo ai dat estratti dalla query?
Più che altro il mio problema è come riuscire a passare le variabili che ho nel mio file php al file js...
########### file.php ###########
<?php
$var_uno = 1;
$var_uno = 2;
$var_uno = 3;
?>
<html>
<body onload=func()>
</body>
</html>
########### file.js###########
function func(){
/* ??? */
}
anche solo per stamparle con una alert.....
le devi stampare con un echo, e poi ti ritorneranno indietro dopo la chiamata AJAX e le potrai recuperare con responseText, come ti ho già detto due volte.
Rileggiti tutto
Se ho capito quello che mi dici, il valore della variabile lo fissi nel file js e poi lo passi al file php che lo usa per l'interrogazione, giusto? Io devo fare il contrario: il valore della variabile viene settato nel file php e devo poterlo passare così com'è al file js che lo deve usare per disegnare il grafico
Puoi fare entrambe le cose, io ti ho detto che puoi mandare una variabile al file php per fare la query e poi puoi mandare il risultato della query al file js per utilizzarlo...
Comunque, se vuoi leggere una variabile php basta che ne fai l'echo, così quando fai la chiamata ajax al file php la puoi leggere.
file php
$pippo="ciao";
echo($pippo);
ora se fai la chiamata di questo file ti vedrai tornare "ciao".
readText=obj.responseText;
readText ora contiene "ciao".
capito ora?
Semplice usi javascript inseme all'oggetto xmlhttp, e il tutto prende il nome di AJAX ( alla gente piace cambiare nome alle cose per farle sembrare più complicate e affiscinanti...).
Ecco un esempio di una richiesta http ad uno script php, utilizzando il metodo GET(ma si può fare anche con POST)
var myRequest=null;
function CreateXmlHttpObject(myFunction){
var xmlhttpObject=null;
try{
xmlhttpObject=new XMLHttpRequest();
}catch(e){
try{
xmlhttpObject=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
xmlhttpObject=new ActiveXObject("Microsoft.XMLHTTP");
}
}
xmlhttpObject.onreadystatechange=myFunction;
return xmlhttpObject;
}
function httpReturnResponse(){
if(myRequest.readyState==4&&myRequest.status==200){
var readText=myRequest.responseText;
}
function httpRequest(){
myRequest=CreateXmlHttpObject(httpReturnResponse);
myRequest.open("GET",php_link+"?variabile="+variabile,true);
myRequest.send(null);
}
E' semplicissimo, te chiami la funzione httpRequest, la quale crea un oggetto xmlHttp che si occupa di interrogare lo scritp php(link_php è l'indirizzo) passandogli la variabile tramite GET(variabile=12345).
Dopo tornerà indietro il codice della pagina web chiamata, quindi torna indietro tutto quello di cui nello script php ne fai l'echo.
Quindi se farai l'echo di un risultato ottenuto dal DB, in readText avrai quel risultato ;)
Comunque qui ho spiegato tutto...
scusa, ma ho le idee moooooolto confuse..... sto provando a programmare in ajax da poco......
avrei bisogno di un aiuto approfondito... :fagiano:
io ho scritto nel file php
<?php
$var = "ciao";
echo "var;
?>
<html>
<head>
<body onload=httpRequest()></body>
</head>
</html>
nel file js:
function httpRequest(){
readText=obj.responseText;
alert(readText);
}
e mi esce l'errore
'obj' non è definito
:muro: :muro: :muro:
Ascolta ma ti ho scritto del codice funzionante perchè non provi?
Fai un bel copia-incolla del codice che ti ho scritto io.
var myRequest=null;
var php_link= //mettici l'indirizzo del tuo file.php
function CreateXmlHttpObject(myFunction){
var xmlhttpObject=null;
try{
xmlhttpObject=new XMLHttpRequest();
}catch(e){
try{
xmlhttpObject=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
xmlhttpObject=new ActiveXObject("Microsoft.XMLHTTP");
}
}
xmlhttpObject.onreadystatechange=myFunction;
return xmlhttpObject;
}
function httpReturnResponse(){
if(myRequest.readyState==4&&myRequest.status==200){
var readText=myRequest.responseText; //readText è la variabile che passi dal php a javascript
alert(readText);
}
function httpRequest(variabile){
myRequest=CreateXmlHttpObject(httpReturnResponse);
myRequest.open("GET",php_link+"?variabile="+variabile,true);
myRequest.send(null);
}
httpRequest("ciao"); //"ciao" è la variabile che passi al file php, mettici quello che vuoi
Ecco prova questo, copia e incollalo, poi definisci php_link con il percorso del file .php che vuoi interrogare.
Ciao. purtroppo non mi funziona...
la alert ReadText mi riporta una finestra con dentro tutto il codice della pagina link fino al messaggio di errore che ho inserito nel codice php e che faccio stampare io se non è riuscito ad eseguire la query
ovvio è così che funziona, ti riporta il codice della pagina, per quello ti serve creare lo script php in modo che stampi solo il risultato della query... te l'ho scritto più volte eh.
azz....
comunque il fatto di fargli stampare il risultato era una prova che volevo fare di mio. il vero scopo è fargli creare un grafico a torta con i risultati della query... Per adesso ho fatto memorizzare i risultati della query in un array. Tu per caso conosci uno script che tramite ajax preleva i valori dell'array e mi costruisce il grafico?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.