Tråden för smarta ASP tips/tricks

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • hopparn
    Medlem
    • 2001-11-07
    • 1043

    #31
    [citat]vid response.redirect så skickas en felmeddelande till besökarens webbläsare med adressen till sidan som skall laddas, ytterligare en onödig omväg via webbläsaren. server.transfer flyttar exekveringen direkt i servern. (Fungerar med >iis4?) [/citat]

    Nej, det funkar bara på 3.0 ASP

    Bidrag... vet inte om detta är ngt att hja, men en bra sökfunktion, som man kan modifiera som man vill...
    [kod]
    SUB Build_search_std
    'bygg upp IN
    if request("exakt") ="yes" then session("exakt") = "yes" else session("exakt") = ""
    if request("no_upphavd") ="yes" then session("no_upphavd") = "yes" else session("no_upphavd") = ""
    if request("ISO")= "1" then
    search_type = search_type + "1,"
    session("ISO") = "1"
    else
    session("ISO")=""
    end if
    'if request("IEC")= "2" then
    'search_type= search_type + "2,"
    'session("IEC") = "2"
    'else
    'session("IEC")=""
    'End If
    if request("SS")= "3" then
    search_type= search_type + "3,"
    session("SS") = "3"
    else
    session("SS")=""
    End If
    'if request("DIN")= "4" then
    'search_type = search_type + "4,"
    'session("din") = "4"
    'else
    'session("din")=""
    'End If
    search_type=Left(search_type,Len(search_type)-1)
    'Bygg upp startsträng
    IF session("no_upphavd") = "" then
    strSQL_std = "select typ,dokid,pdfnamn,storlek,description,title,for_title,pages, edition,ann_date,pub_date,price from vy_Katalog_online_total where typ in("& search_type &") "
    else
    strSQL_std = "select typ,dokid,pdfnamn,storlek,description,title,for_title,pages, edition,ann_date,pub_date,price from vy_Katalog_online_total where typ in("& search_type &") and ann_date is null "
    end if


    '-------------------------------ordningen räknad från XXXXXX--------------
    '1=ISO
    '2=IEC
    '3=SS
    '4=DIN


    IF request("exakt")="yes" then

    if len(request("description")) >=1 then tmpSQL_std=tmpSQL_std+" and description ='"&(request("description"))&"' "
    if len(request("number")) >=1 then tmpSQL_std=tmpSQL_std+" and number like '%"&(request("number"))&"%' "
    if len(request("title")) >=1 then tmpSQL_std=tmpSQL_std+" and title ='"&(request("title"))&"' "
    if len(request("for_title")) >=1 then tmpSQL_std=tmpSQL_std+" and for_title ='"&(request("for_title"))&"' "
    if len(request("dokid")) >=1 then tmpSQL_std=tmpSQL_std+" and dokid = "&(request("dokid"))&""


    else
    if len(request("description")) >=1 then tmpSQL_std=tmpSQL_std+" and Description like '%"&(request("description"))&"%' "
    if len(request("number")) >=1 then tmpSQL_std=tmpSQL_std+" and number like '%"&(request("number"))&"%' "
    if len(request("title")) >=1 then tmpSQL_std=tmpSQL_std+" and title like '%"&(request("title"))&"%' "
    if len(request("for_title")) >=1 then tmpSQL_std=tmpSQL_std+" and for_title like '%"&(request("for_title"))&"%' "
    if len(request("dokid")) >=1 then tmpSQL_std=tmpSQL_std+" and dokid = "&(request("dokid"))&""
    end if

    session("tmpSQL_std") = tmpSQL_std
    session("strSQL_std") = strSQL_std

    end sub

    [/kod]
    rättat till lite i koden ovan, därav editeringen...
    ------------------
    Rammstein rules - Bestrafe mich

    [Redigerat av hopparn den 01 dec 2001]

    [Redigerat av hopparn den 01 dec 2001]
    På stenåldern betydde vegetarian "värdelös jägare"!

    Comment

    • hopparn
      Medlem
      • 2001-11-07
      • 1043

      #32
      har et litet tips till samt en fråga:

      tips först
      när jag skall skicka saker till samma sid så skriver jag ALLTID följande
      t ex [kod]<form method="post" action="<%= Request.ServerVariables("SCRIPT_NAME") %>"
      [/kod]

      då kan man alltid flytta runt på sidan mellan t ex utvecklingsmiljön och den skarpa miljön och det gör inget om man döper om filen, jag tycker detta är smidigt

      Frågan så: Jag har tidigare varit väldigt konsekvent då jag frågat efter saker, dvs varit noga med om det är en request.querystring eller en request.form... fick höra av en konsult nyligen att det var smidigare att bara köra request("fråga_efter") då man då kunde komma in från båda håll på sidan (om man nu skulle behöva köra en URL-sträng till samma sida...) Detta funkar bra, men min fråga är, blir det en fördröjning? anses det som korrekt kod? kan jag förlora på det?

      tacksam för era kloka ögon..

      Hoppis

      ------------------
      Rammstein rules - Bestrafe mich
      På stenåldern betydde vegetarian "värdelös jägare"!

      Comment

      • @nders
        Moderator
        Marsvin
        • 2000-06-30
        • 26914

        #33
        [citat]Detta funkar bra, men min fråga är, blir det en fördröjning? anses det som korrekt kod? kan jag förlora på det?[/citat]

        Tja, det är klart att det finns tillfällen man utelämnar .form eller .querystring. Men, eftersom det finns fler collections än så, så innebär det, att när du utelämnar så kan servern bli tvungen att leta igenom form collection, querystring collection, servervariables och även cookies.

        Det är en viss prestandaaspekt i det hela, men det tillhör även god programmerarsed att ange var värden skall hämtas ifrån.

        Mvh,

        ------------------
        Don't panic!
        @aviddevguy

        Comment

        • Erik Juhlin
          Medlem
          • 2000-05-27
          • 7625

          #34
          Request("..") är bra att använda i de fallen då ett värde både kan komma från en formulärspostning och en QueryString. Annars bör man ju köra med Request.Form/QueryString.

          ------------------
          /Erik
          www.juhlin.nu /sk8files/ /mp2d/
          /Erik
          "My love for you is like a truck, BERSERKER"
          "Would you like some making f**k, BERSERKER"

          Comment

          • hopparn
            Medlem
            • 2001-11-07
            • 1043

            #35
            det är ju lixåm det at de flesta sidor jag har är tvåvägiga, jag hade gjort en hel del IF satser (if request.form("") = "" then
            IF request.que..... etc) Dessa är ju borta nu och det känns skönt.

            Däremot skall jag följa era råd och använda mig av hela uttrycket på de sidor som det går att göra på =)

            ------------------
            Rammstein rules - Mein Herz brennt
            På stenåldern betydde vegetarian "värdelös jägare"!

            Comment

            • Erik Juhlin
              Medlem
              • 2000-05-27
              • 7625

              #36
              Jag tycker det är helt rätt att göra så hopparn. Att hålla på med If-satser är jobbigt och troligen inte mer prestanda-sparande.

              Ett nytt tips från mig till de som använder SQL Server är att använda Views. Mycket smidigt om man har stora krångliga SQL-strängar.

              ------------------
              /Erik
              www.juhlin.nu /sk8files/ /mp2d/
              /Erik
              "My love for you is like a truck, BERSERKER"
              "Would you like some making f**k, BERSERKER"

              Comment

              • Toonster
                Medlem
                • 2000-02-14
                • 1546

                #37
                Erik Jhulin-> Jag vet inte alls vad du menar, server.transfer fungerar exakt som response.redirekt, förutom att klienten inte är inblandad. Och har inget som helst med databaser att göra...

                Kan det vara server.execute du tänker på? där man kan exekvera en annan .asp i en .asp sida

                Hopparn -> server.transfer finns med from. IIS5 (server funktionerna har inget med ASP tolken att göra, utan finns i webbservern IIS)

                /T

                ------------------
                Jensen Ambassadör, mitt bästa köp! www.jensen.no



                [Redigerat av Toonster den 01 dec 2001]
                Jensen Ambassadör, mitt bästa köp! www.jensen.no

                Comment

                • Erik Juhlin
                  Medlem
                  • 2000-05-27
                  • 7625

                  #38
                  De fungerar inte likadant. Använder man Server.Transfer så är man kvar på samma sida utåt sett. Det är ju t.ex. därför man kan efter Server.Transfer använda samma QueryStrings som skickas till den första sidan.

                  Om man postar i ett formulär och på sidan som tar emot det gör Server.Transfer, då kommer man inte ifrån sidan som gör Server.Transer och om användaren då trycker på uppdatera så behandlas det som kommit i forumläret en gång till.
                  Vilket kan resultera i dubbelpostningar om man t.ex. skulle ha ett forum, gästbok eller liknande sak.

                  Sen en annan nackdel är att man inte kan skicka variabler med QueryString som vanligt. Visst kan man skriva variablen först på sidan och sen använda Server.Transfer. Men då tycker jag man går från den vanliga uppbyggnaden i det hela.

                  Server.Transfer är bra för vissa saker, men absolut ingen ersättare för Response.Redirect.

                  ------------------
                  /Erik
                  www.juhlin.nu /sk8files/ /mp2d/
                  /Erik
                  "My love for you is like a truck, BERSERKER"
                  "Would you like some making f**k, BERSERKER"

                  Comment

                  • Nickemannen
                    Moderator
                    • 2000-08-20
                    • 3524

                    #39
                    vet inte om detta finns med än på denna tråd men
                    det är rätt viktigt att kolla så att
                    strängen man lägger in i databasen inte innehåller osjysta tecken,

                    Function FixChars(sVar)
                    FixChars = Server.HTMLEncode(Replace(sVar,"'",""))
                    End Function

                    ------------------
                    "Brott kanske inte lönar sig, men det är kul"

                    Comment

                    • @nders
                      Moderator
                      Marsvin
                      • 2000-06-30
                      • 26914

                      #40
                      Jag skulle vilja göra en liten förbättring på Nickemannens lilla funktion.

                      Ersätt inte apostrof med tom sträng, utan med två apostrofer. Då gör du strängen SQL-säker, men du förändrar den inte på något sätt.

                      Enligt ersättningen i Nickemannens funktion tas alltså apostroferna bort, och försöker man stoppa in exempelvis namnet O'Connor, skrivs OConnor in i databasen.

                      Alltså:

                      [kod]Function FixChars(sVar)
                      FixChars = Server.HTMLEncode(Replace(sVar,"'","''"))
                      End Function[/kod]

                      Mvh,

                      ------------------
                      Don't panic!
                      @aviddevguy

                      Comment

                      • Erik Juhlin
                        Medlem
                        • 2000-05-27
                        • 7625

                        #41
                        Sen så bör man som jag sagt tidigare inte köra Server.HTMLEncode på något när man lägger in det i databasen.

                        ------------------
                        /Erik
                        www.juhlin.nu /sk8files/ /mp2d/
                        /Erik
                        "My love for you is like a truck, BERSERKER"
                        "Would you like some making f**k, BERSERKER"

                        Comment

                        • @nders
                          Moderator
                          Marsvin
                          • 2000-06-30
                          • 26914

                          #42
                          Korrekt.

                          ------------------
                          Don't panic!
                          @aviddevguy

                          Comment

                          • lazat
                            Medlem
                            • 2001-03-21
                            • 313

                            #43
                            dubbet borttagen

                            [Redigerat av lazat den 02 dec 2001]
                            Webbhotell, Domännamn, Servrar
                            http://www.wk.se

                            Comment

                            • mikul
                              Medlem
                              • 2001-08-18
                              • 810

                              #44
                              tänkte visa hur man infogar radbrytning efter x antal tecken...
                              [kod]
                              <%
                              Fubction br(str)
                              Dim antal, tecken, count
                              antal = 15 'antal tecken som raden skall vara.

                              for tecken = 1 to len(str)
                              count = count + 1
                              Response.Write Mid(str, tecken, 1)
                              If count > antal Then Response.Write "<BR>": count = 0
                              next
                              End Function

                              text = "på nästa rad visas hur du skriver ut en text med denna funktion."
                              Response.write br(text) 'text är en variabel som innehåller den text som visas ovanför.
                              %>
                              [/kod]
                              "jag skulle vilja påstå att han inte svimmade av egen kraft!"
                              "livet är fan ingenting för amatörer asså!"

                              Vad är det för fel på att vara lat? tänk om det blev krig och ingen kom dit.

                              Comment

                              • mozilla
                                Medlem
                                • 2001-07-17
                                • 1202

                                #45
                                fråga till Erik Juhlin(och er andra) du säger att man inte ska köra Server.HTMLEncode när man stoppar in i db utan när man tar ut? men tecken som &#0124; och '. Jag har hört att access inte gillar dem? måste man inte göra om dem innan då? eller?
                                Blogg om entreprenörskap och webbutveckling | Senaste inlägget: Använda VIM-kommandon i Visual Studio 2010

                                Comment

                                Working...