Salve ragazzi/e.
Mi sto costruendo una sorta di motore di ricerca per eventi (per lo spettacolo). E' uno script (.js) che ho trovato in rete e lo sto adattando alle mie esigenze. Ci sono riuscito, ho effettuato delle modifiche e delle aggiunte, funziona tutto perfettamente. Ma... è sorto un problema. Andiamo con ordine.
_________________________________________________
Questa è la mia pagina di ricerca .htm
codice:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script type="text/javascript" src="db_script.js"></script> <script type="text/javascript" src="db_eventi.js"></script> <title>CERCA NEL DATABASE</title> </head> <body> <p style="margin-top: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0"><font face="Arial">CERCA NEL DATABASE</font></p> <p style="margin-top: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0"></p> <p style="margin-top: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0"><font face="Arial" color="#FF0000">(Nota: il modulo di ricerca é case sensitive,</font></p> <p style="margin-top: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0"><font face="Arial" color="#FF0000">quando digiti fai attenzione alle minuscole/maiuscole, agli spazi, ai simboli, alla punteggiatura)</font></p> <p style="margin-top: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0"></p> <form NAME="SearchForm" onSubmit="TypeNext();return false"> <p style="margin-top: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0"><font face="Arial">Qui la tua ricerca:</font><big> </big><input NAME="Text" ROWS="1" COLS="20" size="51"> <input NAME="FindNext" TYPE="submit" VALUE="Cerca"> <input NAME="NewSearch" TYPE="Reset" VALUE="Nuova ricerca" onClick="ResetSearch();"></p> <p style="margin-top: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0"><font face="Arial">Ricerca per:</font><big> </big><select VALUE="field" SIZE="1"> <option>giorno </option> <option>mese </option> <option>anno </option> <option>evento </option> <option>nome </option> <option>ora </option> <option>città </option> <option>provincia </option> </select></p> <p style="margin-top: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0"></p>
<font FACE="Arial" color="#000000">Risultato:</font>
<input NAME="Result1" ROWS="1" COLS="15" SIZE="1"><input NAME="Result2" ROWS="1" COLS="15" SIZE="1"><input NAME="Result3" ROWS="1" COLS="15" SIZE="2"> <input NAME="Result4" TYPE="TEXT" ROWS="1" COLS="15" SIZE="17"> <input NAME="Result5" TYPE="TEXT" ROWS="1" COLS="31" SIZE="25"> <input NAME="Result6" TYPE="TEXT" ROWS="1" COLS="5" SIZE="5"> <input NAME="Result7" TYPE="TEXT" ROWS="1" COLS="25" SIZE="20"> <input NAME="Result8" TYPE="TEXT" ROWS="1" COLS="31" SIZE="3"></p> </form> </body> </html>
_________________________________________________
Questo è il javascript (db_script.js):
codice:
function createArray(length) { this.length = length; for( var i = 1; i<= length; i++) this[i] = null; return this; } var Entries = 6; var Separator = ";" var Fields = 8; var iGiorno = 1; var iMese = 2; var iAnno = 3; var iEvento = 4; var iNome = 5; var iOra = 6; var iCittà = 7; var iProvincia = 8; var LastMatch = 0; function GetField(Entry,number) { var Out = ""; var FirstChar; var LastChar; FirstChar = 0; LastChar = Entry.indexOf(Separator) ; if (number == 1) { Out += Entry.substring(FirstChar,LastChar); return Out; } if (number == Fields) { Out+= Entry.substring(Entry.lastIndexOf(Separator) + 1,Entry.length) return Out; } for(var i =2; i <= number; i++) { FirstChar = LastChar + 1; LastChar = Entry.indexOf(Separator, FirstChar); } Out += Entry.substring(FirstChar,LastChar); return Out; } function FindNext(String, number) { var CompareWith = ""; for(var i = LastMatch + 1; i <=Data.length; i++) { var buf = GetField(Data[i],number); var bl = parseInt(buf.length); var sl = parseInt(String.length); if(bl > sl) { CompareWith = buf.substring(0,sl ); } else { CompareWith = buf; } if (CompareWith == String) { LastMatch = i; return i; } } LastMatch = 0; return 0; } function ResetSearch() { LastMatch = 0; for(var i = 1; i <=Fields; i++) { document.SearchForm.elements[i+3].value = ""; } } function TypeNext() { var SearchString = document.SearchForm.Text.value; var index =document.SearchForm.elements[3].options.selectedIndex + 1; var j = FindNext(SearchString, index); if (j == 0) { alert("ATTENZIONE! C'é un problema: \n \n- hai sbagliato la digitazione, riprova \n- non hai selezionato la casella *Ricerca per:* \n- il dato che stavi cercando non é presente nel database \n \n Oppure: \n- non ci sono altri dati disponibili, la ricerca é terminata."); ResetSearch(); return; } var buf = ""; for(var i = 1; i <=Fields; i++) { buf = GetField(Data[j],i); document.SearchForm.elements[i+3].value = buf; } }
_________________________________________________
Questo è il "database" degli eventi (db_eventi.js):
codice:
var Data = new createArray(Entries); Data[1] = "09;10;2010;Voci in Tour;Red-A Parker;21.30;Lodi;(MI)"; Data[2] = "09;10;2010;Palatenda;Rumble Mumble Band;22.00;Tortona;(AL)"; Data[3] = "10;10;2010;Voci in Tour;Renato Saracina & Friend's;20.45;Brisighella;(RA)"; Data[4] = "27;10;2010;Rassegna teatrale;Fliness Quartet;21.30;Arezzo; "; Data[5] = "15;11;2010;Canti in villa;Scuola Vinicio Galbini, Draghi;20.00;Rovereto;(TN)"; Data[6] = "30;11;2010;Motoraduno;Red-Blue Rider 1987;14.00;Brisighella;(RA)";
_________________________________________________
IL PROBLEMA
Quando effettui una ricerca per mese, e ti capita (esempio) il mese di ottobre, vale a dire il 10 (vedi mio "database"), per poter visualizzare tutti gli eventi del mese 10 hai due possibilità: 1) continui a cliccare sul pulsante "Cerca" e ad uno ad uno visualizzi i vari eventi del mese di ottobre (finchè si esauriscono); 2) continui a premere il tasto invio nella tua tastiera (finchè si esauriscono gli eventi).
E QUI VI CHIEDO AIUTO...
Esiste un'alternativa? Ad esempio, quando cerco il mese 10, non è possibile visualizzare tutti gli eventi in un colpo solo (tutti in un'unica lista sotto il Risultato)? Tenete presente che gli eventi in un solo mese possono essere anche 30 o 40. (il database che ho preparato con 6 eventi, il db_eventi.js, è solo una prova)
Si può fare? Se sì... cosa devo aggiungere?
PS: so benissimo che con php, asp, ecc. tutto diventa più facile, ma io non conosco nulla di quei linguaggi...