Avatar billede djsteiner Nybegynder
08. august 2011 - 09:00 Der er 25 kommentarer og
1 løsning

Større end eller lig med og Mindre end eller lig med

Hej

Jeg er ved at finde en løsning på hvordan jeg for lavet en funktion som skal bruges til at finde feks. en person der er mellem 150- 165cm osv. alle disse mål ligger i en database.

Man skal så søge efter disse kriterier i en formular hcor som er sat op sådan:

min 150 max 165 cm osv.


Jeg tænkte noget i denne stil

If > = 150 and <= 165 then =

her vil jeg så gerne have udskrevet alle de personer som er 150 til 165 cm


Men her er spørgsmålet så hvordan man gør det ?

Håber spørgsmålet giver mening!
Avatar billede claes57 Ekspert
08. august 2011 - 10:14 #1
formularen har fx dette stykke

vælg højde <select name="hjde">
  <option selected value="0">alle</option>
  <option value="1">under 150</option>
  <option value="2">150-165</option>
  <option value="3">165-175</option>
  <option value="4">over 175</option>
</select> cm
<br />
vælg vægt <select name="vgt">
  <option selected value="0">alle</option>
  <option value="1">under 45</option>
  <option value="2">45-50</option>
  <option value="3">50-55</option>
  <option value="4">over 55</option>
</select> kg
<br />
vælg køn <select name="sex">
  <option selected value="0">kvinde</option>
  <option value="1">mand</option>
</select>
<br />
<input type="submit" value=" søg ">


og så skal asp'en jo oprette en korrekt sql-sætning, det er fx noget som

<%
hjde=Request.form("hjde")
vgt=Request.form("vgt")
sex=Request.form("sex")
sql="select * from tabel where "
select case hjde
case 1: sql=sql & " height < 150"
case 2: sql=sql & " height between 150 and 165"
case 3: sql=sql & " height between 165 and 175"
case 4: sql=sql & " height > 175"
case else
end select

if hjde>0 and vgt>0 then sql=sql & " and"

select case alder
case 1: sql=sql & " weight < 45"
case 2: sql=sql & " weight between 45 and 50"
case 3: sql=sql & " weight between 50 and 55"
case 4: sql=sql & " weight > 55"
case else
end select

if hjde>0 or vgt>0 then sql=sql & " and"
if sex=0 then
  sql=sql & " sex = 'kvinde'"
else
  sql=sql & " sex = 'mand'"
end if

sql=sql & " order by name, birthday"
' kald databasen

%>
Avatar billede claes57 Ekspert
08. august 2011 - 10:15 #2
ret lige
select case alder
til
select case vgt
Avatar billede djsteiner Nybegynder
08. august 2011 - 20:15 #3
Hej

Jeg ville gerne lave det det i sådan her så man som bruger har mulighed for at vægle alle højder fra 160 til 210


<form method="post" action="search1.asp?mycase=seach" >
    Højde ml. ca.: <br />
    <select name="heigh_min" style="border:1px solid #000000;">
      <option selected="selected" value="">Min højde</option>
      <option value="1">170</option>
      <option value="2">171</option>
      <option value="3">172</option>
      <option value="4">173</option>
     
    </select> &nbsp;-
   
    <select name="heigh_max" style="border:1px solid #000000;">
      <option selected="selected" value="">Max højde</option>
      <option value="1">200</option>
      <option value="2">199</option>
      <option value="3">198</option>
      <option value="4">197</option>
     
    </select>
    </form>
Avatar billede Slettet bruger
08. august 2011 - 20:42 #4
Har du tænkt på at:
if (a >= 150 and a <= 165) then
Er præcis det samme som:
if (a > 149 and a < 166) then

Og at, fremfor kodede værdier:
<option value="3">172</option>
Vil det være meget lettere at arbejde med:
<option value="172">172</option>

Det er åbenbart et dating site for de MEGET kræsne...
Mon ikke det var nok med nogle "bredere" kategorier:
Lille (32-160), Middel (160-180), Høj (180-279)
Avatar billede djsteiner Nybegynder
08. august 2011 - 20:56 #5
Jeg er helt enig men at dele det mere op!

