Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    devo modificare un javascript

    Ringrazio chiunque sara' in grado di darmi una mano:
    Ho trovato un javascript che permette di gestire un piccolo database e fa una ricerca sullo stesso. Per le mie esigenze pero' fa troppe cose dato che lui fa ricerche su piu' campi di uno stesso record, mentre a me serve soltanto che ricerchi in un solo campo (il primo) poi scriva a video la descrizione di questo codice (il secondo campo)e linki per questo risultato un file dbf.
    Invece attualmente lo script fa ricerche combinate e altre cose che non mi occorrono.
    Qualcuno puo darmi una mano a semplificarlo?
    Grazie mille.
    Il file si trova QUI

    e lo script e':

    codice:
    <script language="javascript" src="db.js"></script>
    <script language="javascript">
    
    var tutti = "_and"
    var alcuni = "_or"
    var tipo_ricerca = ""
    var s = 0
    var o = 5
    var copia_risultati = new Array()
    var doc = parent.frames[1].document
    
    function filtro (query) {
    	if (query.charAt(0) == "+")
    	{
    		query = query.substring (1, query.length)
    		tipo_ricerca = tutti
    	}
    	else
    	{
    		tipo_ricerca = alcuni
    	}
    	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[i].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[i]		
    				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[i].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[i]
    	}
    	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">Chiave di ricerca: ' + '' + parent.frames[0].document.forms[0]._query.value + '' + '
    Risultati:' + '' + ' da ' + (s + 1) + ' a ' + limite + ' di ' + array_risultati.length + '</font>' + '<hr size="1" noshade>')	
    		for (i = s; i < limite; i++)
    		{
    			var splitta = array_risultati[i].split("|")
    			doc.write('<tr><td><dl><font face="Verdana, Arial, sans" size="2">' + splitta[0].link(splitta[2]) + '' + splitta[1] + '</font>')
    		}
    	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>
    il db.js e' fatto cosi':

    codice:
    var db = new Array ("campo 1|Descrizione1|url_pdf",
        "campo 2|Descrizione2|url_pdf",
        "campo 3|Descrizione3|url_pdf");

  2. #2
    Ho in parte risolto ma ho necessita' che la ricerca avvenga solo nel primo campo del database, come faccio a dirlo allo script che non deve fare la ricerca nel secondo campo?
    Grazie

  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    var stringaUtile = stringaConfronto.substring(0,stringaConfronto.last IndexOf("|"))

    diventa

    var stringaUtile = stringaConfronto.substring(0,stringaConfronto.indexOf("|"))

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  4. #4
    Originariamente inviato da horusbird
    Ho in parte risolto ma ho necessita' che la ricerca avvenga solo nel primo campo del database, come faccio a dirlo allo script che non deve fare la ricerca nel secondo campo?
    Grazie
    Perfetto grazie
    Visto che sei stato cosi' gentile, puoi dirmi anche come faccio a far si che venga ricercato "solo" il codice che inserisco nel form e non tutti i codici che contengono la parte che inserisco?
    Cioe' se un codice e' 234567 e un altro 345678 , se metto 45 me li visualizza entrambi mentre io vorrei che non visualizzasse nulla se non inserisco il codice corretto.
    In pratica la funzione che ricerca con parte del valore non vorrei fosse attiva!
    Di nuovo grazie

  5. #5

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.