Vai al contenuto

JS: For. confronto tra array e variabile.


-YoShi-

Messaggi raccomandati

Nella mia pagina devo fare un confronto tra il valori compresi in un array e una variabile.

Ho questo script:

function getUser()
{ 
getUserName=GetXmlHttpObject()
var nomeUtente = document.getElementById('userId').value;

var url="../pagine/comuni/getUserNames.php";
url = url+"?utente="+nomeUtente;

getUserName.onreadystatechange=statocambiatoUser
getUserName.open("GET",url,true)
getUserName.send(null)
}


function statocambiatoUser() 
{ 
if (getUserName.readyState==4 || getUserName.readyState=="complete")
{ 
//	document.getElementById("userInitials").setAttribute("value", getUserName.responseText);
var listaOption = document.getElementsByTagName("option");
//	var Risotto = document.getElementById("userInitials").value;
var Risotto = getUserName.responseText

for(i=0; i < listaOption.length; i++){
	if(listaOption.item(i).getAttribute("value") == Risotto) {
	alert(Risotto);
	document.getElementById('tecn_resp').options[i].selected = true;
	}	
} 

} 
}

il risultato della chiamata a php (getUserName.responseText) ha come valore "RP"

infatti se do un alert(Risotto) fuori o dentro il for tutto funziona correttamente.

Se però uso Risotto per fare il confronto l'IF dentro il ciclo FOR non ho alcun risultato.

Invece se al posto della variabile Risotto cerco direttamente il valore"RP" cioè

if(listaOption.item(i).getAttribute("value") == "RP") {

L'alert dentro l'IF funziona e l'OPTION corrispondente al valore RP viene spuntato.

Dove sbaglio? xchè non mi confronta?

Link al commento
Condividi su altri siti

Altra cosa:

é possibile fare un controllo sul testo di ritorno dal php?

Xchè fin ora non ci sono riuscito..

Per esempio:

function statocambiatoUser() 
{ 
if (getUserName.readyState==4 || getUserName.readyState=="complete")
{ 
var Risotto = getUserName.responseText;
// se Risotto (variabile di 2 caratteri, iniziali user) contiene Z finale
if(Risotto == ".Z") {
//creo un input box ecc.. ecc..
}
else {
//crea un select ecc.. ecc...
}
}


Link al commento
Condividi su altri siti

javascript non supporta le regexp in modo nativo sui confronti tra stringhe (come quella che hai usato tu nell'esempio)

per un confronto corretto devi usare le funzioni di manipolazione delle stringhe, es. indexOf potrebbe andar bene per quello che hai in mente tu

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

Okey grazie :), ora cerco qualche info in più su indexOf.

Altrimenti se nel file php creo un XML?

Qualcosa per esempio tipo:

echo "<?xml ...>";
while(query->fetch_object()) {
echo "<valore>", $riga->dati, "</valore>";
}

Questi dati di ritorno sarebbero gestibili anche via DOM? in modo che posso anche impaginarmeli in maniera diversa?

Link al commento
Condividi su altri siti

non è chiaro che cosa vuoi fare di quei dati perché stai tirando in ballo due tipi di elaborazione completamente differenti che si fanno in momenti differenti e tra loro in certo senso indipendenti: con il php l'elaborazione avviene sul server, prima di inviare il file html risultante e con il pieno accesso ai dati del server, per esempio info provenienti da un database; con javascript l'elaborazione avviene sul computer dell'utente, dopo che ha ricevuto il file html e senza più accesso ai dati del server.

in altre parole:

- il php ti crea il file html e te lo manda all'utente

- il javascript agisce sul file html così come gli arriva senza poterlo modificare se non per la visualizzazione ma basandosi solo sul DOM risultante del php

vale anche per ajax....

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

Si in effetti rileggendolo non c'ho capito niente manco io (che l'ho scritto).

Allora,

Quello che lo script fa adesso è ricevere una SELECT(generata da una query sul db e impaginata tramite un while e degli echo) dal file php (tramite il responseText).

E tutto funziona correttamente.

Solo che vorrei poter inserire questa modifica.

Se la query nel db non trova niente al posto di ricevere una SELECT senza option (vuota) vorrei poter creare un INPUT BOX con lo stesso nome e id (della SELECT che avrei ricevuto) in modo che l'utente possa inserire comunque inserire un valore.

Link al commento
Condividi su altri siti

in questo caso il test più corretto da fare è nel php

io però non lo farei sulla stringa ma molto più banalmente sul risultato della select in questo modo:

$risultato = mysql_query("SELECT.......");

if (mysql_num_rows($risultato)) { 
   // la query ha ritornato almeno un record, visualizzo il risultato buono
  }
else {
  // la query non ha ritornato alcun risultato, visualizzo la INPUT box
 }

se invece il test è su un campo specifico della query, che magari ritorna dei record ma ha quel campo vuoto, allora il test potrebbe essere così:

while ($datoDB = mysql_fetch_object)) {
  if ($datoDB->campoID != "NULL") {
     // visualizzo il risultato
    }
  else {
     // campo ID vuoto, presento la INPUT box
    }
}

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

Hai ragione.. chissà xchè non mi era venuto in mente un semplice controllo nel php e mi ostinavo sul javascript.. :saltella: Ora mi metto al lavoro e lo provo subito :fiorellino:

Ps. che tu sappia esiste un modo in php5 per ottenere il numero di record in una tabella?

Xchè prima usavo il mysql_num_rows(), se invece volessi usare gli oggetti? devo usare un SELECT COUNT(*) come query oppure esiste una specie di $con->num_rows();?

EDIT: Come non detto :ciao: ho trovato http://www.php.net/manual/it/function.mysqli-num-rows.php

Grazie ancora!

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...