Avatar billede melby Nybegynder
16. august 2004 - 19:04 Der er 10 kommentarer og
1 løsning

Søg i database

Jeg har følgende kode der viser 4 dropdown menuer som bruges til at søge i en Access database og kun vise det der matcher.

Jeg vil nu gerne lave om så boligtyperne bliver hentet fra databasen, (tabellen boligtyper) men hvordan?

Er der nogen der kan hjælpe?

<% mode = request("mode")

boligtype = request("boligtype")
region = request("region")
sovepladser = request("sovepladser")
vaerelser = request("vaerelser")

if mode = "search" then

    if boligtype <> "ALLE" then
        boligtypeSQL = "boligtype = '" & boligtype & "' and "
        whereSQL = true
    end if

    if region <> "ALLE" then
        regionSQL = "region = '" & region & "' and "
        whereSQL = true
    end if

    if sovepladser <> "ALLE" then
        sovepladserSQL = "sovepladser = '" & sovepladser & "' and "
        whereSQL = true
    end if

    if vaerelser <> "ALLE" then
        vaerelserSQL = "vaerelser = '" & vaerelser & "' and "
        whereSQL = true
    end if

    strSQL = "SELECT * FROM boliger"
    if whereSQL then strSQL = strSQL & " WHERE "
    strSQL = strSQL & boligtypeSQL & regionSQL & sovepladserSQL & vaerelserSQL

    if right(strSQL,4) = "and " then strSQL = left(strSQL,len(strSQL)-5)

    strSQL = strSQL & " ORDER BY by"

end if %>

<form method="POST" action="default.asp?page=soegbolig&mode=search">
  <table border="0" width="100%" cellspacing="0" cellpadding="5">
    <tr>
      <td width="16%">Boligtype:</td>
      <td width="84%"><select size="1" name="boligtype" class="boxInput">
          <option value="ALLE">ALLE</option>
          <option <% if boligtype = "Sommerhus" then %>selected<% end if %>>Sommerhus</option>
          <option <% if boligtype = "Lejlighed" then %>selected<% end if %>>Lejlighed</option>
          <option <% if boligtype = "Båd" then %>selected<% end if %>>Båd</option>
          <option <% if boligtype = "Campingvogn" then %>selected<% end if %>>Campingvogn</option>
        </select></td>
    </tr>
    <tr>
      <td width="16%">Region:</td>
      <td width="84%"><select size="1" name="region" class="boxInput">
          <option value="ALLE">ALLE</option>
          <option <% if region = "Nord Jylland" then %>selected<% end if %>>Nord Jylland</option>
          <option <% if region = "Midt Jylland" then %>selected<% end if %>>Midt Jylland</option>
          <option <% if region = "Sønder Jylland" then %>selected<% end if %>>Sønder Jylland</option>
          <option <% if region = "Fyn" then %>selected<% end if %>>Fyn</option>
          <option <% if region = "Nord Sjælland" then %>selected<% end if %>>Nord Sjælland</option>
          <option <% if region = "Syd Sjælland" then %>selected<% end if %>>Syd Sjælland</option>
          <option <% if region = "Lolland/Falster" then %>selected<% end if %>>Lolland/Falster</option>
          <option <% if region = "Bornholm" then %>selected<% end if %>>Bornholm</option>
        </select></td>
    </tr>
    <tr>
      <td width="16%">Sovepladser:</td>
      <td width="84%"><select size="1" name="sovepladser" class="boxInput">
          <option value="ALLE">ALLE</option>
          <option <% if sovepladser = "1" then %>selected<% end if %>>1</option>
          <option <% if sovepladser = "2" then %>selected<% end if %>>2</option>
          <option <% if sovepladser = "3" then %>selected<% end if %>>3</option>
          <option <% if sovepladser = "4" then %>selected<% end if %>>4</option>
          <option <% if sovepladser = "5" then %>selected<% end if %>>5</option>
          <option <% if sovepladser = "6" then %>selected<% end if %>>6</option>
          <option <% if sovepladser = "7" then %>selected<% end if %>>7</option>
          <option <% if sovepladser = "8" then %>selected<% end if %>>8</option>
          <option <% if sovepladser = "9" then %>selected<% end if %>>9</option>
          <option <% if sovepladser = "10" then %>selected<% end if %>>10</option>
          <option <% if sovepladser = "11" then %>selected<% end if %>>11</option>
          <option <% if sovepladser = "12" then %>selected<% end if %>>12</option>
          <option <% if sovepladser = "Flere end 12" then %>selected<% end if %>>Flere end 12</option>
        </select></td>
    </tr>
    <tr>
      <td width="16%">Værelser:</td>
      <td width="84%"><select size="1" name="vaerelser" class="boxInput">
          <option value="ALLE">ALLE</option>
          <option <% if vaerelser = "1-5" then %>selected<% end if %>>1-5</option>
          <option <% if vaerelser = "6 eller der over" then %>selected<% end if %>>6 eller der over</option>
        </select></td>
    </tr>
  </table>
  <p><input type="submit" value="SØG" name="B1" class="boxSubmit"></p>
