select dinamiche che riportano valori in una textarea.

releo

Nuovo Utente
30 Ago 2010
4
0
0
ciao ragazzi.
sono nuovo, e sto improvvisando uno script personalizzato, copiando pezzi di script vari e cercando di adattarli e di legarli tra loro.
il problema è che non ho le basi e buttarmi senza nessuna nozione in questo mondo, percui diventa tutto assai complicato.. pure troppo.
ho cercato di risolvare passo dopo passo tutti i problemi che incontravo da solo, facendo prove e tentativi.. ora però non riesco a fare l'ultimo passo, ed ho bisogno di voi.
mi sono iscritto perce ho bisogno gentilmente del vostro aiuto per risolvere un poroblemino in un codice:

vorrei che i 2 select fossero dinamici. cioè vorrei che selezionando una "squadra"nel primo, non mi si ripresentasse lo stesso nome nel secondo select.
è possibile usando questo script modificare qualcosa per ottenere quello di cui ho bisogno?
(però vorrei che le altre funzioni rimanessero intatte)


grazie per l'aiuto. aspetto fiducioso.
leo



-----------------------------------------------------------------------------------------------------
<script language="javascript" src="db.js"></script>
<script language="javascript">


var tutti = "_and"
var alcuni = "_or"
var tipo_ricerca = ""
var s = 0
var o = 10
var copia_risultati = new Array()
var doc = parent.frames[1].document




function scriviform()
{

var testo1 = "";
var testo2 = "";

var Xsquadra = document.squadra.squ.selectedIndex;
var Xcontro = document.contro.con.selectedIndex;




switch(Xsquadra) {
case 1: testo1 = "milan"; break;
case 2: testo1 = "juve"; break;
case 3: testo1 = "inter"; break;
case 4: testo1 = "roma"; break;
case 5: testo1 = "napoli"; break;
}

switch(Xcontro) {
case 1: testo2 = "milan"; break;
case 2: testo2 = "juve"; break;
case 3: testo2 = "inter"; break;
case 4: testo2 = "roma"; break;
case 5: testo2 = "napoli"; break;
}


var tot = testo1 + " " + testo2;
document.cerca._query.value = tot;
}





function filtro (query) {
if (query.charAt(0) == "+")
{
query = query.substring (1, query.length)
tipo_ricerca = tutti
}
else
{


// Se vuoi che non ricerchi tutti i valori ma solo alcuni (quando manca il segno '+' correggi qui sotto, metti "alcuni"

tipo_ricerca = tutti



}
while (query.charAt(0) == " ") query = query.substring(1, query.length)
document.forms[0]._query.value = query
while (query.charAt(query.length - 1) == " ") query = query.substring(0, query.length - 1)
document.forms[0]._query.value = query
formatta_stringa (query)
}

function formatta_stringa (query) {
var stringa_formata = query.split (" ")
if (tipo_ricerca == "_or")
cerca_or (stringa_formata)
else
cerca_and (stringa_formata)

}

function cerca_or (stringa_formata) {
var matrix = new Array()
for (i = 0; i < db.length; i++)
{
var stringaConfronto = db.toUpperCase()
var stringaUtile = stringaConfronto.substring(0, stringaConfronto.lastIndexOf("|"))
for (j = 0; j < stringa_formata.length; j++)
{
var stringaUtente = stringa_formata[j].toUpperCase()
if (stringaUtile.indexOf(stringaUtente) != -1)
{
matrix[matrix.length] = db
break
}
}
}
verifica(matrix)
}

function cerca_and (stringa_formata) {
var matrix = new Array()
for (i = 0; i < db.length; i++)
{
var coincidenza = true
var stringaConfronto = db.toUpperCase()
var stringaUtile = stringaConfronto.substring(0, stringaConfronto.lastIndexOf("|"))
for (j = 0; j < stringa_formata.length; j++)
{
var stringaUtente = stringa_formata[j].toUpperCase()
if (stringaUtile.indexOf(stringaUtente) == -1)
coincidenza = false
}
if (coincidenza)
matrix[matrix.length] = db
}
verifica(matrix)
}

