"Læs mere"-funktion i nyhedsscript

Tags:    php

Hej,

Jeg har et nyhedsscript, hvor man kan opdatere med nyheder via en mySQl database. Databasen indeholder altså både et id, en overskrift, dato, filnavn på billede og selve teksten til hver nyhed.
Nu vil jeg gerne have mit script udbygget, så brugeren på for eksempel forsiden ser ser alle nyhederne listet efter dato med en overskrift, et billede samt en lille del af den tilhørende tekst (fx. 200 tegn) hvorefter der kommer et "Læs mere"-link, som, når man trykker på det viser hele nyheden i dens fulde længde.

Hvordan skal dette problem løses? Er det nødvendigt at ligge det i to filer (en oversigt og en læse-side) eller kan det klares i en enkelt fil? Som det er lige nu bliver nyhederne bare listet fuldt ud. Se
koden på dette link: http://www.sappy.dk/test.php

Med venlig hilsen,
Christoffer Kjeldgaard

[Redigeret d. 23/07-03 20:54:12 af Christoffer Kjeldgaard]



2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Det første du skal gøre, er at du skal være sikker på at du ikke sætter mere end 200 tegn ind op siden. Dette kan fikses ved at lave en funktion der retter længden på udtrækket.
f.eks:

Fold kodeboks ind/udKode 


For at bruge denne funktion skal du gøre følgende:
1. erklærer den i toppen af dit dokument (php side) eller includere den fra en fil.
2. kalde funktionen.

Jeg regner med at du godt kan finde ud af nr 1, så derfor tager vi nr 2:
du har en tekststreng, f.eks:

$streng = "sdlkfls kdhflskhdflskh(200tegn senere)...osv";

denne streng fikser du så længden på, vha. funktionen fikslaengde

echo fiksLaengde($streng);

Det output som der kommer, er teksten men kun på 200 tegn (og tre prikker "...").
$streng variabel skal så bare indeholde teksten fra nyheden i din database. Dvs. at den skal kaldes når du skal skrive nyheden ud...

Derefter skal du lave en måde hvor man kan se hele nyheden. Dette kan du gøre, ved at hive nyheds id'et ud fra databasen og lave et link, f.eks:

$sql = mysql_query("select * from nyhedstabel order by id desc");
$row = mysql_fetch_array($sql);

// her skal du udskrive selve nyheden (ved brug af funktionen fikslaengde()...)

echo "<a href=\\"nyhed.php?nyhed=".$row['id']."\\">læs mere</a>";

Dette link, kan godt pege hen til den samme side...
Oppe i toppen af nyhed.php skal du bare have en tjekker, f.eks.:
Fold kodeboks ind/udKode 


Den funktion som skal udskrive en hel nyhed kan f.eks. være som følger:

Fold kodeboks ind/udKode 


Jeg håber du forstod dette eksempel, og hvis du ikke kan finde ud af at sætte det hele sammen, så kan du jo lige kontakte mig.

-------------------------------
Hilsen Jimmi Westeberg
http://www.westsworld.dk



Hej Jimmi,

Det var da helt utroligt. Skidtet virker jo. Jeg satte mig ned og kiggede de ting du havde skrevet meget grundigt igennem, hvorefter jeg prøvede at ligge dem ind i mit eget script. Og hvert "level" blev en mindre succes, så til sidst var scriptet færdigt. Så nu er "læs mere"-funktionen fuldstændig integreret i mit nyhedssystem.
Du skal have mange tusinde tak for den pædagogiske og grundige hjælp, Jimmi. Der er 200 UP på vej til dig.

Mange tak,
Christoffer Kjeldgaard

P.S. Hvis du vil se scriptet "in action" som testversion, så tag en kigger på http://www.sappy.dk/picturenews/nyhed.php inden jeg fjerner siden igen ;-)



t