</form>

<% if mode = "search" then %>

<table width="100%" cellspacing="0" cellpadding="5">
  <tr>
    <td width="80%" style="border-bottom:solid 1px #CCCCCC"><%=rs("postnr")%> - <%=rs("by")%><br><br>
      <%=rs("sovepladser")%> sovepladser<br>
      <p><A HREF="default.asp?page=visbolig&ID=<%=rs("ID")%>" style="color:#0000FF">Læs mere...</A></p></td>
      <td width="20%" align="center" style="border-bottom:solid 1px #CCCCCC">
<% Set fso = CreateObject("Scripting.FileSystemObject")
path = Server.MapPath("/data/images/" & rs("ID") & "-1.jpg")
if fso.FileExists(path) then %><A HREF="default.asp?page=visbolig&ID=<%=rs("ID")%>">
<img src="/data/images/<%=rs("ID")%>-1.jpg" alt="" width="140" height="100" border="0"></A>
<% else %>
intet billede
<% end if %>
</td>
  </tr>

<% rs.MoveNext
loop
rs.Close
Set rs = Nothing %>
</table>

<% end if %>
Avatar billede oskar Nybegynder
16. august 2004 - 19:45 #1
Her er  lidt kode som jeg fandt for nogleår siden, rettet ind til mp.mdb og forespørgslen alfalokaler:

'All rights reserved - Ebberup.dk 2001 - please leave the copyright note here
'and you can use this script as freeware
    dim antal   
