Avatar billede mothwe Nybegynder
25. november 2003 - 17:20 Der er 10 kommentarer og
1 løsning

Nyheder i database

Jeg har en database (Access) der består af en række nyheder - på forsiden vil jeg have citeret den seneste nyhed - dvs. f.eks. kun den første sætning i nyheder, og så skal man kunne klikke på "læs mere" for at læse hele nyheden.

Hvordan gør jeg det? SQLstmt?
Avatar billede mothwe Nybegynder
25. november 2003 - 17:22 #1
Altså - jeg behøver kun forklaringen på hvordan man nøjes med at trække f.eks. den første sætning ud!
Avatar billede overchord Nybegynder
25. november 2003 - 17:32 #2
Nu ved jeg ikke helt hvordan din db er organiseret mht hvad der er den nyeste, men hvis det f.eks er paa et stigende ID-nummer kunne du bruge. Eksemplet tager en linje paa ca 100 tegn fra nyheden

SELECT TOP 1 ID, left(strNyhed,100) & ""...."" AS Nyhed FROM Tabel_Nyhder ORDER BY id
Avatar billede thb Nybegynder
25. november 2003 - 17:34 #3
Du kan jo lave en query til tabellen og så bare hente den første record set.. Altså lade være med at loope..

Det med kun nogle enkelte tegn.. Der skal du bruge funktionen left(str,tegn)

Thomas
Avatar billede boris Mester
25. november 2003 - 17:42 #4
Ovenstående er fremragende , hvis det ikke gør noget, at sætninger hakkes i stykker.Hvis du mener det bogstaveligt med en sætning, er der to muligheder:
1) Opret et særligt felt i database med den pågældende sætning (overskrift/underoverskrift kunne man kalde det) og vis dette felt på forsiden.
2) Indsæt et særligt skilletegn i slutningen af sætningen.
På forsiden udskriver du fra position 0 til skilletegnet.
Inde på selve nyheden replacer du skilletegnet (et eller andet ascii tegn) med ingenting.
----
Angående rækkefølge vil jeg anbefale at sortere
... ORDER BY DATO DESC, ID DESC...
Avatar billede mothwe Nybegynder
25. november 2003 - 17:50 #5
I stedet for at tælle antal tegn - er der så ikke mulighed for at sige: "første gang der stødes på et punktum, så skal der ikke hentes mere"?
Avatar billede boris Mester
25. november 2003 - 18:58 #6
Jeg ved ikke, hvilke funktioner man evt. kan bruge i Access, men du kunne evt. bare gøre noget i retning af:
Dim stoptegn
nyhed= [hentes fra databasen]
stoptegn = 0
If InStr(nyhed,".") > 0  Then
stoptegn = InStr(nyhed, ".")
End If
If stoptegn > 100 Then
stoptegn = 100
End If
nyhed = Mid(nyhed,1,stoptegn-1)
Response.write nyhed
Avatar billede boris Mester
25. november 2003 - 19:00 #7
Ulempen er klart nok, at hvis der står H.C. Andersen, vil det blive til 'H'.
Avatar billede ras2000 Nybegynder
26. november 2003 - 11:49 #8
Jeg tror også jeg ville lave et seperat felt med overskrift. Det kan du få access til at gøre med de eksisterende poster ved at lave en forespørgsel, der trækker den første sætning ud med koden beskrevet ovenover, eller endnu bedre lave en asp side der gør det. Der vil så komme de fejl boris beskriver, og dem skal du så rette manuelt.
Noget ala
opret felt rs("overskrift")
do while not rs.eof
nyhed= rs("nyhed")
stoptegn = 0
If InStr(nyhed,".") > 0  Then
  stoptegn = InStr(nyhed, ".")
End If
If stoptegn > 100 Then
stoptegn = 100
End If
rs("overskrift") = left(nyhed, stoptegn)
rs("nyhed") = right(nyhed, stoptegn)
rs.update
rs.movenext
loop
  rs(
Avatar billede ras2000 Nybegynder
26. november 2003 - 11:50 #9
Det sidste rs( skulle ikke ha været med.
Avatar billede boris Mester
26. november 2003 - 13:32 #10
Men den reneste løsning er stadig, at du fra starten indretter databasen med
- id nummer (autoincrement/tæller)
- dato
- evt. emne
- overskrift VARCHAR(f.eks. max 75 karakterer)
- manchet VARCHAR(f.eks. max 250 karakterer)
- indhold TEKST
Avatar billede boris Mester
26. november 2003 - 13:34 #11
Evt skulle du prøve at ændre
If InStr(nyhed,".") til
If InStr(nyhed,". ")
for at undgå at ramme et punktum midt i et ord
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