Just nu i M3-nätverket
Jump to content

Server-side sökfunktion?


piam

Recommended Posts

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

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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

 

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...