E' un motore di ricerca interno (lato client). Funzionante!
E' composto da 7 file. Questi:
form.htm
risultati.htm
ric_form.js
ric_search.js
ric_primi.js
ric_secondi.js
ric_dolci.js
Piccolo PROBLEMA
Se nella pagina "risultati.htm" richiamo soltanto 1 degli ultimi 3 file .js della lista qui sopra (ad esempio: ric.dolci.js), il motore di ricerca funziona perfettamente. E fin qui nessun problema.
Se invece, nella pagina "risultati.htm" li richiamo tutti e 3 (ric_primi.js , ric_secondi.js , ric_dolci.js), il motore di ricerca funziona perfettamente, sģ, ma... ignora i primi 2 (ric_primi.js e ric_secondi.js).
Di seguito vi posto i codici dei 7 file. ATTENZIONE! Del file "risultati.htm" vi posto le due versioni, vale a dire quella descritta nel mio primo caso (FUNZIONANTE al 100%), e quella descritta nel secondo caso (funzionante IN PARTE, ovvero 1/3).
Ecco i codici:
Questo č il file form.htm
codice:
<html> <head> <title>RICETTE</title> <script language="JavaScript1.3" type="text/javascript" src="ric_form.js"> </script> </head> <body> <form name="ric_Form" onsubmit="search_form(ric_Form);return false">
<input type="text" name="d" size="20"> <input type="button" value="Go" onclick="search_form(ric_Form)"> </p> </form>
Enter CIOCCOLATO or FRAGOLE or CREMA in the example above.</p> </body> </html>
Questo č il file risultati.htm (FUNZIONANTE al 100%)
codice:
<html> <head> <title>RICETTE SEARCH RESULTS</title> <script language="JavaScript1.3" type="text/javascript" src="ric_form.js"></script> <script language="JavaScript1.3" type="text/javascript" src="ric_dolci.js"></script> <script language="JavaScript1.3" type="text/javascript" src="ric_search.js"></script> </head> <body> <form name="ric_Form" onsubmit="search_form(ric_Form);return false">
<input type="text" name="d" size="20"> <input type="button" value="Go" onClick="search_form(ric_Form)"> </p> </form> <script language="JavaScript1.3" type="text/javascript">return_query()</script> <script language="JavaScript1.3" type="text/javascript">num_ric()</script>
page(s) found </p> <hr>
<script language="JavaScript1.3" type="text/javascript"> out_ric() </script> </p> </body> </html>
Questo č il file risultati.htm (funzionante IN PARTE, ovvero 1/3)
codice:
<html> <head> <title>RICETTE SEARCH RESULTS</title> <script language="JavaScript1.3" type="text/javascript" src="ric_form.js"></script> <script language="JavaScript1.3" type="text/javascript" src="ric_primi.js"></script> <script language="JavaScript1.3" type="text/javascript" src="ric_secondi.js"></script> <script language="JavaScript1.3" type="text/javascript" src="ric_dolci.js"></script> <script language="JavaScript1.3" type="text/javascript" src="ric_search.js"></script> </head> <body> <form name="ric_Form" onsubmit="search_form(ric_Form);return false">
<input type="text" name="d" size="20"> <input type="button" value="Go" onClick="search_form(ric_Form)"> </p> </form> <script language="JavaScript1.3" type="text/javascript">return_query()</script> <script language="JavaScript1.3" type="text/javascript">num_ric()</script>
page(s) found </p> <hr>
<script language="JavaScript1.3" type="text/javascript"> out_ric() </script> </p> </body> </html>
Questo č il file ric_form.js
codice:
var results_location = "risultati.htm"; function search_form(ric_Form) { if (ric_Form.d.value.length > 0) { document.cookie = "d=" + escape(ric_Form.d.value); window.location = results_location; } }
Questo č il file ric_search.js
codice:
var include_num = 1; var bold = 0; var cookies = document.cookie; var p = cookies.indexOf("d="); if (p != -1) { var st = p + 2; var en = cookies.indexOf(";", st); if (en == -1) { en = cookies.length; } var d = cookies.substring(st, en); d = unescape(d); } var od = d; var m = 0; if (d.charAt(0) == '"' && d.charAt(d.length - 1) == '"') { m = 1; } var r = new Array(); var co = 0; if (m == 0) { var woin = new Array(); var w = d.split(" "); for (var a = 0; a < w.length; a++) { woin[a] = 0; if (w[a].charAt(0) == '-') { woin[a] = 1; } } for (var a = 0; a < w.length; a++) { w[a] = w[a].replace(/^\-|^\+/gi, ""); } a = 0; for (var c = 0; c < xxxxx.length; c++) { pa = 0; nh = 0; for (var i = 0; i < woin.length; i++) { if (woin[i] == 0) { nh++; var pat = new RegExp(w[i], "i"); var rn = xxxxx[c].search(pat); if (rn >= 0) { pa++; } else { pa = 0; } } if (woin[i] == 1) { var pat = new RegExp(w[i], "i"); var rn = xxxxx[c].search(pat); if (rn >= 0) { pa = 0; } } } if (pa == nh) { r[a] = xxxxx[c]; a++; } } co = a; } if (m == 1) { d = d.replace(/"/gi, ""); var a = 0; var pat = new RegExp(d, "i"); for (var c = 0; c < xxxxx.length; c++) { var rn = xxxxx[c].search(pat); if (rn >= 0) { r[a] = xxxxx[c]; a++; } } co = a; } function return_query() { document.ric_Form.d.value = od; } function num_ric() { document.write(co); } function out_ric() { if (co == 0) { document.write('Your search did not match any documents.
Make sure all keywords are spelt correctly.
Try different or more general keywords.'); return; } for (var a = 0; a < r.length; a++) { var os = r[a].split("^"); if (bold == 1 && m == 1) { var br = "" + d + ""; os[2] = os[2].replace(pat, br); } if (include_num == 1) { document.write(a + 1, '. ', os[0], '
', os[2], '
'); } else { document.write('', os[0], '
', os[2], '
'); } } }
Questo č il file ric_primi.js
codice:
var xxxxx = new Array(); xxxxx[0] = "SPAGHETTI^spaghetti.htm^Spaghetti al pomodoro, al ragł di carne, alla carbonara...^pomodoro, ragł di carne, carbonara"; xxxxx[1] = "PENNETTE^pennette.htm^Pennette alla viennese, all'arrabbiata...^viennese, arrabbiata"; xxxxx[2] = "MACCHERONI^maccheroni.htm^Maccheroni e pancetta, con i funghi...^pancetta, funghi";
Questo č il file ric_secondi.js
codice:
var xxxxx = new Array(); xxxxx[0] = "POLLO^pollo.htm^Pollo allo spiedo, alla diavola...^spiedo, diavola"; xxxxx[1] = "BISTECCA^bistecca.htm^Cotoletta alla milanese, fiorentina, filetto al pepe...^cotoletta, milanese, fiorentina, pepe";
Questo č il file ric_dolci.js
codice:
var xxxxx = new Array(); xxxxx[0] = "CROSTATA^crostata.htm^Crostata di mele, alle fragole, ai mirtilli...^mele, fragole, mirtilli"; xxxxx[1] = "GELATO^gelato.htm^Gelato al pistacchio, al cioccolato...^pistacchio, cioccolato"; xxxxx[2] = "PASTICCERIA^pasticceria.htm^Cornetto alla crema, bignč...^cornetto, crema, bignč";
In conclusione.
Sņ benissimo che potrei raggruppare in un unico file (.js), i 3 file in questione (ric_primi.js , ric_secondi.js , ric_dolci.js). Oppure incorporare i 3 file nel file ric_search.js, Ma... li vorrei mantenere separati per un discorso di "gestione" e semplicitą, visto che le varie liste delle ricette (gli Array) si allungheranno (e se ne potranno aggiungere anche altre, tipo: contorni, formaggi, ecc.).
Quindi vi chiedo...
...č possibile farli funzionare tutti e 3, mantenendoli separati (come file esterni)?
Thanks. Ciao