function verifica (matrix) {
if (matrix.length == 0)
{
doc.open()
doc.write('<html><head></head><body bgcolor="white"><hr size="1" noshade>')
doc.write('<font face="Verdana, Arial, sans" size="3"><div align="center">Spiacente, non ho trovato elementi corrispondenti</div></font><hr size="1" noshade></body></html>')
doc.close()
}
else
{
array_risultati = matrix.sort()
stampa_risultati(array_risultati, s, o)
}
}

function stampa_risultati(array_risultati, s, o) {
var limite = (array_risultati.length < s + o) ? array_risultati.length : (s + o)
doc.open()
doc.write('<html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body bgcolor="white">' + '<table width="90%" border="0">' + '<tr><td><hr size="1" noshade><tr><td> <font face="Verdana, Arial, sans" size="2" color="blue"><b>Chiave di ricerca: ' + '</font><i><font face="Verdana, Arial, sans" size="2" color="black">' + parent.frames[0].document.forms[0]._query.value + '</font></i><font face="Verdana, Arial, sans" size="2" color="blue">' + '<br>Risultati:' + '</font></i><font face="Verdana, Arial, sans" size="2" color="black">' + ' da ' + (s + 1) + ' a ' + limite + ' di ' + array_risultati.length + '</i></font>' + '</b><hr size="1" noshade>')
for (i = s; i < limite; i++)
{
var splitta = array_risultati.split("|")

















doc.write('<tr><td align="right"><dl><font face="Verdana, Arial, sans" Color="red" size="2" >' + splitta[1] + '</font>&nbsp;</td><td><font face="Verdana, Arial, sans" Color="Black" size="2">' + splitta[2] + '</font>&nbsp;</td><td><font face="Verdana, Arial, sans" Color="Green" size="2">' + splitta[3] + '</font>&nbsp;</td><td><font face="Verdana, Arial, sans" Color="Green" size="2">' + splitta[4] + '</font>&nbsp;</td><td><font face="Verdana, Arial, sans" Color="Green" size="2">' + splitta[5] + '</i></font>&nbsp;</td></tr>')













}
doc.write('</table>')
visualizza_pulsanti (array_risultati, s, o)
doc.write('</body></html>')
doc.close()
}

function visualizza_pulsanti(array_risultati, s, o) {
doc.write('<form><div align="center">')
if (s + o < array_risultati.length)
{
doc.write('<input type="button" value="successivi" onClick="parent.frames[0].stampa_risultati(parent.frames[0].array_risultati, ' + (s + o) + ', ' + o + ')">')
}
if (s > 0)
{
doc.write('<input type="button" value="precedenti" onClick="parent.frames[0].stampa_risultati(parent.frames[0].array_risultati, ' + (s - o) + ', ' + o + ')">')
}
doc.write('</div></form>')
}

</script>

</head>
<body bgcolor="white">
<basefont face="Arial, Verdana, sans" size="2">


<table border="1" bgcolor="#FFC0CB" width="100%">

<form name ="cerca" onSubmit="filtro(document.forms[0].elements[0].value); return false">
<tr>
<td colspan="4" align="center">
<table width="100%">
<tr>
<td width="33%" align="center">
<font face="Verdana, Arial, Helvetica, sans-serif" size="2">CERCA NEL DATABASE</font>
</td>
<td width="64%" align="center">
<input type="text" name="_query" size="50">
<br>
<input type=button value="Ricerca Partite" OnClick="filtro(document.forms[0].elements[0].value);"> &nbsp; &nbsp; &nbsp; &nbsp;
<input type="reset" value="Azzera"> &nbsp; &nbsp; &nbsp; &nbsp;
<font face="Verdana, Arial, Helvetica, sans-serif" size="2"><a href="help.html" target="bot">Home</a></font>
</td>
</tr>
</table>
</td>
</tr>
</form>
</DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV>
<tr bgcolor="FFFFFF" >

<td width="50%">
<form name="squadra">
Squadra:<br>
<select name="squ" size="1" onchange="scriviform()">
<option>:: seleziona squadra ::</option>
<option>milan</option>
<option>juve</option>
<option>inter</option>
<option>roma</option>
<option>napoli</option>
</select>
</form>
</td>


<td width="50%">
<form name="contro">
Contro:<br>
<select name="con" size="1" onchange="scriviform()">
<option>:: seleziona avversario ::</option>
<option>milan</option>
<option>juve</option>
<option>inter</option>
<option>roma</option>
<option>napoli</option>
</select>
</form>
</td>

</form>
</td>