Men da jeg laver det for en anden som gerne vi have det sådan. jeg har dog lige sendt ham en mail om dette.


men hvordan skulle hele if koden så se ud ?

if (a > 149 and a < 166) then  ?
Avatar billede Slettet bruger
08. august 2011 - 21:13 #6
Jeg koder ikke ASP så syntaksen...

Med lidt sakseri:

sql="select * from tabel where"
& " height > " & Request.form("heigh_min")-1
& " height < " & Request.form("heigh_max")+1

Men der skal nok liige noget "parseInt()-agtigt" ind et sted..
Avatar billede claes57 Ekspert
09. august 2011 - 09:35 #7
højden i form er fx
vælg højdeinterval<br>
fra&#160;<select name="hjdmin">
  <option selected value="0">alle</option>
  <option value="150">150</option>
  <option value="151">151</option>
  <option value="152">152</option>
  <option value="153">153</option>
  <option value="154">154</option>
  <option value="155">155</option>
'  ... lav selv resten - dette er kun eksempel
</select>
&#160;til&#160;<select name="hjdmax">
  <option selected value="250">alle</option>
  <option value="150">150</option>
  <option value="151">151</option>
  <option value="152">152</option>
  <option value="153">153</option>
  <option value="154">154</option>
  <option value="155">155</option>
'  ... lav selv resten - dette er kun eksempel
</select>

og så skal du stykke sql'en samme med fx
hjdmin=Request.form("hjdmin")
hjdmax=Request.form("hjdmax")
vgt=Request.form("vgt")
sex=Request.form("sex")
sql="select * from tabel where "

sql=sql & " height >= " & hjdmin & " and height <= " & hjdmax

select case vgt
case 1: sql=sql & " and weight < 45"
case 2: sql=sql & " and weight between 45 and 50"
case 3: sql=sql & " and weight between 50 and 55"
case 4: sql=sql & " and weight > 55"
case else
end select

if sex=0 then
  sql=sql & " and sex = 'kvinde'"
else
  sql=sql & " and sex = 'mand'"
end if

sql=sql & " order by name, birthday"
' kald databasen

----------------
dvs - hvis bruger ikke vælger højde, så søges på alle mellem 0-250cm (det er en let måde at kode det på)
Avatar billede djsteiner Nybegynder
09. august 2011 - 09:59 #8
Jeg kom lige i tanke om et problem når man, som ny bruger skal indtaste sine oplysniger om hvilket aldre og højde man har og de så sendes til databasen kan din løsning så bruges her claes57 ?


Skal sql'en skruges sammen på en bestemt måde ?

her tænker jeg med sql between ?

og skal den komme før eller efter Request.form ?


og så skal du stykke sql'en samme med fx 
hjdmin=Request.form("hjdmin")
hjdmax=Request.form("hjdmax")
vgt=Request.form("vgt")
sex=Request.form("sex")
sql="select * from tabel where "





Jeg må have kigget på de når jeg kommer hjem fra arbejde :)
Avatar billede claes57 Ekspert
09. august 2011 - 11:22 #9
egne data skal indtastes via en anden formular og dermed anden asp-kode. Det eksempel jeg har lavet er til en søgeformular.

Til oprettelse af bruger skal der være højde, fødselsdag (ikke alder - evt kun årstal og fx stjernetegn), vægt, køn og så brugernavn, adgangskode, mailadresse, lokalitet (fx by/egn/postnummer) - og meget vigtigt en validering af data før de sendes til databasen.
Det er jo lidt upraktisk med en date fra Skagen, hvis du selv sidder i Gedser, og ikke har transportmulighed.
Avatar billede djsteiner Nybegynder
09. august 2011 - 18:06 #10
Hvor i koden udskriver man resultatet fra sql'en ?

eller hvor kan jeg indsætte det i koden ?
Avatar billede djsteiner Nybegynder
09. august 2011 - 18:10 #11
jeg har lavet det sådan her indtil vider:


