Eseguire una Query tramite linguaggi client-side è possibile?

zenida

Nuovo Utente
1 Giu 2011
5
0
0
Salve a tutti,

Non so se ho scritto nella sezione giusta dato che l'argomento riguarda il coinvolgimento di diversi linguaggi. Caso mai spostatemi pure tranquillamente xD...

Veniamo al dunque:
Sto creando un nuovo sito web e sto cercando di renderlo il più intuitivo possibile...
Ora mi sono un pò inceppato con una funzione. Praticamente mentre un utente esegue il login vorrei che una volta compilato il campo username, compaia in un riquadro dedicato, l'avatar del suo account (così, a parte l'estetica, si rende anche conto se ha inserito il nome correttamente o meno).

Come ottenere il nome dalla textbox una volta perso il focus è piuttosto semplice, basta eseguire questa funzione JS:
Codice:
function changeAvatar(){
    var nomeUtente = document.getElementById('username').value;
}
essa viene richiamata dopo l'evento:
Codice:
onBlur = "changeAvatar()"
che è legato alla casella di testo.

Ora vengono i problemi... Vorrei usare questo nomeUtente per poter fare una ricerca nel mio DB e trovare il relativo avatar così da poter cambiare l'immagine sempre tramite JS con questo codice:
Codice:
document.getElementById('avatarImage').src = "nuovaImmagine.ext";

Ma come faccio ad eseguire una query senza ricaricare la pagina per passare questa variabile chissà dove??? Perchè ovviamente non voglio aggiornare la pagina, altrimenti si perderebbe tutta l'utilità della funzione stessa.

Mi sa tanto che ho bisogno di AJAX qui, solo che non l'ho mai usato in vita mia quindi non so proprio a che serve e come posso usarlo. Ma leggendo qua e la vedo che la comunicazione tra client e server avviene in tempo reale e dunque sarebbe il candidato ideale per risolvere la questione...

Attendo consigli :)
 
Ultima modifica:

zenida

Nuovo Utente
1 Giu 2011
5
0
0
Beh si a quanto pare Ajax è proprio la chiave del problema :)
Ora sto smanettando un pochino con le cose che ho appena imparato.. riesco a farlo funzionare ma non ottengo ancora il risultato che cerco :(

Ho modificato un pochino la textbox in maniera tale da passare direttamente il valore tramite parametro alla mia funzione Ajax:
Codice:
onBlur = "changeAvatar(this.value)"

così posso fare direttamente questo poi dal mio script:
Codice:
function changeAvatar(nomeUtente){
	if (nomeUtente != ""){
		
		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 (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
				document.getElementById("avatarImage").src = xmlhttp.responseText;
			}
		}
		
		xmlhttp.open("GET","themes/advanced/home/get_avatar.php?user="+nomeUtente,true);
		xmlhttp.send();
	}
}

mentre la mia pagina PHP (get_avatar.php) fa questo:
PHP:
<?php
$user=$_GET["user"];
require '../../../header.inc.php';

$nomeUtente = ucfirst(strtolower($user));
$sql = mysql_query("SELECT url_img_chat FROM personaggio WHERE nome = '".$nomeUtente."'");
$righe = mysql_num_rows($sql);

if($righe > 0){
	$avatar = mysql_fetch_array($sql);
	if ($avatar["url_img_chat"] != ""){
		echo "'".$avatar["url_img_chat"]."'";
	}
}

require '../../../footer.inc.php';
?>