antal = 0
'Open connection
        set ani = Server.CreateObject("ADODB.Recordset")
        'Modify and use this connection if your database is in your database directory
        'ani.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=D:\your database directory\items.mdb"
        ani.Open "Alfalokaler", "DBQ=" & Server.Mappath("mp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"

Do While not ani.EOF
    antal = antal + 1
    ani.MoveNext
    Loop
ani.Close
set ani = Nothing
Avatar billede eagleeye Praktikant
17. august 2004 - 08:47 #2
Jeg er ikke helt med, tænker du på select skal laves ud fra en tabel i databasen?

      <td width="84%"><select size="1" name="boligtype" class="boxInput">
          <option value="ALLE">ALLE</option>
          <option <% if boligtype = "Sommerhus" then %>selected<% end if %>>Sommerhus</option>
          <option <% if boligtype = "Lejlighed" then %>selected<% end if %>>Lejlighed</option>
          <option <% if boligtype = "Båd" then %>selected<% end if %>>Båd</option>
          <option <% if boligtype = "Campingvogn" then %>selected<% end if %>>Campingvogn</option>
        </select></td>



eller sakl SQL rettes til at hente navnet på bolig typen fra en anden tabel?
Avatar billede melby Nybegynder
17. august 2004 - 08:57 #3
eagleeye>> Select skal laves ud fra tabellen boligtyper.
Avatar billede melby Nybegynder
17. august 2004 - 13:45 #4
Jeg har selv prøvet med denne opsætning, og det virker også ok. i dropdown menuen, men der kommer ikke noget resultat når jeg søger?

<td width="84%"><select size="1" name="boligtype" class="boxInput">
  <option value="ALLE">ALLE</option>
  <% strSQL = "SELECT * FROM boligtyper ORDER BY boligtype"
  Set rs = Server.CreateObject("ADODB.RecordSet")
  rs.Open strSQL, strDSN, 1, 1
  Do While Not rs.EOF %>

  <option value="<%=rs("boligtype")%>" <% if boligtype = rs("boligtype") then %>selected<% end if %>><%=rs("boligtype")%>

  <% rs.MoveNext
  loop
  rs.Close
  Set rs = Nothing %>
</select></td>
Avatar billede oskar Nybegynder
17. august 2004 - 14:14 #5
Prøv med dette:


<TABLE WIDTH="300" BORDER="0" ALIGN="center">
<TR VALIGN="top" ALIGN="center">
    <TD ALIGN="center">
Vælg boligtype:</font><BR><BR></TD></tr><tr ALIGN="center">
    <TD ALIGN="center">
<FORM ACTION="hvorskavihen.asp" METHOD="POST" NAME="Valg">
<select name="Boligtype">
    <%     Do While not ani.EOF %>
    <option value="<%=ani("Lokale")%>"> <%=ani("Lokale")%></option>
    <% ani.MoveNext
    Loop
    ani.Close
    set ani = Nothing
    %>
  </select></TD></tr><tr ALIGN="left">
    <TD ALIGN="center"><BR><INPUT TYPE="submit" VALUE="OK" NAME="Videre">
</TD></TR></TABLE></FORM>
Avatar billede oskar Nybegynder
17. august 2004 - 14:16 #6
Ups mangler lige

set ani = Server.CreateObject("ADODB.Recordset")
ani.Open "Boligtyper", "DBQ=" & Server.Mappath("dindatabase.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"

eller lignende foran.
Avatar billede oskar Nybegynder
17. august 2004 - 14:17 #7
PS ordet lokale skiftes ud med boligtype
Avatar billede oskar Nybegynder
17. august 2004 - 14:38 #8
Det var vist noget værre rod og så manglede der noget. Her har jeg klippet i en fil jeg selv bruger til samme formål og det virker. Du skal blot ændre i linierne 8, 17 og 37. De to førte er navnet på din databasefil og den sidste er form action.

'All rights reserved - Ebberup.dk 2001 - please leave the copyright note here
'and you can use this script as freeware
    dim antal   
    antal = 0
'Open connection
        set ani = Server.CreateObject("ADODB.Recordset")
        'Modify and use this connection if your database is in your database directory
          ani.Open "boligtyper", "DBQ=" & Server.Mappath("mp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"

Do While not ani.EOF
    antal = antal + 1
    ani.MoveNext
    Loop
ani.Close
set ani = Nothing
set ani = Server.CreateObject("ADODB.Recordset")
ani.Open "boligtyper", "DBQ=" & Server.Mappath("mp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
%>
<HEAD>
<meta name="Generator" content="Stone's WebWriter 4" />
<SCRIPT TYPE="text/javascript">
function focus()
{
Valg.boligtype.focus()
}
</SCRIPT>
<!-- Minus AutoDato -->
<LINK REL="stylesheet" HREF="kauv.css" TYPE="text/css">
</HEAD>
<BODY onload="focus()">
<BR><BR><BR>
<TABLE WIDTH="300" BORDER="0" ALIGN="center">
<TR VALIGN="top" ALIGN="center">
    <TD ALIGN="center">
<font face="Verdana, Arial, Helvetica, sans-serif" size="2">Vælg boligtype:</font><BR><BR></TD></tr><tr ALIGN="center">
    <TD ALIGN="center">
<FORM ACTION="Hvorskalvihendu.asp" METHOD="POST" NAME="Valg">
<select name="boligtype">
    <%     Do While not ani.EOF %>
<% if ani("boligtype") = "Alle" then %>
    <option selected value="<%=ani("boligtype")%>"> <%=ani("boligtype")%></option>
<% huske = ani("boligtype")
else %>
    <option value="<%=ani("boligtype")%>"> <%=ani("boligtype")%></option>
<% End if %>
    <% ani.MoveNext
    Loop
    ani.Close
    set ani = Nothing
    %>
  </select></TD></tr><tr ALIGN="left">
    <TD ALIGN="center"><BR><INPUT TYPE="submit" VALUE="OK" NAME="Videre">
</TD></TR></TABLE></FORM>
</body></html>
Avatar billede melby Nybegynder
17. august 2004 - 15:20 #9
oskar>>
Det ser ud til at virke, men hvad er denne del? - og er den nødvendig?

'All rights reserved - Ebberup.dk 2001 - please leave the copyright note here
'and you can use this script as freeware
    dim antal   
    antal = 0
'Open connection
        set ani = Server.CreateObject("ADODB.Recordset")
        'Modify and use this connection if your database is in your database directory
          ani.Open "boligtyper", "DBQ=" & Server.Mappath("mp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"

Do While not ani.EOF
    antal = antal + 1
    ani.MoveNext
    Loop
ani.Close
Avatar billede oskar Nybegynder
17. august 2004 - 16:22 #10
Den tæller hvor mange poster der er i feltet, men hvorfor aner jeg ikke. Jeg har ikke prøvet at fjerne den. Som du kan je er det ikke mig der har lavet koden, jeg har bare sakset den.

Linien <% huske = ani("boligtype") kan du osse slette.
Avatar billede melby Nybegynder
17. august 2004 - 16:36 #11
Tak for hjælpen...
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