</tr>
</table>
</DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV>


</td>
</tr>


</table>
</div>



</body>
----------------------------------------------------------------------------------------------------------
 

Evit

Nuovo Utente
30 Ago 2010
7
0
0
vorrei che i 2 select fossero dinamici. cioè vorrei che selezionando una "squadra"nel primo, non mi si ripresentasse lo stesso nome nel secondo select.
è possibile usando questo script modificare qualcosa per ottenere quello di cui ho bisogno?
(però vorrei che le altre funzioni rimanessero intatte)
Certo che è possibile. =)
Bisogna impostare una funzione che rimuova dal secondo select il campo selezionato nel primo, ovvero bisognerà modificare a questo scopo la funzione richiamata dall'evento onchange: scriviform()
Ecco cosa devi aggiungere:
HTML:
	function rimuovivoce(){
		indice_selezionato = document.getElementById('squ').selectedIndex;
		if(indice_selezionato>=0){
			document.getElementById('con').options[indice_selezionato]=null;
		}
	}
rimuovivoce();

In modo che la funzione diventi:
HTML:
function scriviform()
{

var testo1 = "";
var testo2 = "";

var Xsquadra = document.squadra.squ.selectedIndex;
var Xcontro = document.contro.con.selectedIndex;




switch(Xsquadra) {
case 1: testo1 = "milan"; break;
case 2: testo1 = "juve"; break;
case 3: testo1 = "inter"; break;
case 4: testo1 = "roma"; break;
case 5: testo1 = "napoli"; break;
}

switch(Xcontro) {
case 1: testo2 = "milan"; break;
case 2: testo2 = "juve"; break;
case 3: testo2 = "inter"; break;
case 4: testo2 = "roma"; break;
case 5: testo2 = "napoli"; break;
}


var tot = testo1 + " " + testo2;
document.cerca._query.value = tot;

	function rimuovivoce(){
		indice_selezionato = document.getElementById('squ').selectedIndex;
		if(indice_selezionato>=0){
			document.getElementById('con').options[indice_selezionato]=null;
		}
	}
rimuovivoce();
}

Bisogna anche attribuire un id ai due select, che diventano:
HTML:
<form name="squadra">
Squadra:<br>
<select name="squ" id="squ" size="1" onchange="scriviform()">
<option>:: seleziona squadra ::</option>
<option>milan</option>
<option>juve</option>
<option>inter</option>
<option>roma</option>
<option>napoli</option>
</select>
</form>
</td>


<td width="50%">
<form name="contro">
Contro:<br>
<select name="con" id="con" size="1" onchange="scriviform()">
<option>:: seleziona avversario ::</option>
<option>milan</option>
<option>juve</option>
<option>inter</option>
<option>roma</option>
<option>napoli</option>
</select>
</form>

Dovrebbe funzionare. :D

P.S. non ho controllato il resto del codice. :p

EDIT: il problema è se si cambia squadra, poichè la squadra precedentemente scelta non ricompare nel select delle "contro".
Per risolvere il problema basta aggiungere un controllo alla funzione: se il campo di testo "cerca nel database" non è nullo, prima della funzione rimuovivoce() bisogna aggiungere al secondo select il campo precedentemente rimosso.
Credi di essere in grado di aggiustare tu il codice? :)
 
Ultima modifica:

releo

Nuovo Utente
30 Ago 2010
4
0
0
Ah! grande! ti ringrazio tantissimo.

Ho provato ad aggiungere la funzione che mi hai suggerito. e ho capito qual è il problema che mi evidenziavi.
Non so se riuscirò ad aggiustarlo da solo, ma ci proverò. ora comincio, spero di avere fortuna. Se poi tu hai altro tempo sappi che accetto volentieri un tuo ulteriore aiuto ... ;-)

grazie comunque.
 

releo

Nuovo Utente
30 Ago 2010
4
0
0
Ho provato... non riesco a tornare alla situazione originale quando la scelta sul primo select viene modificata.. inoltre mi preoccupa unacosa, percui non so se è il caso di sbatterci la testa ancora se poi mi trovo comunque questo problema:

ti spiego:

ho notato una cosa: perche quando seleziono (per esempio Juve nel 1° e napoli nel 2° --> juve roma) nella prima select una opzione, nel secondo non c'è piu corrispondenza col valore della select?

Ciao Grazie.
 

