Avatar billede sthen Nybegynder
30. august 2003 - 12:12 Der er 7 kommentarer og
1 løsning

Udskriv kun en del af databaseindholdet

Hvis der f.eks. kun skal udskrives de 50 første tegn af et databaseindhold, kan det jo gørs ve hjælp af:

$kort = substr($data['tekst'], 0, 50);
echo $kort;

Hvordan sørger jeg samtidig for følgende to ting:

1) Hvis teksten er længere end 50 tegn afsluttes med tre punktummer, hvis teksten er uforkortet skal der ikke foretages noget.
2) Teksten må ikke afsluttes midt i et ord, men kun i mellemrum, så der ikke fremstår en tekst som f.eks. "I Danmark er je..."
Avatar billede schaefner Juniormester
30. august 2003 - 12:15 #1
$sqlstr = "SELECT *,CONCAT(LEFT(tekst,50),SUBSTRING_INDEX(SUBSTRING(tekst,51),' ',1),IF(LENGTH(tekst)>100,'...','')) AS manchet FROM nyheder ORDER BY id DESC LIMIT";

$query = mysql_query($sqlstr);

så kan du udskrive $data['manchet']
Avatar billede schaefner Juniormester
30. august 2003 - 12:21 #2
eller php-løsningen:

$kort = substr($data['tekst'],0,100);
$kort = substr($kort,0,strrpos($kort,' '));
Avatar billede schaefner Juniormester
30. august 2003 - 12:21 #3
hov, manglede lige '...'

$kort = substr($kort,0,strrpos($kort,' ')).'...';
Avatar billede sthen Nybegynder
30. august 2003 - 12:31 #4
Det er jo næsten korrekt, men jeg ønsker kun '...' hvis teksten er forkortet ellers ikke
Avatar billede schaefner Juniormester
30. august 2003 - 12:33 #5
så er det php-løsningen du har brugt eller hvad?

if (strlen($data['tekst']) > 50) {
  $data['tekst'] = substr($data['tekst'],0,100);
  $data['tekst'] = substr($kort,0,strrpos($kort,' '));
}

så udskriver du bare $data['udskriv'];

men sql-løsningen burde gøre som du beder om.

mvh. Jesper Sørensen
Avatar billede sthen Nybegynder
30. august 2003 - 12:38 #6
Ja det er php løsningen jeg anvender (og ønsker at anvende, da jeg bruger samme mysql-select til flere ting.
Avatar billede schaefner Juniormester
30. august 2003 - 12:51 #7
if (strlen($data['tekst']) > 50) {
  $kort = substr($data['tekst'],0,100);
  $kort = substr($kort,0,strrpos($kort,' ')).'...';
}

og så $kort, så burde det virke :)
Avatar billede sthen Nybegynder
30. august 2003 - 12:53 #8
Du ledte mig på sporet, men den endelige løsning blev som nedenfor:

if (strlen($data['tekst']) > 50) {
  $data['tekst'] = substr($data['tekst'],0,50);
  $data['tekst'] = substr($data['tekst'],0,strrpos($data['tekst'],' ')).' ...';
echo $data['tekst'];
}
else
{
echo $data['tekst'];
}

Så point til dig alligevel.
Tak for hjælpen og god weekend.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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