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

    Sql non corretto su motore di ricerca

    Salve ragazzi ho trovato questo script su HTML.it per mettere un motore di ricerca sul proprio sito collegato a un DB.
    Lo scipt va bene solo che mi effettua la ricerca su un solo campo quando io dovrei farla su due o più campi.
    Di seguito vi posto il codice originale mentre dopo quello modificato da me.

    codice:
    <%@LANGUAGE = JScript%>
    <%
    	/*
    		Autore: Luca Ruggiero - http://www.lukeonweb.net
    		Fonte:  freeAsp.it - http://freeasp.html.it
    	*/
    	
    	// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
    	
    	/*
    		ISTALLAZIONE DELLO SCRIPT
    		
    		:: Lo script è un semplice esempio su come è possibile effettuare una ricerca tramite una pagina Asp
    		   ed un modulo Html su di una tabella di un Database. Non importa il contenuto della tabella, si può
    		   trattare sia di dati interni al sito che di una raccolta di siti esterni, sia di file da scaricare...
    		   il procedimento è sempre lo stesso!
    		
    		:: Per realizzare l'esempio ho supposto che il modulo di ricerca sia presente solo nella pagina cerca.asp
    		   ma è possibile prendere il codice Html del <form> ed importarlo in qualsiasi pagina del sito, purchè
    		   il metodo di ricerca sia sempre il "post" ed il file a cui punta l'"action" sia cerca.asp
    		
    		:: L'interfaccia è molto semplice, se vogliamo simile a quella di Google, ed i blocchi di script sono divisi
    		   in due parti:
    		      1) La parte sopra l'inizio del codice <html> della pagina sono di inizializzazione; viene creata anche
    		         la stringa di ricerca Sql per l'occasione, e può restare dov'è!
    		      2) La parte nel <body> della pagina comprende il motore di ricerca ed il codice Html per restituire
    		         a video i risultati, il tutto facilmente personalizzabile stilisticamente.
    	*/
    
    	// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
    	
    	Response.Buffer = true;
    	var Cn = new ActiveXObject("ADODB.Connection");
    		Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("mdb-database/cerca.mdb"));
    	var testo = new String(Server.HTMLEncode(Request.Form("cerca")));
    	var r_testo = testo.replace(/'/g,"''");
    	var cerca = r_testo.split(" "); // Tutte le parole chiave devono essere separate da uno spazio vuoto
    	var sql = "SELECT * FROM risultati WHERE ";
    		for (var i=0; i<cerca.length; i++)
    		{
    			if (i > 0) sql += " AND";
    			sql += " parole_chiave LIKE '%" + cerca[i] + "%'";
    		}
    		sql += " ORDER BY titolo";
    	var Mostra = Cn.Execute(sql);
    %>
    <html>
    	<head>
    		<title>Cerca</title>
    		<basefont size="2" face="Verdana">
    	</head>
    <body link="Blue" alink="Red" vlink="Blue">
    
    <h3>
    	Cerca
    	<form method="post" action="cerca.asp">
    		<input type="text" name="cerca" size="50" value="<%cerca != "undefined" ? Response.Write(testo) : Response.Write("")%>">
    		<input type="submit" value="Cerca">
    	</form>
    </h3>
    
    <%if (testo != "undefined") {%>
    
    
    Risultati della ricerca per il termine <font color="Red"><%=testo%></font></p>
    <%
    	if (testo == "" || testo == "undefined" || testo.charAt(0) == " ")
    	{
    		Response.Write("
    
    Inserire un termine per effettuare una ricerca</p>");
    	}
    	else if (Mostra.EOF)
    	{
    		Response.Write("
    
    Nessun risultato</p>");
    	}
    	else
    	{
    		while (!Mostra.EOF)
    		{
    			with (Response)
    			{
    				Write("
    
    ");
    				Write("" + Mostra("titolo") + "
    ");
    				Write(Mostra("descrizione") + "
    ");
    				Write("<font color='Green'>" + Mostra("url") + "</font>");
    				Write("</p>");
    			}
    			Mostra.MoveNext();
    		}
    	}
    %>
    <%}%>
    
    </body>
    </html>
    <%Cn.Close()%>
    Io ho modificato l'istruzione SQL in questo modo afficnhe mi prenda in considerazione anche il campo descrizione ma a questo punto qualunque valore inserisco nella ricerca mi dice che non esiste.

    codice:
    	Response.Buffer = true;
    	var Cn = new ActiveXObject("ADODB.Connection");
    		Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("mdb-database/cerca.mdb"));
    	var testo = new String(Server.HTMLEncode(Request.Form("cerca")));
    	var r_testo = testo.replace(/'/g,"''");
    	var cerca = r_testo.split(" "); // Tutte le parole chiave devono essere separate da uno spazio vuoto
    	var sql = "SELECT * FROM risultati WHERE ";
    		for (var i=0; i<cerca.length; i++)
    		{
    			if (i > 0) sql += " AND";
    			sql += " parole_chiave LIKE '%" & "descrizione LIKE '%"  + cerca[i] + "%'";
    		}
    		sql += " ORDER BY titolo";
    	var Mostra = Cn.Execute(sql);
    %>
    Non riesco a capure perchè non mi restituiesce nessun valore.

    pote darmi una mano?

  2. #2
    magari dico una boiata ma hai provato a aggiungere "and" dentro le virgolette di "descrizione like"?

  3. #3
    unit unit ma che hai suggerito? la prossima volta che ti becco su msn ti picchio


    codice:
    sql+= " parole_chiave LIKE '%" + cerca[i] + "%' or descrizione LIKE '%" + cerca[i] + "%'";
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    Grazie tante Santino 83


  5. #5
    Originariamente inviato da Santino83_02
    unit unit ma che hai suggerito? la prossima volta che ti becco su msn ti picchio


    codice:
    sql+= " parole_chiave LIKE '%" + cerca[i] + "%' or descrizione LIKE '%" + cerca[i] + "%'";

    e daiiiii...gnari.....dovresti stupirti che non sono andato neanche così lontano dalla soluzione....
    anzi avevo proprio capito, solo che ho espresso male concetto e soluzione...si insomma ho sbagliato...

  6. #6
    Originariamente inviato da unit52
    e daiiiii...gnari.....dovresti stupirti che non sono andato neanche così lontano dalla soluzione....
    anzi avevo proprio capito, solo che ho espresso male concetto e soluzione...si insomma ho sbagliato...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Originariamente inviato da Santino83_02
    ah già che sei solo un novellino con solo 250 messaggi....

  8. #8
    Originariamente inviato da unit52
    ah già che sei solo un novellino con solo 250 messaggi....
    270 prego e cmq sono sempre piu dei tuoi
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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.