Hallo,

ik heb een soort van nieuwssysteem waarvan de namen en datums eerst in een lijst worden weergegeven, waarna je verder kunt klikken om alles te lezen..

Nu wil ik graag in die lijst de eerste 20 woorden van het veld "omschrijving" weergeven. Als je dan op "lees meer" klik krijg je het hele item te zien op een nieuwe pagina.

Hoe krijg ik alleen de eerste 20 woorden van een veld uit MySQL?

Alvast bedankt!
De eerste 20 woorden ophalen is wel mogelijk, alleen zul je er waarschijnlijk niet onderuit komen om dit met php te bepalen. Je zou op de spaties kunnen exploden en vervolgens de eerste 20 items uit de verkregen array weer samen kunnen voegen.

Gebruikelijker is om een beperkt aantal tekens uit de database op te halen. Dit kun je heel eenvoudig doen met de SUBSTRING() functie van MySQL:

SELECT SUBSTRING(tekst, 1, 100) AS afgekort
FROM tabel

Deze query haalt de eerste 100 tekens van het stuk tekst in de kolom 'tekst' op.
ah perfect! ja de eerste 100 tekens dat is eigenlijk net zo goed :) zo kun je natuurlijk veel beter de ruimte bepalen want je weet niet hoe lang een woord is..

Dit is nu mijn query: $sql = "SELECT id,naam,soort,datum,thumb FROM nieuws_items ORDER BY ".$sortorder." ASC";

Kan ik die query hierboven met mijn huidige query combineren of moet ik hem apart in mijn php-bestand zetten?
Uiteraard kun je die gewoon combineren! Zoiets zal het dan worden:
<?php
$sql = "
SELECT
id,
naam,
soort,
datum,
thumb,
SUBSTRING(omschrijving, 1, 100) AS omschrijving_kort
FROM
nieuws_items
ORDER BY
".$sortorder." ASC
";
?>
Nee, deze kan je natuurlijk perfect combineren

<?php
$sql = "SELECT id, titel, SUBSTRING(tekst, 1, 100) AS afgekort FROM tabel";

?>

Zo moet 't er uit gaan zien.

(dus voor de duidelijkheid extra velden toegevoegd om te laten zien hoe de SUBSTRING in de query wordt opgenomen)

Succes ermee!

edit: Blanche was me voor...
Werk perfect! hartstikke bedankt!

Reageren