<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #include file="conn1.asp" -->
<form method="post" action="untitled.asp">

højden i form er fx
vælg højdeinterval<br>
fra&#160;<select name="hjdmin">
  <option selected value="0">alle</option>
  <option value="150">150</option>
  <option value="151">151</option>
  <option value="152">152</option>
  <option value="153">153</option>
  <option value="154">154</option>
  <option value="155">155</option>

</select>
&#160;til&#160;<select name="hjdmax">
  <option selected value="250">alle</option>
  <option value="150">150</option>
  <option value="151">151</option>
  <option value="152">152</option>
  <option value="153">153</option>
  <option value="154">154</option>
  <option value="155">155</option><br /><br />
<input type="submit" name="ok" value="Søg" />
</select>
</form>
<%

hjdmin=Request.form("hjdmin")
hjdmax=Request.form("hjdmax")
vgt=Request.form("vgt")
sex=Request.form("sex")
sql = "SELECT * FROM bruger WHERE"

sql=sql & " height >= " & hjdmin & " and height <= " & hjdmax

select case vgt
case 1: sql=sql & " and weight < 45"
case 2: sql=sql & " and weight between 45 and 50"
case 3: sql=sql & " and weight between 50 and 55"
case 4: sql=sql & " and weight > 55"
case else
end select

if sex=0 then
  sql=sql & " and sex = 'kvinde'"
else
  sql=sql & " and sex = 'mand'"
end if

sql=sql & " order by name, birthday"
' Opretter og returnerer et commandobjekt som er forbundet til din connection
function createCommand(sql)
  dim cmd
  set cmd = Server.CreateObject("ADODB.Command")
  set cmd.ActiveConnection = Conn
cmd.CommandType = 1
cmd.CommandText = sql
set createCommand = cmd
end function
%>
Avatar billede claes57 Ekspert
09. august 2011 - 18:48 #12
reelt - prøver du selv - og har du noget asp kode før - eller skal jeg lave det hele?
1) du laver en formular i ren html-kode (ingen asp) med dee felter du vil have. I koden omkring formularen har du så en
<form method="POST" action="soeg.asp">
- her er din formular
</form>

det vil så kalde soeg.asp, og der slå du op i databasen (via fx noget af min asp-kode + lidt mere), og udskriver resultatet i fx tabelform.

jeg har ingen idé om, hvordan din database er opbygget, og vil ikke lave et komplet datingsite for dig - så kom med noget kode, du selv har lavet.
Hvis du har taget/lånt det fra noget fri kode, så kom med link til det.
Avatar billede djsteiner Nybegynder
09. august 2011 - 19:55 #13
sådan her skal formularen se ud med nogle tilføjelser:

<form method="post" action="seach.asp">
 
  Køn:
  <select name="sex" style="border:1px solid #000000;">
      <option selected value="0">Begge køn</option>
      <option value="1">Herre</option>
      <option value="2">Dame</option>
</select> <br /><br />
     
Alder år ml.: <select name="Age_min">
  <option selected value="0">alle</option>
  <option value="50">50</option>
  <option value="51">51</option>
  <option value="52">52</option>
  <option value="53">53</option>
  <option value="54">54</option>
  <option value="55">55</option>

</select>  -
 
 
    <select name="Age_max">
  <option selected value="0">alle</option>
  <option value="55">55</option>
  <option value="54">54</option>
  <option value="53">53</option>
  <option value="52">52</option>
  <option value="51">51</option>
  <option value="50">50</option>
    </select> 
    <br  /> <br  />
     
   
    Højde ml. ca.: <select name="height_min">
  <option selected value="0">alle</option>
  <option value="140">140</option>
  <option value="141">141</option>
  <option value="142">142</option>
  <option value="143">143</option>
  <option value="144">144</option>
  <option value="145">145</option>

