Avatar billede bootlab Nybegynder
13. december 2000 - 21:56 Der er 13 kommentarer og
1 løsning

Ond Cirkel

Jeg har i en tabel, 93 katagorier.
de er indekseret i tal,
Jeg kan uden problemer trække fra de forskellige katagorier ved at lave en :
------------------------------------
If \"1\" = Request.QueryString(\"Cat\")
------------------------------------
Meeeeennnnn
Det jeg vil undgå er at lave 93 af dem
i mit script...
og istedet bruge en variable...
så samme if statement gælder for alle 93
katagorier

Hvordan gør jeg det?
Avatar billede stigc Nybegynder
13. december 2000 - 22:01 #1
har de alle sammen forskellige navne?

temp = 1

fetnavne = Array(\"kat\",\"hund\",\"hest\"...... osv. )

Request.QueryString(feltnavne(1))
Avatar billede stigc Nybegynder
13. december 2000 - 22:02 #2
der skulle selvfølgelige have sået:

Request.QueryString(feltnavne(temp))

Jeg tror dog ikke at det er dit problem, men så må du forklare bedre!

Avatar billede bootlab Nybegynder
13. december 2000 - 22:15 #3
Jeg har denne IF statment i mit script:

------------------------------------------------


    If \"1\" = Request.QueryString(\"Cat\") then
    Sql = \"SELECT DISTINCTROW Kategorier.KategoriNavn, Produkter.Produktnavn, Produkter.Produktbeskrivelse, Produkter.PrisPrEnhed FROM Kategorier INNER JOIN Produkter ON Kategorier.Kat_ID = Produkter.Kat_ID WHERE (((Kategorier.Kat_ID)=1)) ORDER BY Produkter.Produktnavn;\"
    Set Record =  Rs.Execute(Sql)
      response.write \"<html>\"
    response.write \"<head>\"
    response.write \"<title>\" & Record(\"KategoriNavn\") & \"</title>\"
    response.write \"</head>\"
    response.write \"<body bgcolor=\'#0099cc\'>\"
    response.write \"<table border=\'0\' align=\'center\' width=\'550\' cellpadding=\'1\' cellspacing=\'1\'>\"
    response.write \"<tr><td bgcolor=\'#33ccff\' colspan=\'2\'>\" & bigfont & Tname & \" / \" & \"Kategori : \" & Record(\"KategoriNavn\") & \"</font>\" & \"</td></tr>\"
    response.write \"<tr><td align=\'left\' height=\'3\' colspan=\'2\'></td></tr>\"
    Do While Not Record.EOF
    response.write \"<tr><td width=\'450\' align=\'left\' bgcolor=\'#99CCCC\'><b>\" & font & Record(\"Produktnavn\") & \"</b></td>\"
    response.write \"<td width=\'100\' align=\'right\' bgcolor=\'#00ccff\'>\" & font & Record(\"PrisPrEnhed\") & \" ddk\" & \"</td></tr>\"
    response.write \"<tr><td bgcolor=\'#ffffff\' align=\'left\' colspan=\'2\'>\" & font & Record(\"Produktbeskrivelse\") & \"</td></tr>\"
    Record.MoveNext
    Loop
    response.write \"</table>\"
    Record.Close
    RS.Close
  end if


------------------------------------------------

Det jeg vil er at undgå at den smøre, skal stå der 93 gange. en for hver gang jeg Requester
efter en katagori i tabellen...

Eksemple:


    If \"1\" = Request.QueryString(\"Cat\") then
    Sql = \"SELECT DISTINCTROW Kategorier.KategoriNavn, Produkter.Produktnavn, Produkter.Produktbeskrivelse, Produkter.PrisPrEnhed FROM Kategorier INNER JOIN Produkter ON Kategorier.Kat_ID = Produkter.Kat_ID WHERE (((Kategorier.Kat_ID)=1)) ORDER BY Produkter.Produktnavn;\"

----------------------


    If \"2\" = Request.QueryString(\"Cat\") then
    Sql = \"SELECT DISTINCTROW Kategorier.KategoriNavn, Produkter.Produktnavn, Produkter.Produktbeskrivelse, Produkter.PrisPrEnhed FROM Kategorier INNER JOIN Produkter ON Kategorier.Kat_ID = Produkter.Kat_ID WHERE (((Kategorier.Kat_ID)=2)) ORDER BY Produkter.Produktnavn;\"

-------------------


    If \"3\" = Request.QueryString(\"Cat\") then
    Sql = \"SELECT DISTINCTROW Kategorier.KategoriNavn, Produkter.Produktnavn, Produkter.Produktbeskrivelse, Produkter.PrisPrEnhed FROM Kategorier INNER JOIN Produkter ON Kategorier.Kat_ID = Produkter.Kat_ID WHERE (((Kategorier.Kat_ID)=3)) ORDER BY Produkter.Produktnavn;\"

osv osv osv
Avatar billede stigc Nybegynder
13. december 2000 - 22:20 #4
Havd med en løkke:


For LoopVariable = 1 To 93




Sql = \"SELECT DISTINCTROW Kategorier.KategoriNavn, Produkter.Produktnavn, Produkter.Produktbeskrivelse, Produkter.PrisPrEnhed FROM Kategorier INNER JOIN Produkter ON Kategorier.Kat_ID = Produkter.Kat_ID WHERE (((Kategorier.Kat_ID)=\" + LoopVariable +\")) ORDER BY Produkter.Produktnavn;\"
    Set Record =  Rs.Execute(Sql)
      response.write \"<html>\"
    response.write \"<head>\"
    response.write \"<title>\" & Record(\"KategoriNavn\") & \"</title>\"
    response.write \"</head>\"
    response.write \"<body bgcolor=\'#0099cc\'>\"
    response.write \"<table border=\'0\' align=\'center\' width=\'550\' cellpadding=\'1\' cellspacing=\'1\'>\"
    response.write \"<tr><td bgcolor=\'#33ccff\' colspan=\'2\'>\" & bigfont & Tname & \" / \" & \"Kategori : \" & Record(\"KategoriNavn\") & \"</font>\" & \"</td></tr>\"
    response.write \"<tr><td align=\'left\' height=\'3\' colspan=\'2\'></td></tr>\"
    Do While Not Record.EOF
    response.write \"<tr><td width=\'450\' align=\'left\' bgcolor=\'#99CCCC\'><b>\" & font & Record(\"Produktnavn\") & \"</b></td>\"
    response.write \"<td width=\'100\' align=\'right\' bgcolor=\'#00ccff\'>\" & font & Record(\"PrisPrEnhed\") & \" ddk\" & \"</td></tr>\"
    response.write \"<tr><td bgcolor=\'#ffffff\' align=\'left\' colspan=\'2\'>\" & font & Record(\"Produktbeskrivelse\") & \"</td></tr>\"
    Record.MoveNext
    Loop
    response.write \"</table>\"
    Record.Close
    RS.Close
  end if


Next

Avatar billede bootlab Nybegynder
13. december 2000 - 22:23 #5
Hvor skal :
For LoopVariable = 1 To 93
så ligge ?

Og før var min url: produkter.asp?Cat=1

hvad skal den så hedde?
Avatar billede stigc Nybegynder
13. december 2000 - 22:26 #6
loopet skal ligge der hvor jeg har lagt det!
og du kan bare kalde siden med \"produkter.asp\"

Jeg går udfra at alle 92 skal printes på en side!
Har jeg ret?
Avatar billede lthrane Nybegynder
13. december 2000 - 22:29 #7
Kan du ikke komme afsted med at droppe din IF sætning helt ?

Du skriver at du får givet din Cat via din url - så er det vel bare at anvende denne værdi i dit SQL statement:

Sql = \"SELECT DISTINCTROW Kategorier.KategoriNavn, Produkter.Produktnavn, Produkter.Produktbeskrivelse, Produkter.PrisPrEnhed FROM Kategorier INNER JOIN Produkter ON Kategorier.Kat_ID = Produkter.Kat_ID WHERE (((Kategorier.Kat_ID)=Request.QueryString(\'Cat\')) ORDER BY Produkter.Produktnavn;\"

lthrane
Avatar billede stigc Nybegynder
13. december 2000 - 22:31 #8
hov den kode jeg har givet dig skal du fjerne

  \"end if\"

lige efter

\"RS.Close\"
Avatar billede bootlab Nybegynder
13. december 2000 - 22:35 #9
Alle katagorier skal ikke hentes på engang, men kun når jeg spørger efter dem ... med en url :

produkter.asp?Cat=1-93

tallet i urlen \"?Cat=\" skal så tolkes, sådan at det nummer det nu har, henter det tilsvarende nr.
katagori i tabellen :

If \"1-93\" = Request.QueryString(\"Cat\")
    ^^^^                        ^^^

Avatar billede stigc Nybegynder
13. december 2000 - 22:37 #10
det gør det jo endnu nemmere:

temp = Request.QueryString(\"Cat\")
   
Sql = \"SELECT DISTINCTROW Kategorier.KategoriNavn, Produkter.Produktnavn, Produkter.Produktbeskrivelse, Produkter.PrisPrEnhed FROM Kategorier INNER JOIN Produkter ON Kategorier.Kat_ID = Produkter.Kat_ID WHERE (((Kategorier.Kat_ID)=\" + temp +\")) ORDER BY Produkter.Produktnavn;\"
    Set Record =  Rs.Execute(Sql)
      response.write \"<html>\"
    response.write \"<head>\"
    response.write \"<title>\" & Record(\"KategoriNavn\") & \"</title>\"
    response.write \"</head>\"
    response.write \"<body bgcolor=\'#0099cc\'>\"
    response.write \"<table border=\'0\' align=\'center\' width=\'550\' cellpadding=\'1\' cellspacing=\'1\'>\"
    response.write \"<tr><td bgcolor=\'#33ccff\' colspan=\'2\'>\" & bigfont & Tname & \" / \" & \"Kategori : \" & Record(\"KategoriNavn\") & \"</font>\" & \"</td></tr>\"
    response.write \"<tr><td align=\'left\' height=\'3\' colspan=\'2\'></td></tr>\"
    Do While Not Record.EOF
    response.write \"<tr><td width=\'450\' align=\'left\' bgcolor=\'#99CCCC\'><b>\" & font & Record(\"Produktnavn\") & \"</b></td>\"
    response.write \"<td width=\'100\' align=\'right\' bgcolor=\'#00ccff\'>\" & font & Record(\"PrisPrEnhed\") & \" ddk\" & \"</td></tr>\"
    response.write \"<tr><td bgcolor=\'#ffffff\' align=\'left\' colspan=\'2\'>\" & font & Record(\"Produktbeskrivelse\") & \"</td></tr>\"
    Record.MoveNext
    Loop
    response.write \"</table>\"
    Record.Close
    RS.Close
 
Avatar billede lthrane Nybegynder
13. december 2000 - 22:37 #11
Og den kode jeg har givet dig er helt gal !!

Der skulle stå noget i stil med dette i stedet :

Sql = \"SELECT DISTINCTROW Kategorier.KategoriNavn, Produkter.Produktnavn, Produkter.Produktbeskrivelse, Produkter.PrisPrEnhed FROM Kategorier INNER JOIN Produkter ON Kategorier.Kat_ID = Produkter.Kat_ID WHERE Kategorier.Kat_ID= \"
sql = sql & Request.QueryString(\"Cat\")
sql = sql & \" ORDER BY Produkter.Produktnavn;\"


lthrane
Avatar billede lthrane Nybegynder
13. december 2000 - 22:38 #12
>>bootlab
Den løsningjeg forsøger ;-)  at skitsere skulle hente netop den CatID der findes i URL\'en !!!!
Avatar billede bootlab Nybegynder
13. december 2000 - 22:56 #13
lthrane> Den sad lige i øjet :)
        Tusind tak for hjælpen...

Stigc>  Jeg prøvede også lige med dit sidste eksemple... Jeg fik det ikke til at virke...
Avatar billede lthrane Nybegynder
13. december 2000 - 23:08 #14
Velbekomme. Jeg ville i øvrigt (hvis det var min kode) skrive sætningen således:

sql = \"SELECT DISTINCT k.KategoriNavn, p.Produktnavn, p.Produktbeskrivelse, p.PrisPrEnhed
FROM Kategorier k, Produkter p WHERE k.Kat_ID = p.Kat_ID AND k.Kat_ID = \"
sql = sql & Request.QueryString(\"Cat\")

sql = sql & \" ORDER BY p.Produktnavn;\"

- altså bruge muligheden for at anvende alias for tabelnavnene for at få (efter min mening) mere overskuelig statement.
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