25. november 2003 - 17:20Der 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.
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
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...
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
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(
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
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
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.