Avatar billede larsen45 Juniormester
11. august 2004 - 17:12 Der er 29 kommentarer og
1 løsning

If sætning der vælger poster fra databasen hurtigt muligt tak

Hejsa
jeg har det problem at jeg gerne vil udtrække
de 2 nyeste poster ved siden af hinanden i en tabel og ikke nede under hinanden som man plejer.

Det er for jeg gerne vil vise 2 nyheder ved siden af hinanden fra access databasen.

Men hvordan gør jeg det med If sætninger og med loop
Jeg skal have følgende med i hver nyhed af felter:
Dato
Forfatter
Overskrift
Nyheden
Billede
Hjemmeside

Billede og Hjemmeside skal jeg kun have vist frem hvis der nået i felterne i access databasen.

Håber min forklaring er til at forstå. ellers så bare spørg løs.

ps. jeg har dette her til at starte med:
-----------------------------------------
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN

strSQL = "SELECT TOP 2 * FROM tabel WHERE Skjules = False ORDER BY Dato DESC"
Set rs = Conn.Execute(strSQL)
%>
Avatar billede eagleeye Praktikant
11. august 2004 - 17:25 #1
Sådan her:

antalPrRow=2
antalRows=0
response.write "<table>"
do while not rs.EOF¨
  if antalRows = 0 then Response.Write "<tr>"
  response.write "<td>"
 
  'HER UDSKRIVES EN NYHED, Du kan måske bruge de kode du har idag

  response.write "<table>"
  response.write "<tr><td>" & rs("dato") & "</td></tr>"
  response.write "<tr><td>" & rs("forfatter") & "</td></tr>"
  response.write "<tr><td>" & rs("overskrift") & "</td></tr>"
  response.write "<tr><td>" & rs("nyheden") & "</td></tr>"
  if len(""&rs("billed"))>0 then response.write "<tr><td><img src=""" & rs("billede") & """></td></tr>"
  if len(""&rs("hjemmeside"))>0 then response.write "<tr><td><a href=""" & rs("hjemmeside") & """>Se hjemmsiden</a></td></tr>"

  'Slut på nyheden

  response.write "</td>"
  antalRows=antalRows+1
  if antalRows = antalPrRow then
    Response.Write "</tr>"
    antalRows=0
  end if
  rs.Movenext
loop
if antalRows>0 then Response.write "</tr>"
Response.write "</table>"
Avatar billede larsen45 Juniormester
11. august 2004 - 17:45 #2
jeg kan ikke få det til at virke desværre jeg gør det sikkert forkert:

Jeg har gjort dette her:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN

strSQL = "SELECT TOP 2 * FROM tabel WHERE Skjules = False ORDER BY Dato DESC"
Set rs = Conn.Execute(strSQL)
%>

<%
antalPrRow=2
antalRows=0
response.write "<table>"
do while not rs.EOF¨
  if antalRows = 0 then Response.Write "<tr>"
  response.write "<td>"
 
  'HER UDSKRIVES EN NYHED, Du kan måske bruge de kode du har idag

  response.write "<table>"
  response.write "<tr><td>" & rs("Dato") & "</td></tr>"
  response.write "<tr><td>" & rs("Forfatter") & "</td></tr>"
  response.write "<tr><td>" & rs("=Overskrift") & "</td></tr>"
  response.write "<tr><td>" & rs("Nyheden") & "</td></tr>"
  if len(""&rs("billed"))>0 then response.write "<tr><td><img src=""" & rs("Billede") & """></td></tr>"
  if len(""&rs("hjemmeside"))>0 then response.write "<tr><td><a href=""" & rs("Hjemmeside") & """>Se hjemmsiden</a></td></tr>"

  'Slut på nyheden

  response.write "</td>"
  antalRows=antalRows+1
  if antalRows = antalPrRow then
    Response.Write "</tr>"
    antalRows=0
  end if
  rs.Movenext
loop
if antalRows>0 then Response.write "</tr>"
Response.write "</table>"
%>

<%
rs.MoveNext
rs.Close
Set rs = Nothing
%>

Jeg for bare en hvid fejl side frem der er nået galt.
Hvad gør jeg forkert.
Avatar billede eagleeye Praktikant
11. august 2004 - 17:50 #3
Prøv sådan her, der ar lige et par små fejl:


<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN

strSQL = "SELECT TOP 2 * FROM tabel WHERE Skjules = False ORDER BY Dato DESC"
Set rs = Conn.Execute(strSQL)
%>

<%
antalPrRow=2
antalRows=0
response.write "<table>"
do while not rs.EOF¨
  if antalRows = 0 then Response.Write "<tr>"
  response.write "<td>"
 
  'HER UDSKRIVES EN NYHED, Du kan måske bruge de kode du har idag

  response.write "<table>"
  response.write "<tr><td>" & rs("Dato") & "</td></tr>"
  response.write "<tr><td>" & rs("Forfatter") & "</td></tr>"
  response.write "<tr><td>" & rs("Overskrift") & "</td></tr>"
  response.write "<tr><td>" & rs("Nyheden") & "</td></tr>"
  if len(""&rs("Billede"))>0 then response.write "<tr><td><img src=""" & rs("Billede") & """></td></tr>"
  if len(""&rs("Hjemmeside"))>0 then response.write "<tr><td><a href=""" & rs("Hjemmeside") & """>Se hjemmsiden</a></td></tr>"
  Response.write "</table>"

  'Slut på nyheden

  response.write "</td>"
  antalRows=antalRows+1
  if antalRows = antalPrRow then
    Response.Write "</tr>"
    antalRows=0
  end if
  rs.Movenext
loop
if antalRows>0 then Response.write "</tr>"
Response.write "</table>"
%>

<%
rs.Close
Set rs = Nothing
%>
Avatar billede eagleeye Praktikant
11. august 2004 - 17:51 #4
Men nu skriver den bare en nyhed ud hvor hver kolonne står under hinanden jeg ved ikke hvordan du ville hvade layoutet.
Avatar billede larsen45 Juniormester
11. august 2004 - 18:05 #5
jeg vil gerne have det sådan at de 2 nyheder står ved siden af hinanden i tabellen
i hver deres celle ca. sådan her:

<table border="1" width="51%">
    <tr>
        <td width="258">Nyhed 1 fra databasen her</td>
        <td>Nyhed 2 fra databasen her</td>
    </tr>
    </table>
Avatar billede eagleeye Praktikant
11. august 2004 - 18:06 #6
Sådan er det også lavet.
Avatar billede larsen45 Juniormester
11. august 2004 - 18:10 #7
ja jeg har også lige testet den sidste kode af men jeg kan ikke få den til at virke desværre ved ikke lige hvad der er galt?
Avatar billede larsen45 Juniormester
11. august 2004 - 18:23 #8
Jeg kunne forstå det vis ikke jeg havde nået i databasen med der er en del poster i.
Der er et eller andet ved koden som driller mig
Jeg har også checket tabelfelterne at de nu er rigtige og at database navn og så videre er rigtigt.
Nå men jeg har lige en vigtig aftale ude i byen. Jeg er hjemme igen efter 21:00 ca
håber vi lige kan snakkes ved der angående dette her, så jeg kan få det til at virke.
Avatar billede eagleeye Praktikant
11. august 2004 - 19:10 #9
ok, hvad sker der når siden loader?
Jeg er heller ikke hjemme i aften og er nok først tilage 23-24 tiden.
Avatar billede larsen45 Juniormester
11. august 2004 - 21:51 #10
Ja så er jeg hjemme igen.
Jo det der sker når jeg loader siden er at den viser dette her:

Siden kan ikke vises
Der er problemer med den side, du prøver at åbne, og den kan ikke vises.

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

Prøv følgende:

Åbn hjemmesiden www.floorballlife.com, og søg efter hyperlinks, der fører til de ønskede oplysninger.
Klik på knappen  Opdater, eller prøv igen senere.

Klik på  Søg for at søge efter oplysninger på Internettet.
Du kan også se en liste over relaterede websteder.

HTTP 500 - Intern serverfejl
Internet Explorer 

Skriv lige når du selv er kommet hjem.
Avatar billede eagleeye Praktikant
12. august 2004 - 00:22 #11
Jeg forstå ikke helt din beskrivelse af hvad jeg skal prøve. Jeg kan ikke lige finde en side nmed hyperlinks hvor fejlen kommer.

Men du skulle gerne få en bedre fejl kode/beskrivelse ved at slå denne fra i IE:

funktioner -> internetindstillinger -> avanceret -> fjern kryds i "vis meddelelse om uskadelige http-fejl"
Avatar billede larsen45 Juniormester
12. august 2004 - 00:43 #12
Tak for forklaringen.
så nu for jeg denne fejl frem:

Microsoft VBScript compilation error '800a0408'

Invalid character

/Nyheder/test1.asp, line 16

do while not rs.EOF¨
-------------------^
Avatar billede eagleeye Praktikant
12. august 2004 - 00:46 #13
Det ser ud som der er sneget sig et tegne for meget ind efter EOF. Prøv at fjerne det tegn  ¨
Så der står:
do while not rs.EOF
Avatar billede larsen45 Juniormester
12. august 2004 - 00:47 #14
ahh det virker nu det er dette tegn her som skulle væk (¨)

Men nu bliver jeg nød til at spørge om jeg ikke kan bruge dette her isteden for response.write funtionen:
<%=rs("Nyheden")%> det ville gøre det lidt nemmere for mig.
Avatar billede eagleeye Praktikant
12. august 2004 - 01:02 #15
Jo det kan du godt. Hvis du er vandt til at bruge den metode så kan dette:
  response.write "<table>"
  response.write "<tr><td>" & rs("Dato") & "</td></tr>"
  response.write "<tr><td>" & rs("Forfatter") & "</td></tr>"
  response.write "<tr><td>" & rs("Overskrift") & "</td></tr>"
  ..


Skrives som:
  %>
  <table>
  <tr><td><%=rs("Dato")%></td></tr>
  <tr><td><%=rs("Forfatter")%></td></tr>
  <tr><td><%=rs("Overskrift")%></td></tr>
  ..
<%
Avatar billede larsen45 Juniormester
12. august 2004 - 01:26 #16
okay det lyder super godt nu har jeg lige testet
det af på denne måde her:

  'HER UDSKRIVES EN NYHED, Du kan måske bruge de kode du har idag

%>
  <table width="106">
  <tr><td><%=rs("Dato")%></td></tr>
  <tr><td><%=rs("Forfatter")%></td></tr>
  <tr><td><%=rs("Overskrift")%></td></tr>
  <tr><td><%=rs("Nyheden")%></td></tr>
  <tr><td><img src=""" & <%=rs("Billede")%> & """></td></tr>
  <tr><td><a href="""<%=rs("Hjemmeside")%> & """>Se hjemmsiden</a></td></tr> 
<%


  'Slut på nyheden

Men det som så sker her er at den viser dem nede under hinanden igen.
Hvad har jeg glemt at rettet på, så det stå ved siden af hinanden.
Avatar billede eagleeye Praktikant
12. august 2004 - 01:30 #17
Prøv at tilføje en </table> sådan her:

  <tr><td><a href="""<%=rs("Hjemmeside")%> & """>Se hjemmsiden</a></td></tr> 
  </table>
<%
Avatar billede larsen45 Juniormester
12. august 2004 - 01:50 #18
ja det var lidt bedre men nu står de forskudt af hinanden på den måde
at i venstre side står indlægget længere nede end det database indlæg så står til højre. Mangler lige at finde ud af hvordan jeg kan få dem til at stå lige ved siden af hinanden.

Her er koden:

%>
  <table width="529" border="1">
  <tr><td align="left" valign="top"><%=rs("Dato")%></td></tr>
  <tr><td align="left" valign="top"><%=rs("Forfatter")%></td></tr>
  <tr><td align="left" valign="top"><%=rs("Overskrift")%></td></tr>
  <tr><td align="left" valign="top"><%=rs("Nyheden")%></td></tr>
  <tr><td align="left" valign="top"><img src=""" & <%=rs("Billede")%> & """></td></tr>
<tr><td align="left" valign="top"><a href="""<%=rs("Hjemmeside")%> & """>Se hjemmsiden</a></td></tr> 
  </table>
<%

Men det er måske ikke i den del af koden som jeg lige skal have rettet til.
Avatar billede eagleeye Praktikant
12. august 2004 - 01:57 #19
Prøv at rette i disse to linjer:

  if antalRows = 0 then Response.Write "<tr>"
  response.write "<td>"

Til dette, det muligt den prøver at center de to celler:

  if antalRows = 0 then Response.Write "<tr>"
  response.write "<td valign=""top"">"
Avatar billede larsen45 Juniormester
12. august 2004 - 03:22 #20
Ja nu hjælp det på det nu stå de ved siden af hinanden.
Men det som er lidt underligt nu er at hvis jeg udskriver med:
ORDER BY Dato DESC" så udtrækker den ikke de 2 nyeste datoer fra databasen
men kun de 2 samme indlæg bliver vist hele tiden.
Hvis jeg derimod bruger:ORDER BY ID DESC" så for jeg de 2 nyeste indlæg vist.

Underligt at Dato ikke virker ordenligt.
Avatar billede larsen45 Juniormester
12. august 2004 - 12:24 #21
Hvad kan årsagen være til dette?
Avatar billede eagleeye Praktikant
12. august 2004 - 12:46 #22
Hvilken data type er kolonnen dato?
Avatar billede larsen45 Juniormester
12. august 2004 - 15:14 #23
den er: Tekst
Avatar billede eagleeye Praktikant
12. august 2004 - 16:26 #24
Så det derfor, så sorteres den som tekst. Det forgår karakter for kakakter og ikke hele srengen som en helhed. Så enten skal du lave kolonne om til date/time format eller prøve at bruge CDate som kan convertere en text til dato:

ORDER BY CDate(Dato) DESC"


Som test er "9" "størrer" end "20" pga karakteren 9 kommer efter 2 i ascii tabelen.
Avatar billede larsen45 Juniormester
12. august 2004 - 16:55 #25
okay så har jeg prøvet at sætte dette ind:
ORDER BY CDate(Dato) DESC"
og prøvet både at have dato/klokkeslet felt og Text felt stående uden at det virker.
Jeg for denne fejl her:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Invalid use of Null

/Nyheder/test1.asp, line 8

Denne fejl kender du sikkert?
Avatar billede eagleeye Praktikant
12. august 2004 - 18:36 #26
det kunne týde på der er en post eller flere hvor datoen ikke er udfyldt?
Avatar billede larsen45 Juniormester
15. august 2004 - 16:43 #27
ja du havde ret det var der problemmet lå.

eagleeye hvad er der galt med denne sætning her:
<% if output_Billede <> "" then %><img src=""" & <%=output_Billede%> & """><% end if %>

Jeg prøver at få vist et felt som hedder: Billede hvis der ikke er nået billede i posten skal der så bare ikke vises nået.
Avatar billede eagleeye Praktikant
15. august 2004 - 21:17 #28
hvis output_Billede kommer direkte fra recordset så prøv dette, da output_Billede hvis kolonnen er tom vil være lig Null og ikke "":

<% if Len(""&output_Billede)>0 then %><img src=""" & <%=output_Billede%> & """><% end if %>
Avatar billede eagleeye Praktikant
29. august 2004 - 00:09 #29
Fik du det til at virke?  Det kunne være rart med lidt feedback :)
Avatar billede larsen45 Juniormester
29. august 2004 - 11:32 #30
Undskyld at jeg ikke lige fik skrevet tilbage, Jeg fik lige en del familie problemmer.
Jeg fik det til at virke perfekt. Så jeg takker mange gange for den gode hjælp.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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