Gå til innhold

Skrive ut de 20 første bokstavene fra kollone


Anbefalte innlegg

Skrevet

Hei, arbeider med en mer avansert gjestebok.

I admin panelet skal man få en kort oversikt over alle innleggene.

Det vil jeg gjøre ved å vise de 20 første bokstavene i kollonnen, evt. de 5 første ordene om det er mulig.

 

Et eksempel:

 

I kollonnen står det:

 

Hei, dette var en morsom side, har du malt rommet ditt nå?

Blablablablabla...

 

Skal bli forkortet til:

 

Hei, dette var en morsom ...

 

Må sikkert ta i bruk LIMIT her?

Bruker MySQL.

 

Takker for svar :)

Videoannonse
Annonse
Skrevet (endret)

Skal du programmere dette i PHP?

Isåfall kan du benytte følgende kode for å få ut de første 20 tegnene

 

PHP
echo substr('abcdef', 0, 4); // abcd

Bytt ut abcdef med innholdet i databasen og 4 med 20 så funker det..

 

LIMIT vil bare sortere på linjene i en database, hvis du eks. har 10 innlegg i din tabell og setter LIMIT til 3 i SELECT setningen din så vil den kun liste ut 3 innlegg i record set. Den vil ikke sette noe begrensninger på innholdet i filen.

Endret av KurtGandalf
Skrevet (endret)
Går da an å bruke LEFT(tabell, antall tegn) til det her?

7002513[/snapback]

Jepp. Best det. (LEFT()) :)

 

SELECT LEFT(kolonne, 20) FROM tabell;

 

Men husk at det kan bli seende litt rart ut hvis den kutter midt i f.eks å (html-kode for 'å') hvis du lagrer spesialtegn slik i databasen.

Endret av endrebjorsvik
Skrevet (endret)

Bortsett fra at det er unødvendig å sende data som ikke blir brukt fra SQL-serveren til PHP-motoren. :hm:

 

Edit: For å få de fem første ordene kan du bruke explode() og sette sammen igjen.

PHP
<?php

$words explode(' '$string);

$output '';

for ($i 0$i <= 4$i++) {

$output .= $words[$i] . ' ';

}

?>

Endret av endrebjorsvik
Skrevet
Går da an å bruke LEFT(tabell, antall tegn) til det her?

7002513[/snapback]

 

 

IKke hvis du ønsker å kunne porte koden til f.eks oracle. LEFT fungerer ikke der. Du kan hvis jeg husker korrekt bruke Substr(input, num,num) i mysql også. Jeg veit ikke hvordan dette fungerer i andre db enn oracle, men det virker som en ganske global metode.

Skrevet
Går da an å bruke LEFT(tabell, antall tegn) til det her?

7002513[/snapback]

Ikke hvis du ønsker å kunne porte koden til f.eks oracle. LEFT fungerer ikke der. Du kan hvis jeg husker korrekt bruke Substr(input, num,num) i mysql også. Jeg veit ikke hvordan dette fungerer i andre db enn oracle, men det virker som en ganske global metode.

7015470[/snapback]

Hvis du skal gjøre dette standard, så skal funksjonen hete SUBSTRING og ikke SUBSTR (Ref SQL:2003 standarden). Både Microsoft SQL Server, Sybase, IBM DB2, MySQL og PostgreSQL støtter dette, Oracle gjør det ikke (såvidt jeg vet) og har valgt å kalle funksjonen for substr isteden.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...