Permalänk
Medlem

Vad kan det här bero på? (ASP)

När jag kör följande i ASP ..

IF Request.Form("kor_sokning") <> "" THEN ' < - submitknappen IF Request.QueryString("lang") = "sv" THEN Dim sokord sokord = Request.Form("sokord") ELSEIF Request.QueryString("lang") = "en" THEN Dim sokord sokord = Request.Form("sokord") END IF END IF

... och sidan laddas (alltså INNAN det första villkoret har uppfyllts) så får jag följande fel:
Kompileringsfel i Microsoft VBScript fel '800a0411'
Namnet har omdefinierats.
Dim sokord

Kan någon please säga, att det här var märkligt och att jag inte är sjuk i huvet? Jag begriper INTE varför detta händer. Scriptet är rent, dvs inga andra beroenden är aktiva alls. URLen innehåller "lang=sv" eller "lang=en" och submitknappen har namnet "kor_sokning" med värdet "sok".
Vad kan det här bero på?

Visa signatur

Jag använder datorn för att göra jobb bättre, inte för att jobba med att göra datorn bättre

Permalänk
Medlem

Du behöver bara dimensionera sokord en gång, gör det utanför if-böset.

Visa signatur

.::Man kan inte bromsa sig ur en uppförsbacke::.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av zEvo
Du behöver bara dimensionera sokord en gång, gör det utanför if-böset.

Jo, det är ju sant.
Saken är den att skriptet känner av att där finns två variabler med samma namn INNAN det ska läsa av variablerna. Det ska ju köra satsen först EFTER man tryckt på submitten:

IF Request.Form("kor_sokning") <> "" THEN
Utför skiten

I så fall får jag flytta typ fnörton miljarder variabel-dimensioneringar ovanför if-satsen
Är det verkligen så jäkligt att skriptet typ "tar sig en titt" redan innan submit-värdet är sant?

Visa signatur

Jag använder datorn för att göra jobb bättre, inte för att jobba med att göra datorn bättre

Permalänk

Varför har du en if-sats som ändå genererar samma resultat på båda alternativen?
Om du ändå prompt ska deklarera variablerna så gör det högst upp i funktionen eller på sidan
Sen lär du använda redim och du ska deklarera två gånger..

Visa signatur
Permalänk
Medlem
Citat:

Ursprungligen inskrivet av d-zon_net
Varför har du en if-sats som ändå genererar samma resultat på båda alternativen?

Tanken var att bedöma om sidan ska visas på engelska eller svenska (sida.asp?lang=sv eller ?lang=en) och utifrån det avgöra vilken av det två IF satserna som ska genomlöpas:

IF Request.Form("kor_sokning") <> "" THEN ' < - submitknappen IF Request.QueryString("lang") = "sv" THEN Dim sokord sokord = Request.Form("sokord") Fixa recordset m.m. SQL = "SELECT * FROM Artiklar WHERE Artiklar_Brödtext_SVENSKA LIKE %sokord%" Response.Write(Artikel_Brödtext_SVENSKA) ELSEIF Request.QueryString("lang") = "en" THEN Dim sokord sokord = Request.Form("sokord") Fixa recordset m.m. SQL = "SELECT * FROM Artiklar WHERE Artiklar_Brödtext_ENGELSKA LIKE %sokord%" Response.Write(Artikel_Brödtext_ENGELSKA) END IF END IF

Tanken var att ingen av IF-satserna ska genomlöpas innan första villkoret är uppfyllt: Att submitknappen tryckts ned. Men det verkar som det gör det i vilket fall ...

Visa signatur

Jag använder datorn för att göra jobb bättre, inte för att jobba med att göra datorn bättre

Permalänk
Medlem

Jag brukar deklarera variablarna längst upp i dokumentet. Under Option Explicit t.ex.

Permalänk

ok, ja det borde jag ju listat ut
Men kan du inte deklarera alla variabler direkt under

IF Request.Form("kor_sokning") <> "" THEN ' < - submitknappen

och sen skita i att deklarera om dom?

Visa signatur
Permalänk
Medlem

Ni hade rätt. Jag flyttade alla dim deklareringarna till ovanför IFsatsen och fick döpa om flera av dom och undvika dubletter. Det funkar nu.
Vilket jävla jobb det var. Sweclockers grabbs har ofta rätt, men pust asså ...

För övrigt tycker jag det är rätt kass att delar av script som avskilts med villkor, berörs trots att villkoret inte uppfylls. Vet inte om det är ASP som sunkar eller vad de är .. vet inte om PHP funkar såhär med ...

Visa signatur

Jag använder datorn för att göra jobb bättre, inte för att jobba med att göra datorn bättre

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av TomKe

För övrigt tycker jag det är rätt kass att delar av script som avskilts med villkor, berörs trots att villkoret inte uppfylls. Vet inte om det är ASP som sunkar eller vad de är .. vet inte om PHP funkar såhär med ...

Det finns två variantar att använda, antingen If-statement eller Select-Case-statement.
Vad är skillnaden?
Vid användning av If tittar server igenom alla statements som du har, den kan således inte hoppa utan den måste läsa igenom allt även om den inte använder det. Därför gnäller den över att den finner samma variabel flera gånger.
Med select-case så läser den först om informationen matchar "caset" annars tittar den vad nästa case "erbjuder".
Om man gör ASP sidor med include så är det oftast bäst att använda Select-case då man slipper gnäll om en sida som skall inkluderas inte existerar.
I stora system finns det säkerligen skillnader i hastighet mellan Select-case och if.

Edit: blev lite php i det hela, heter ju select-case i asp...

Visa signatur

.::Man kan inte bromsa sig ur en uppförsbacke::.