</select>  -
 
 
    <select name="height_max">
  <option selected value="0">alle</option>
  <option value="145">145</option>
  <option value="144">144</option>
  <option value="143">143</option>
  <option value="142">142</option>
  <option value="141">141</option>
  <option value="140">140</option>
    </select> 
    <br  /> <br  />
   
   
   
 
  Landsdel:
    <select name="skat" style="border:1px solid #000000;">
    <option selected value="0">alle</option>
      <option value="1">Jylland</option>
      <option value="2">Fyn</option>
      <option value="3">Lolland</option>
      <option value="4">Sjælland</option>
     
    </select> <br  /><br /> 
Hårfarve:
   
    <select name="farve" style="border:1px solid #000000;">
      <option selected value="0">alle</option>
      <option value="1">Brun</option>
      <option value="2">Rød</option>
      <option value="3">Blond</option>
      <option value="4">Mørk</option>
    </select><br /> <br />   
   
   
Foto:
   
    <select name="foto" style="border:1px solid #000000;">
  <option selected value="0">alle</option>
      <option value="1">Kun brugere med eget foto</option>
     
    </select>
       
<br /> <br />
    <input type="submit" name="ok" value="Søg" />
  </form>
Avatar billede djsteiner Nybegynder
09. august 2011 - 19:57 #14
Jeg har faktisk lavet noget/ fået lavet kode hvor jeg mangler den del der indeholder aldre og højde:
Avatar billede djsteiner Nybegynder
09. august 2011 - 19:58 #15
Her er den første del af den kode:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<!-- #include file="conn.asp" -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="language" content="da-dk" />
  <title>Søg</title>
 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
<script type="text/javascript" src="JS/quickpager.jquery.js"></script>
<script type="text/javascript">
/* <![CDATA[ */

$(document).ready(function() {
    $(".pageme tbody").quickPager( {
        pageSize: 5,
        currentPage: 1,
        holder: ".pager"
    });
});

/* ]]> */
</script>
<style type="text/css">


p {
    background: #e5e5e5;
    margin-bottom:1px;
    margin-top:0px;
}

ul.paging li {
    padding: 10px;
    background: #83bd63;
    font-family: georgia;
    font-size: 24px;
    color: #fff;
    line-height: 1;
    width: 180px;
    margin-bottom: 1px;
}

ul.pageNav li{
    display:block;
    floaT: left;
    padding: 3px;
    font-family: georgia;
}

ul.pageNav li a{
    color: #333;
    text-decoration: none;
}

li.currentPage {
    background: red;
        background: #83bd63;   
}

ul.pageNav li.currentPage a {
    color: #fff;   
}

