Avatar billede Slettet bruger
19. juni 2010 - 22:37 Der er 16 kommentarer og
1 løsning

Trim en sætning i PHP

Så har jeg igen igen glemt hvad man skriver, når man i PHP og MySql vil trimme en sætning, så der kun bliver trukket de første 200 ord ud fra databasen. Nogen der kan fortælle mig det.

Ps. Jeg skal hjælpes - tages i hånden for lige at forstå :)
Avatar billede arne_v Ekspert
19. juni 2010 - 22:54 #1
SELECT felt1,felt2,LEFT(langtfelt,200)
FROM dintabel
Avatar billede Slettet bruger
19. juni 2010 - 23:10 #2
Jeg har fået den her lavet, men ved som ikke om det er rigtigt. Den viser ihvertfald hele nyheden. Og den viser også den sidste nyd, så noget må jeg har ramt. Men den skal kun vise de 200 ord, og så vise 4 nyheder.

Mon jeg nogensinde får det lært...hehe.
Avatar billede Slettet bruger
19. juni 2010 - 23:10 #3
Altså - måske jeg lige skal huske at sætte koden ind også ;)



[code]<?php
$sql = "SELECT  * FROM pages WHERE nav_id=99 ORDER BY id DESC LIMIT 1";
$result = mysql_query($sql);
while($rows=mysql_fetch_array($result)):?>
              <div class="">
                <div><?=(trim($rows['content'], 20))?><br /><a href="?section=3&nav99&page=<?=$rows['id']?>" >L&aelig;s resten her...</a></div></div><br />
             
             
             
             
  <?php endwhile;?>[code]
Avatar billede Slettet bruger
19. juni 2010 - 23:18 #4
:D
Avatar billede arne_v Ekspert
19. juni 2010 - 23:23 #5
Du kan ogsaa goere det i PHP.

Men nu laeser jeg lige lidt mere grundigt. Baade SQL LEFT og diverse PHP funktioner bl.a. substr kan tage 200 tegn.

Men vil du have 200 tegn eller 200 ord.

trim fjerner kun mellemrum og lignende den trunkerer ikke til en estemt laengde.
Avatar billede Slettet bruger
20. juni 2010 - 12:08 #6
Ahh så blev jeg så klog. Jeg vil kun have 200 ord. Det er jo for at få vist et lille uddrag af nyheden, og så sætte et link, så brugerne kan læse det hele på en ny side.
Så det er længden jeg skal justere.

Jeg har vel ret i, at LIMIT styrer hvormange nyheder der skal vises. Altså hvis jeg skriver LIMIT 4, bliver der vist de sidste 4 nyheder?

Jeg har forsøgt med LEFT, men det gav ikke noget resultat. Måske jeg fik det skrevet forkert, jeg er altså ikke den kvikkeste til det her, men skal jo også lære.
Avatar billede arne_v Ekspert
20. juni 2010 - 20:07 #7
Hvis du skal have vist 200 ord er du nødt til at lave det i PHP.
Avatar billede Slettet bruger
20. juni 2010 - 20:10 #8
Men hvordan - jeg synes snart jeg har prøvet alt hvad jeg kan komme i tanke om.
Avatar billede Slettet bruger
20. juni 2010 - 20:14 #9
Lige nu har jeg den til at se sådan ud, men det er ikke helt rigtigt endnu


<td width="270" height="187" valign="top" style="text-align: left;"><?php
$sql = "SELECT  * FROM pages WHERE nav_id=99 ORDER BY id DESC LIMIT 0,1";
$result = mysql_query($sql);
while($rows=mysql_fetch_array($result)):?>
              <div class="">
                <div><?= $result = substr($rows['content'],0,200)."...";?><br /><a href="?section=3&nav99&page=<?=$rows['id']?>" >L&aelig;s resten her...</a></div></div><br />
             
             
             
             
  <?php endwhile;?></td>
Avatar billede arne_v Ekspert
20. juni 2010 - 20:14 #10
Forslag til PHP funktion:

function wordtrim($s, $nwords) {
    return implode(' ', array_slice(explode(' ', $s), 0, $nwords));
}
Avatar billede arne_v Ekspert
20. juni 2010 - 20:17 #11
substr kører på tegn ikke på ord.
Avatar billede Slettet bruger
20. juni 2010 - 20:23 #12
Jeg må vist desværre erkende, at jeg ikke kan finde ud af det. Det sidste virker ihvertfald heller ikke.

Desværrre.
Avatar billede arne_v Ekspert
20. juni 2010 - 20:33 #13
<?= $result = wordtrim($rows['content'],200) . '...';?>
Avatar billede Slettet bruger
20. juni 2010 - 21:20 #14
Den har jeg prøvet, og den siger :

Fatal error: Call to undefined function wordtrim()
Avatar billede arne_v Ekspert
20. juni 2010 - 21:30 #15
Så har du jo ikke fået kopieret funktionen i #10 ind !
Avatar billede Slettet bruger
20. juni 2010 - 22:58 #16
Jeg har fået det til at virke, ihvertfald med at den kun viser de 200 første ord. Det har bare rykket hele designet, men det må jeg så kigge videre på. For noget må konflikte et sted.
Og det er ikke width.

Smider du et svar?

Mange tak for hjælpen og din tålmodighed.
Avatar billede arne_v Ekspert
20. juni 2010 - 23:09 #17
svar
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
Computerworld tilbyder specialiserede kurser i database-management

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