Just nu i M3-nätverket
Gå till innehåll

Server-side sökfunktion?


piam

Rekommendera Poster

Hej!

 

Jag håller på att utveckla en hjälpfunktion till ett program och ett av mina mål var att ordna en sida med fritextsökning. Ett enkelt formulär där man kan skriva in ett ord och trycka på "sök", varpå ett Javascript kollar mot en databas/textfil med stoppord för att se om sökningen matchar något av de orden, och som sedan plockar fram de matchande värdena. Problemet är att användarna av säkerhetsskäl inte har uppkoppling till Internet från sina datorer, och sökfunktionen måste därför vara client-side-skriptad.

Av en vänlig själ fick jag tips om att detta skulle kunna gå att fixa och nedan följande kod skulle lista innehållet i [Field1] och [Field2] i [Help]. (Tabellen i min databas heter "Help" och fälten heter "Field1" och "Field2")

 

<SCRIPT LANGUAGE="JavaScript">

<!--

var dbCon=new ActiveXObject("Adodb.connection")

dbCOn.Open("Provider=Microsoft.Jet.Oledb.4.0; Data Source="C:\Documents and Settings\pia\Mina dokument\HelpEO2000\db\HelpEO2000.mdb")

 

var enTabell=dbCon.Execute("Select * from [Help]")

while(!enTabell.EOF)

 

{document.write(enTabell("Field1").Value+""+enTabell("Field2").Value+"<br>")

enTabell.MoveNext()}

 

enTabell.Close()

dbCon.Close()

//-->

</SCRIPT>

 

Jag är dock nybörjare på Javascript, har bara programmerat i ASP och jag verkar inte få det att fungera. Jag har själv lagt in den absoluta sökvägen till min databas som heter "HelpEO2000.mdb". Det går kanske inte att göra så?... Och var ska jag lägga koden, i head-taggen? Det räcker väl med att jag lägger databaskopplingen där?

 

Tacksam för hjälp!

 

Mvh,

Pia

 

[bild bifogad 2005-05-03 14:21:59 av piam]

[bild bifogad 2005-05-03 14:22:30 av piam]

707623_thumb.jpg

Länk till kommentar
Dela på andra webbplatser

Hej!

 

Har kört det här mot min SQL Server och det fungerar alldeles utmärkt!

 

<html>

 

<head>

<title>Test client database connection</title>

<script language="javascript" type="text/javascript">

<!--

var adOpenForwardOnly = 0;

var adLockReadOnly = 1;

var con = new ActiveXObject("Adodb.Connection");

var rst = new ActiveXObject("Adodb.Recordset");

con.Open("PROVIDER=SQLOLEDB;SERVER=localhost;DATABASE=pubs;TRUSTED_CONNECTION=yes");

rst.Open("SELECT Top 3 * FROM Authors",con,adOpenForwardOnly,adLockReadOnly);

while(!rst.EOF) {

alert(rst.Fields.Item("au_lname").Value);

rst.MoveNext()}

rst.Close();

con.Close();

//-->

</script>

</head>

 

<body>

 

</body>

 

</html>

 

/PJ

 

Länk till kommentar
Dela på andra webbplatser

Hej, tack för svaret!

 

Vad gör det skriptet? Jag förstår att det söker igenom databasen och antagligen returnerar något värde, men inte exekt hur och vad den söker efter.. Är det en sökfunktion som den jag beskrev? Hur ska databasen vara uppbyggd för att ditt skript ska fungera? Behöver jag ha IIS installerat, eller måste jag göra någon annan inställning för funktionalitet?

 

Det var många frågor..! Jag är tacksam för all hjälp jag kan få.

 

Mvh,

Pia

 

 

Länk till kommentar
Dela på andra webbplatser

Hej igen!

 

Här har du ett förslag. Det förutsätter att du har IIS installerat och sparar filen med ändelsen .asp

 

<html>

 

<head>

<title>Test client database connection</title>

 

</head>

 

<body>

<form name="form" action="?" method="post">

Sök efter: <input type="text" name="SearchText" size="20">

<input type="submit" value="Sök" name="B1">

<p><span id="result"></span></p>

</form>

</body>

 

</html>

<script language="javascript" type="text/javascript">

<!--

<% If Request.Form("SearchText") <> "" Then %>

var sSearchString = '<%= Request.Form("SearchText") %>'

var adOpenForwardOnly = 0;

var adLockReadOnly = 1;

var con = new ActiveXObject("Adodb.Connection");

var rst = new ActiveXObject("Adodb.Recordset");

con.Open("PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=C:/Documents and Settings/pia/Mina dokument/HelpEO2000/db/HelpEO2000.mdb")

rst.Open("SELECT * FROM Help Where Field2 LIKE '%" + sSearchString + "%'",con,adOpenForwardOnly,adLockReadOnly);

while(!rst.EOF) {

result.innerHTML += (rst.Fields.Item(0).Value + " " + rst.Fields.Item(1).Value + "<br>")

rst.MoveNext()}

rst.Close();

con.Close();

<% End If %>

//-->

</script>

 

/PJ

 

Länk till kommentar
Dela på andra webbplatser

Oj, tack, det var schysst!

 

Men fungerar .asp när man inte kan lägga det på en webbserver? Användarna är ju inte uppkopplade mot Internet av säkerhetsskäl..

Räcker det att de har IIS installerat på deras dator?

 

/Pia

 

Länk till kommentar
Dela på andra webbplatser

Hej!

 

Jag förutsätter att användarna sitter i samma hus.

 

Du måste sätta upp en webbserver och skapa en webbplats där du lägger aspfilen för att få det att fungera. Säkerhetsmässigt är det inga problem ifall användarna anropar filen via intranätet. ex.vis http://servernamn/helpsite/help.asp

 

/PJ

 

Länk till kommentar
Dela på andra webbplatser

Ja..tyvvär är det det som är det stora problemet. De har inte tillgång till en webbserver, vet inte riktigt varför de måste ha det så. Så utan en webbserver är det inte så lätt att göra en Client-side sökfunktion? (Jag skrev kanske lite fel innan, skrev nog server-side.)

Finns det ingen uppenbar lösning, så tack i alla fall jättemycket för hjälpen!

 

Hälsningar,

Pia

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...