table.pageme {
    border-collapse: collapse;
    border: 1px solid #ccc;


table.pageme td {
    border-collapse: collapse;
    border: 1px solid #ccc;
}     

table, div {
    display:block;
    clear: both
}


</style>


  <form method="post" action="search1.asp?mycase=seach">
    <input type="hidden" name="search"><br>
    <select name="skat" style="border:1px solid #000000;">
      <option selected="selected" value="">V&aelig;lg Landsdel</option>
      <option value="1">Jylland</option>
      <option value="2">Fyn</option>
      <option value="3">Lolland</option>
      <option value="4">Sjælland</option>
     
    </select>&nbsp; &nbsp; &nbsp; &nbsp; 
   
    <select name="farve" style="border:1px solid #000000;">
      <option selected="selected" value="">V&aelig;lg H&aring;rfarve</option>
      <option value="1">Brun</option>
      <option value="2">Rød</option>
      <option value="3">Blond</option>
      <option value="4">Mørk</option>
    </select><br /> <br />       

    <input type="submit" name="ok" value="Søg" />
  </form>
  <br /><br />
 
 
  <b>Søg på brugernavn  </b>
 
  <table cellpadding="0" cellspacing="0" width="153">
                <tr> <form action="search1.asp?mycase=searchres" method="post">
                <td width="110"><input type="text" name="strsearch" style="width:110px; border:1px #000 solid;" /></td>
                <td width="43"><input type="submit" value="Søg" style="width:43px; height:22px;"/></td>
           
                </form>
                </tr>
                </table>
 
 
<%
' Tilføjer et element i parameterlisten (som er et array)
sub addParam(byref arr, byval val)
  redim preserve arr(ubound(arr) + 1)
  arr(ubound(arr)) = val
end sub

' Opretter og returnerer et commandobjekt som er forbundet til din connection
function createCommand(sql)
  dim cmd
  set cmd = Server.CreateObject("ADODB.Command")
  set cmd.ActiveConnection = Conn
cmd.CommandType = 1
cmd.CommandText = sql
set createCommand = cmd
end function
%>

    <br /><br />
           
               
                   
                        <!-- #include file="case.asp" -->


</body>
</html>
Avatar billede djsteiner Nybegynder
09. august 2011 - 20:00 #16
her har du den fil der hedder "case"

<%
mycase = request.QueryString("mycase")
SELECT CASE mycase

case"seach"


'if request.servervariables("request_method") = "POST" then
  dim searchSpecified
  dim searchCriteriaFields
  dim fieldInfo
  dim formFieldName
  dim dbFieldName
  dim fld
  dim sql
  dim params
  dim search

  search = Request.Form("search") & ""

  ' Benyttes til at indikere om der er specificeret nogle parametre
  searchSpecified = false

  ' Benyttes til at beskrive hvilke felter i formularen der skal
  ' betragtes som kriteriefelter og hvilke felter de skal oversættes
  ' til i databasen. Disse oplysninger er adskilt med pipe (|).
  ' Kommer der flere kriterier i formularen, tilføjes disse blot
  ' i nedenstående liste på samme måde som de to eksisterende...
  searchCriteriaFields = array("farve|haarid","skat|gruppeid")

  params = array()

  sql = "SELECT * FROM bruger WHERE "

  if search <> "" then
    sql = sql & "brugernavn LIKE '%'+?+'%' "
    call addParam(params, search)
    searchSpecified = true
  end if
 
 
  ' Gennemløb formfelter i det postede og opbyg SQL-sætningen
  ' på grundlag af det, med formfeltets navn, matchede databasefelt.
  ' NB: Alle valgte kriterier skal matche for at brugeren medtages!
  for each fld in searchCriteriaFields
    fieldInfo = split(fld,"|")
    formFieldName = fieldInfo(0)
    dbFieldName = fieldInfo(1)
    if Request.Form(formFieldName) & "" <> "" then
      ' Hvis der er mindst én parameter i forvejen, skal der
      ' indsættes AND mellem denne og den forrige parameter
      ' eller skal searchSpecified sættes til at indikere at der nu
      ' er angivet mindst én parameter...
      if searchSpecified then
        sql = sql & "AND "
      else
        searchSpecified = true
      end if

      sql = sql & dbFieldName & "=? "
      call addParam(params, Request.Form(formFieldName))
    end if
  next

  ' Hvis der var mindst et kriterium specificeret, så akal
  ' opslaget i databasen udføres, eller ikke...
  if searchSpecified then
    'Response.Write "SQL:<br>" & sql & "<br>"
    'Response.Write "Params:<br>" & join(params,",") & "<br>"
    set cmd = createCommand(sql)
    set rs = cmd.Execute(, params)%>
   
    Resultater
   
   
              <div class="pager"></div>
<table  border="0" width="400" cellpadding="3" cellspacing="3" class="pageme">
    <tbody>
        <tr>
   
    <td bgcolor="#CCCCCC"><span class="Overskrift">Brugernavn</span></td>
   
       
</tr>
   
   

  <% if not rs.eof then
      do while not rs.eof%>
     
   
     
<tr>
        <td  bgcolor="#CCCCCC"><span class="brodtekst"><a href="search1.asp?mycase=showseachs&id=<%=rs("ID")%>"><%=rs("brugernavn")%></a></span></td><br /><br />
</tr>

        <%rs.movenext
      loop%>
   

    </tbody>
</table>
<div class="pager"></div>
     
    <%else
      Response.Write "Der var ingen brugere som matchede dine kriterier"
    end if

    rs.Close
  else
    Response.Write "Der var ikke specificeret nogle kriterier"
  end if

%>





<%


case"showseachs"

id = request.QueryString("id")




sql = "SELECT * FROM bruger,haarfarve,grupper WHERE bruger.haarid=haarfarve.hid and bruger.gruppeid=grupper.gid and  ID="&id
set rs = Conn.Execute(sql)

%>

<a href='java script:history.back()'>Tilbage</a>

<br /> <br />

<%do until rs.eof %>

                <b>Brugernavn:</b>  <br /><%=rs("brugernavn")%><br /><br />
               
                <b>Hårfarve:</b> <br /><%=rs("farve")%><br /><br />
                <b>Landsdel:</b><br /><%=rs("gruppenavn")%><br /><br />
                <b>Profiltekst:</b><br /> <%=rs("bruger_tekst")%><br /><br />
        <%rs.movenext
    loop %>   
<a href='java script:history.back()'>Tilbage</a>




<%

Case "searchres"

strSearch = replace(request.form("strsearch"),"'","''")
If strSearch = "Søg" then
Response.Redirect "search.asp"
Elseif strSearch = "" then
Response.Write("Du har ikke indtastet noget i søg feltet")

else

'%"&soeg&"%'
sql = "SELECT * FROM bruger WHERE brugernavn LIKE '%"&strSearch&"%'"
set rs = Conn.Execute(sql)

pid = Request.QueryString("pid")

Response.Write("<h3>Resultater &nbsp; </h3>")


If rs.bof then

Response.Write("Søgningen gav intet resultat")

end if
   

%>   
   
    <div class="pager"></div>
<table border="0" width="400" cellpadding="3" cellspacing="3" class="pageme">
    <tbody>
        <tr>
   
    <td bgcolor="#CCCCCC"><span class="Overskrift">Brugernavn</span></td>
   
       
</tr>   
<%do until rs.eof%>

<tr>
        <td  bgcolor="#CCCCCC"><span class="brodtekst"><a href="search1.asp?mycase=showseachs&id=<%=rs("ID")%>"><%=rs ("brugernavn")%></a></span></td>
   

</tr>

<%
rs.movenext
loop
%>


    </tbody>
</table>
<div class="pager"></div>


<%
end if


%>





<%



end select

%>
Avatar billede djsteiner Nybegynder
09. august 2011 - 20:30 #17
I  databasen er der en tabel der hedder bruger

den er opdelt i mange koloner men dem som vi skal bruge her hedder:

ID

kon

fdag

heigh

lansdel

foto
Avatar billede djsteiner Nybegynder
09. august 2011 - 20:43 #18
glemete lige at skrive hvad hvad fdag er

Men giver måske lidt sig selv.

fdag = fødselsdato

eks:

fdag
1969-03-31
Avatar billede claes57 Ekspert
09. august 2011 - 20:44 #19
det er noget rodet kode - jeg ser på, om jeg har tid i løbet af de nærmeste dage til at lave noget.

feltet hårfarve - hvor ligger det i tabellen?
ligger kon, lansdel (tjek stavemåde), foto som tal, eller hvordan?
Avatar billede djsteiner Nybegynder
09. august 2011 - 22:44 #20
Sådan her staves de:

Id

kon

fdag

heigh

landsdel

haarfarve

foto
Avatar billede djsteiner Nybegynder
16. august 2011 - 18:39 #21
Hej claes57  vil lige høre hvordan det går ?
Avatar billede claes57 Ekspert
16. august 2011 - 18:59 #22
jeg har haft lidt travlt - skulle kunne lave noget i morgen.
Avatar billede djsteiner Nybegynder
16. august 2011 - 23:05 #23
Det lyder super godt! :)

Arbejder du med programmering professionelt ?
Avatar billede claes57 Ekspert
17. august 2011 - 10:23 #24
har gjort - stoppede omkring da asp blev til .net
Avatar billede djsteiner Nybegynder
07. september 2011 - 08:34 #25
Hej claes57 vil lige høre hvordan det går ?
Avatar billede djsteiner Nybegynder
10. oktober 2011 - 15:01 #26
Lukke tid
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