Evit

Nuovo Utente
30 Ago 2010
7
0
0
Lascia stare, la mia soluzione comporta una serie di problemi in più che non penso valga la pena.
Cancella tutto e aggiungi questo semplice controllo:
HTML:
 if (testo1 == testo2) {alert("Errore! Non puoi selezionare la stessa squadra per il confronto"); return false}
Alla riga 44, prima di
HTML:
var tot = testo1 + " " + testo2;
all'interno della funzione scriviform() =)
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Aggiungo che alla fine non c'erano moltissimi problemi. Si poteva risolvere la questione anche salvando in una variabile il valore cancellato e ripristinarlo quando quello della prima select veniva eliminato. Oppure si poteva salvare in un array tutti i valori che la select poteva assumere, e quando veniva modificato quello della prima ripristinare i valori iniziali.
 

Evit

Nuovo Utente
30 Ago 2010
7
0
0
Aggiungo che alla fine non c'erano moltissimi problemi. Si poteva risolvere la questione anche salvando in una variabile il valore cancellato e ripristinarlo quando quello della prima select veniva eliminato. Oppure si poteva salvare in un array tutti i valori che la select poteva assumere, e quando veniva modificato quello della prima ripristinare i valori iniziali.
Naturalmente. :)
In questo caso ho ricordato che sarebbe anche bastata una soluzione più semplice ma che sostanzialmente serve allo scopo: ovvero evitare che vengano effettuate ricerche su martite in cui una stessa squadra gioca contro se stessa. :D
 
Discussioni simili
Autore Titolo Forum Risposte Data
L Select Dinamiche...da txt? PHP 3
eraclio666 [PHP] 2 SELECT DINAMICHE PHP 8
G [Javascript] select dinamiche Javascript 0
H [PHP] Select dinamiche : regioni province comuni PHP 2
H select dinamiche php mysql PHP 4
H problema con select dinamiche e javascript Javascript 0
W Select dinamiche PHP 3
criric Select dinamiche : regioni province comuni Snippet PHP 28
S Select dinamiche concatenate Ajax 8
F Problema select dinamiche con php e jquery jQuery 1
Z Select dinamiche PHP MySQL Javascript PHP 1
M select dinamiche con Jquery e php jQuery 9
V Select dinamiche in php PHP 1
L Select dinamiche - stampa ID e non il valore PHP 3
F Select Dinamiche in fase di modifica Classic ASP 1
L Aiuto per select dinamiche in asp Classic ASP 3
F Select dinamiche con ASP & AJAX Ajax 11
A select dinamiche, errore assurdo, non compare la terza select Javascript 0
J Select automatiche o dinamiche PHP 3
L Ripetere Campi disabilitando input in riferimento ad un valore della select jQuery 0
otto9due Ordinare option di una select Javascript 5
W MySQL ciclo in SELECT MySQL 0
W MySQL SELECT list dinamica MySQL 0
M Select Option dentro una Table jQuery 2
G Colorare menu select attraverso ricerca php PHP 0
L problema con query select PHP 2
F menù select dinamico da db in php PHP 3
D popolare campi tra th alla select PHP 36
M Estrarre valore con SELECT COUNT PHP 0
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
E Php select option e ajax PHP 23
R Select concatenata che non funziona la seconda volta Ajax 3
L select join e sottrazione punti PHP 13
L input dati con inser into select ? PHP 4
V hierarchy-select jQuery 0
Emix Select concatenate php sql ajax PHP 2
F query e form con select multipla PHP 17
T recupero valori select multipla da android Javascript 3
J php, scegliere autista da select e mostrare se ha fatto un incidente PHP 8
Tommy03 Select in ordine per numero di record MySQL 7
T problema con select dinamica con jquery Javascript 0
J Far comparire e scomparire un div con un select Javascript 1
M Opzioni select da 1 a 200 PHP 0
I Fatal error: Query Failed! SQL: SELECT * INTO OUTFILE PHP 1
C input in sostituzione della select PHP 2
G Insert into select - Aiuto MySQL 0
max1974 autocomplete trigger select jQuery 0
X [Select] Valori chiave non presenti in un'altra tabella MySQL 2
M Estrarre dati da una select HTML PHP 3
MarcoGrazia jquery validate, necessità di validare almeno un elemento select su due jQuery 1

Discussioni simili