Peccato che però non mi viene cambiato il src dell'immagine in maniera corretta :( perchè fa riferimento ad una posizione inesistente. Tra l'altro succede qualcosa di strano. Nonostante io abbia scritto nel get_avatar.php
PHP:
if($righe > 0){
non capisco come mai se metto un nome sicuramente inventato che nel mio DB non esiste, cmq mi viene cambiato il SRC dell'immagine.
Ma non dovrebbe essere cambiato solo dopo aver fatto un Echo?? Oppure non ho capito bene io la funzionalità di XMLHttpRequest???
 

zenida

Nuovo Utente
1 Giu 2011
5
0
0
Ci sono riuscito!!! ^^

Il problema stava nel fatto che io includevo un header ed un footer alla mia pagina PHP.
Questi Header e Footer oltre ad eseguire la connessione e disconnessione dal mio DB ricreavano inoltre tutta l'intesazione di una pagina HTML includendo nuovamente i tag HTML, HEAD, BODY...
ma a quanto ho capito la pagina PHP che deve essere richiamata, in realtà non dev'essere una pagina nel vero senso della parola (ovvero navigabile) ma deve solo svolgere il ruolo di una tipica Classe. Quindi fa la sua funzione e stop, tutto li.

Infatti una volta eliminato le due inclusioni, ho semplicemente scritto a mano nuovamente la procedura di connessione al DB per poter effettuare la query.
Et voilà il mio script ha funzionato alla perfezione ^^

Il topic può considerarsi chiuso, ma io lo lascerei aperto nel caso qualcuno con un'esperienza simile alla mia, voglia ottenere ulteriori informazioni, che magari non sono state inserite, dato che avendo fatto tutto da solo potrei aver fatto o detto qualche cavolata ;)
 
Discussioni simili
Autore Titolo Forum Risposte Data
N Eseguire una query MySQL dopo 10 secondi PHP 0
giorgione_tg Per eseguire una query... PHP 6
P [Javascript] eseguire una funzione dopo un'altra Javascript 0
gandalf1959 Chiedere conferma all'utente prima di eseguire una funzione PHP 5
M Eseguire codice php contenuto in una variabile e salvarne il risultato in un'altra PHP 2
I Eseguire foreach una volta PHP 4
M Script da eseguire su più elementi div in una singola pagina web Javascript 0
N Problema: eseguire una stored procedure estesa da un proprio database Database 0
felino [Joomla 1.5] Backend senza toolbar, impossibile eseguire qualunque operazione Joomla 1
G eseguire calcoli matematici su risultati 2 tabelle mysql PHP 4
antoniomanuel Eseguire più files audio in sequenza Sviluppo app per Android 0
G Eseguire codice solo al termine della chiamata ajax Ajax 1
maxnegri Eseguire un'azione con php ad ogni condivisione su Facebook PHP 0
C Eseguire .sh da php PHP 6
W [Javascript] Eseguire script residente nel sistema da html remota Javascript 0
W Aiutino per compilare o eseguire un App Java Java 0
W [C#] Eseguire contemporaneamente tutti i Thresad su "Multithread" .NET Framework 0
G [Javascript] eseguire test-case Selenium da riga di comando... Javascript 0
S [PHP] Eseguire differenza su dati SQL presenti sulla stessa colonna PHP 1
N eseguire pagina php senza aggiornare la pagina Ajax 3
S Eseguire funzione jquery all'interno della risposta ajax Ajax 0
A eseguire funzione dopo scelta dal form PHP 4
L eseguire programmi in c PHP 0
JackIlPazzo Eseguire funzione php senza ricaricare pagina? PHP 3
T [JavaScript & Ajax] Eseguire script dopo chiamata A Ajax 2
felino [Oracle] Eseguire uno split di un record Oracle 1
felino Funzione get_node(): eseguire un replace WordPress 1
J Eseguire un redirect a sito mobile PHP 0
G Dividere stringa ed eseguire query PHP 3
F Eseguire PHP in jQuery jQuery 3
A eseguire codice js caricandolo dinamicamente in un DIV Javascript 2
ivarello eseguire exec() lato Client PHP 1
A eseguire codice html da funzione javascript Javascript 2
X Eseguire controllo su variabili php PHP 1
M eseguire un comando da php PHP 2
1 eseguire operazioni pianificate PHP 3
M Ajax: eseguire chiamate cross-domain Ajax 1
S Eseguire controlli sul form delle foto PHP 17
I Eseguire funz. Javascript caricata tramite la funzione Ajax di JQuery in onChange Javascript 0
I Eseguire funz. Javascript caricata tramite la funzione Ajax di JQuery in onChange Javascript 0
G eseguire un ciclo for next su applicazione di un sito web Javascript 1
S [Vb.net] Eseguire un programma richiamando l'explorer di windows o il comando esegui .NET Framework 1
C Eseguire script ajax nella stessa pagina index.php Ajax 2
S [Vb.net] Eseguire un exe contenuto nel file di risorse .NET Framework 1
G eseguire gedit con shell_exec() PHP 3
neo996sps Eseguire script perl da pagina PHP PHP 3
I Eseguire query con ciclo PHP 2
I Eseguire query in funzione PHP 2
X eseguire due query aiuto PHP 1
N Eseguire codice javascript HTML e CSS 1

Discussioni simili