Avatar billede dkkarpen Nybegynder
30. januar 2000 - 20:38 Der er 4 kommentarer og
1 løsning

Søg i flere tabeller

Halløj

Jeg bruger et søgescript svarende til nedenstående. Men jeg vil gerne udvide det så det kan søge i 6 tabeller.

Tabellerne har ens udseende bortset fra første kolonne som er unik.

Tabellerne hedder:

"Beskrivelse" Unik kolonne: BeskrivelseID
"Grafik" Unik kolonne: GrafikID
"Loesninger" Unik kolonne: LoesningerID
"Nyheder" Unik kolonne: NyhederID
"Referencer" Unik kolonne: ReferencerID
"Udvikling" Unik kolonne: UdviklingID

Hvordan får jeg søgt i alle tabeller og trukket en reference ud så der kan linkes til resultatet?

Koden der skal tilpasses er:

<%
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("johansen.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

  strSearch = Trim(Request.Form("Search"))
 
  SQL = "SELECT * FROM [Search] WHERE [Search].[Overskrift] LIKE '%" & strSearch & "%' OR [Search].[Teaser] LIKE '%" & strSearch & "%' OR [Search].[Produktbeskrivelse] LIKE '%" & strSearch & "%' ORDER BY [Search].[Overskrift]"
 
      set Result = myConn.Execute(SQL)
 
  if request.form("search") = "" then
  response.write "<table width=300 border=0 cellpadding=4 cellspacing=0><tr><td><i><span class=subheader>Du har ikke skrevet et søgeord</i><br><hr width=180 noshade size=3 align=left color=#573957></SPAN></td></tr></table>"
 
  else
   
  if Result.Eof then
    Response.Write "<table width=300 border=0 cellpadding=4 cellspacing=0><tr><td><i><span class=subheader>Din søgning gav desværre intet resultat</i><br><hr width=228 noshade size=3 align=left color=#573957></SPAN></td></tr></table>"
  else
    Response.Write "<table width=300 border=0 cellpadding=4 cellspacing=0><tr><td><i><span class=subheader>Søgning på Johansen Design resulterede i:</i><br><hr width=240 noshade size=3 align=left color=#573957></SPAN></td></tr></table>"
    do while not Result.Eof

      Response.Write "<table border=""0"" width=""300"">"
      Response.Write "<tr><td width=""300"">" & "<span class=subheader>" & Result("Overskrift") & "</SPAN></td></tr>"
      Response.Write "<tr><td width=""300"">" & "<span class=text>" & Result("Teaser") & "</SPAN></td></tr>"
      Response.Write "<tr><td width=""300"">" & "<span class=text><a href=artikel.asp?ID=" & Result("ID") & ">" & "Læs side" & " <img src=images/link_arrow.jpg border=0>" & "</a>" & "</SPAN><br><br></td></tr></table>"
   
      Result.Movenext
     
  loop
  end if
    end if
%>

Kun en fuldstændig kode giver points.
Avatar billede dkkarpen Nybegynder
30. januar 2000 - 20:47 #1
Siden der linkes til ser forøvrigt således ud:

Set myConn = Server.CreateObject("ADODB.Connection")
    strSQL = "SELECT * FROM search WHERE (ID = " & Request.QueryString("id") & ")"
    myConn.Open tempConn
    Set rs = myConn.Execute(strSQL)
    If Not (rs.BOF Or rs.EOF) Then
        Response.Write "<table WIDTH=400 border=0 cellpadding=7 cellspacing=0>"
        Do While Not rs.EOF

Response.Write "<tr><td WIDTH=300><span class=overskrift>" & rs("Overskrift") & "</span>" & "<p></p>" & "<span class=text>" & Replace(rs("Produktbeskrivelse"),Chr(13),"<BR>") & "</span></td>"

Response.Write "<td WIDTH=100 valign=top><br>" & "<img src=" & rs("Info billede") & ">" & "</td></tr>"

Response.Write "<tr><td><P><span class=text><b><i>" &  rs("Pris") & "</i></b></p></td><td></td></tr>"

            rs.MoveNext
        Loop
        Response.Write "</table>"
    Else
        Response.Write "<p><font face=arial size=2>Der er endnu ikke nogle nyheder i databasen endnu</font></p>"
    End If
    myConn.Close
    Set myConn = Nothing
End Select
Avatar billede jhh Nybegynder
01. februar 2000 - 11:35 #2
Hmmmm, det smarteste ville jo nok være at have 1 tabel, og så tilføje en kolonne, fx. KATEGORI (indeholdende 'Beskrivelse', 'Grafik', osv.)

Nå, men løsningen med 6 tabeller er at lave din query sådan her:

SELECT * FROM tabel1
UNION ALL
SELECT * FROM tabel2
osv.

Du kan jo evt. lave en query i Access der gør det, og så bruge den i dit script.

/Jesper

Avatar billede dkkarpen Nybegynder
07. februar 2000 - 18:25 #3
Som sagt kun en fuldstændig kode udløser points. Desuden giver du ikke svaret på hvordan jeg jeg får et unikt ID for hver post med den query.
Avatar billede jhh Nybegynder
07. februar 2000 - 18:34 #4
Jeg er nu *ret* ligeglad med pointene. Jeg ser hellere at du udviser lidt selvstændig tankevirksomhed ;-)

Hvis du vil have et unikt ID, så kan du jo ave din SELECT noget i stil med:

SELECT kol1, kol2, "tabel1" FROM tabel1
UNION ALL
SELECT kol1, kol2, "tabel2" FROM tabel2
osv.

Så får du en kolonne der fx. indeholder navnet på tabellen og som du kan linke til.

/Jesper


Avatar billede dkkarpen Nybegynder
09. februar 2000 - 20:15 #5
Nå det var nu en skam...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester