$sql = "SELECT a.articleId, a.subject, LEFT(a.copy, 180) AS copy, a.pubDate, u.userId
FROM Article a
INNER JOIN User u
ON a.authorId = u.userId
ORDER BY " . $order . " DESC
LIMIT 5";
Nu hugger den som väntat texten exakt efter 180 tecken. Detta blir ganska fult. Kan jag i MySQL men någon strängfunktion välja efter antal ord från vänster? Eller på annat smart sätt slippa avhuggna ord.
Detta är kanske något jag får fixa i PHP, men dumt att hämta hela texten om jag bara ska använda ca 180 tecken.
Tack för era svar. Jag får dock inte det att fungera riktigt. Första biten i texten:
Sveriges Television och Sveriges Radio har båda beslutat att börja sända digitala sändningar istället för analogt. Jag anser att det är ett hot mot säkerheten och integriteten.
SQL-fråga som den ser ut nu:
$sql = "SELECT substring(a.copy from 1 for
case when position(' ' in a.copy) = 0 then 180
else 180 - position(' ' in reverse(a.copy)) end) AS copy
FROM Article a
INNER JOIN User u
ON a.authorId = u.userId
ORDER BY " . $order . " DESC
LIMIT 5";
Resultat:
Sveriges Television och Sveriges Radio har båda beslutat att börja sända digitala sändningar istället för analogt. Jag anser att det är ett hot mot säkerheten och i
$sql = "SELECT substring(a.copy from 1 for
case when char_length(a.copy) <= 180 then char_length(a.copy)
when position(' ' in a.copy) = 0 then 180
else 180 - position(' ' in reverse(a.copy)) end) AS copy
FROM Article a
INNER JOIN User u
ON a.authorId = u.userId
ORDER BY " . $order . " DESC
LIMIT 5";
SELECT substring(a.copy from 1 for
case when char_length(a.copy) <= 180 then char_length(a.copy)
when position(' ' in a.copy) = 0 then 180
else 180 - position(' ' in reverse(substring(a.copy from 1 for 180))) end) AS copy
FROM artikel as a;