10. juli 2005 - 22:50Der er
34 kommentarer og 1 løsning
Vis poster fra-til ud fra felt i database
Hej Eksperter
Jeg skal vise nogle nyheder på mit website.
Det er lavet så man selv kan bestemme hvilke poster man vil se.
Eks. vis poster: Fra: 1 Til: 10 ... Eller vis alle...
Min kode: ------------------------------------------------------------------- If rs_news_config("all_news") = True Then do while not rs_news.EOF 'lister nyhederne response.write rs_news("Title") & "<br>" 'recordset lukkes rs_news.MoveNext Loop Else i = 1 do while not i < Cint(rs_news_config("News_From")) AND not i > Cint(rs_news_config("News_To")) OR not rs_news.EOF 'lister nyhederne response.write rs_news("Title") & "<br>" 'recordset lukkes i = i + 1 rs_news.MoveNext Loop End If rs_news.close -------------------------------------------------------------------
Jeg er ikke sikker på om det er bygget rigtig op, da jeg får en fejl efter at den har listet ee fire poster som der er i databasen..
Scriptet skal altså vise eks. 1-10 med mindre der er mindre end det, så skal den vise det antal der er..
1) Det er vist mere normalt at skrive følgende, da du ellers i hver løkke laver to ekstra overflødige beregninger do while i > Cint(rs_news_config("News_From")) AND i < Cint(rs_news_config("News_To")) OR not rs_news.EOF
2) Du siger at du har valgt intervallet 1-10 men at der kun er 4 poster, så er det klart at det fejler, for den fanger din logiske sætning ikke 5 > 1 AND 5 < 10 OR not rs_news.EOF, Den giver true Du skal med andre ord rette dit logiske udtryk til do while i > Cint(rs_news_config("News_From")) AND i < Cint(rs_news_config("News_To")) AND not rs_news.EOF
<% 'Åbner konfigurationstabellen [News_Config] Set rs_news_config = Server.CreateObject("ADODB.RecordSet") rs_news_config.open "Select * From [News_Config] where Paragraph_Id = " & Session("Paragraph_Id") , Conn 'Nyheder Set rs_news = Server.CreateObject("ADODB.RecordSet") rs_news.open "Select * From [news] where Active = " & rs_news_config("Show_Active") & " AND Site_Id = " & Site_Id & " ORDER BY Id " & rs_news_config("News_Order") , Conn If rs_news_config("all_news") = True Then do while not rs_news.EOF 'lister nyhederne response.write rs_news("Title") & "<br>" 'recordset lukkes rs_news.MoveNext Loop Else i = 1 do while i > Cint(rs_news_config("News_From")) AND i < Cint(rs_news_config("News_To")) AND not rs_news.EOF 'lister nyhederne response.write rs_news("Title") & "<br>" 'recordset lukkes i = i + 1 rs_news.MoveNext Loop End If rs_news.close rs_news_config.Close %>
kan du ikke skrive det ud så kan vi se om den tæller som forventet -- altså oven over denne her linje do while i > Cint(rs_news_config("News_From")) AND i < Cint(rs_news_config("News_To")) AND not rs_news.EOF lave en linje med response.write "do while i > "&Cint(rs_news_config("News_From"))&" AND i < "& Cint(rs_news_config("News_To"))&" AND not rs_news.EOF"
hmm så burde den også skrive rs_news("Title") ud med mindre den er tom hvis du gør sådan her kommer der så bare tomt ud? -- do while i > Cint(rs_news_config("News_From")) AND i < Cint(rs_news_config("News_To")) AND not rs_news.EOF 'lister nyhederne response.write "TITEL:"&rs_news("Title") & "<br>"
jeg forstår ikke helt hvorfor du vil opbygge noget custom paging når der langt hen ad vejen findes functioner i asp/recordset'et der gør det langt lettere?
ok Hvis den før skrev "do while i > 1 AND i < 4 AND not rs_news.EOF" ud men den ikke går ind i din do while så evaluerer det jo falsk af en og anden grund
Keysersoze: Det er da ikke paging det her? er det??
Busschou - nu virker det vist...
do while not i < Cint(rs_news_config("News_From")) AND not i > Cint(rs_news_config("News_To")) AND not rs_news.EOF 'lister nyhederne response.write "TITEL:"& i & rs_news("Title") & "<br>"
Skriver så ud: TITEL:1Nyhedstitel TITEL:2Titel på nyhed TITEL:3Titel2 TITEL:4TestTitel
Det er jo klart burde jeg have set :o/ Når i=1 så fejler i>1 og dermed fejler det hele, i skal være enten det ene eller det andet og så skal der være noget at vælge imellem do while (i > Cint(rs_news_config("News_From")) Or i < Cint(rs_news_config("News_To")))AND not rs_news.EOF
hmm tja måske min fejl igen der, er ikke vant til at se brugen af not i den sammenhæng not i < 1 må være det samme som i >= 1 not i > 4 må være det samme som i <= 4 og så virker det nok også med AND do while i >= Cint(rs_news_config("News_From")) AND i <= Cint(rs_news_config("News_To")) AND not rs_news.EOF
Så jeg beklager hvis forvirringen er total, også fra min side af Jeg vil stå ved at do while not i < Cint(rs_news_config("News_From")) AND not i > Cint(rs_news_config("News_To")) AND not rs_news.EOF er det samme som do while i >= Cint(rs_news_config("News_From")) AND i <= Cint(rs_news_config("News_To")) AND not rs_news.EOF --- Hvilken du benytter er op til dig, men rent principielt vil jeg foreslå den nederste
i = 1 do while i >= Cint(rs_news_config("News_From")) AND i <= Cint(rs_news_config("News_To")) AND not rs_news.EOF 'lister nyhederne response.write "TITEL:"& i & rs_news("Title") & "<br>"
det er ikke paging på den måde at brugeren bladrer frem og tilbage i dine poster - men (vil jeg mene) på den måde at der på forhånd vælges hvorfra og hvor mange poster vedkommende vil se.
bruhnsweb vi tænker forkert Betingelsen skal ikke være i while løkken Sådan her vil virke --- do while not rs_news.EOF if i >= Cint(rs_news_config("News_From")) AND i <= Cint(rs_news_config("News_To")) then 'lister nyhederne response.write "TITEL:"& i & rs_news("Title") & "<br>" end if i = i + 1 rs_news.MoveNext Loop
om keysersoze´s forslag med brug af de specielle funktionaliteter som asp/access har, ved jeg ikke noget om, for det har jeg aldrig selv brugt Men det er klart at du på denne måde er nød til at løbe alle records igennem hver gang Du kan evt gøre den en smule hurtigere ved at tilføje endnu en betingelse --- do while not rs_news.EOF if i >= Cint(rs_news_config("News_From")) AND i <= Cint(rs_news_config("News_To")) then 'lister nyhederne response.write "TITEL:"& i & rs_news("Title") & "<br>" end if i = i + 1 if i > Cint(rs_news_config("News_To")) then exit do end if rs_news.MoveNext Loop --- Så den hopper ud når du ved at der ikke skal skrives mere ud Desværre kan man i access ikke benytte sql funktionen Limit som ellers kune have hevet dem specifikt ud
okey jeg kender kun til access og mysql. Måske du i mssql kan benytte Limit ? For det vil altså uanset hvad lette det hele Så kan du selecte dem direkte i din sql statement ved blot at tilføje Limit 'fra' 'antal' Altså hvis du vil have fra 3 til 4 så Limit 2 2 , (da der tælles fra 0) eller hvis du ønsker fra 1 til 10 så Limit 0 10 osv
ok virker den ikke? igen vil jeg mene at If rs_news_config("all_news") = True Then er dobbelt konfekt og at If rs_news_config("all_news") Then burde gør det
Men hvordan ser din kode ud nu så, og hvad sker der med all_news siger du ? :o)
Hvordan ville du bygge; et tjek om all_news var tjekket af (for derefter at vise ALLE nyheder)??
i = 1 do while not rs_news.EOF if i >= Cint(rs_news_config("News_From")) AND i <= Cint(rs_news_config("News_To")) then 'lister nyhederne response.write "TITEL:"& i & rs_news("Title") & "<br>" end if i = i + 1 if i > Cint(rs_news_config("News_To")) then exit do end if rs_news.MoveNext Loop
Tja enten udenfor eller indeni din do while udenfor gør at man ikke laver uoverflødig mange tjek indenfor gør at man ikke skal skrive så meget :o) --- nem løsning --- i = 1 do while not rs_news.EOF if (i >= Cint(rs_news_config("News_From")) AND i <= Cint(rs_news_config("News_To"))) OR ("all_news = tjekket") then 'lister nyhederne response.write "TITEL:"& i & rs_news("Title") & "<br>" end if i = i + 1 if i > Cint(rs_news_config("News_To")) then exit do end if rs_news.MoveNext Loop
If rs_news_config("all_news") Then do while not rs_news.EOF response.write rs_news("Title") & "<br>" rs_news.MoveNext Loop Else i = 1 do while not rs_news.EOF if i >= Cint(rs_news_config("News_From")) AND i <= Cint(rs_news_config("News_To")) then response.write "TITEL:"& i & rs_news("Title") & "<br>" end if i = i + 1 if i > Cint(rs_news_config("News_To")) then exit do end if rs_news.MoveNext Loop end if
det var så lidt :o)... det tog jo sin tid desværre må vist hellere snart vågne ;o)
Synes godt om
Ny brugerNybegynder
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.