Spiftire Skrevet 7. november 2006 Del Skrevet 7. november 2006 (endret) Har jobbet en del med en nettside jeg skal legge ut i anledinng min store verdensreise. Har brugt php til å lage alt fra ting som include(meny) til et CMS som jeg skal blogge fra. Foreløbig får jeg greit skrevet inn tittel på bloggen og selve bloggen. Dette blir plasert i en MySQL data base. For å lese bloggen får du foreløbig opp en liste over alle de forskjellige bloggene. Her er det tittelen på bloggen som kommer ut som link. Trykker du på linken vil du bli sendt til en ny side hvor du kan lese bloggen. Det jeg i middlertid savner er muligheten for f.eks. å poste de første 100 tegnene av bloggen under titelen i listen over de forskjellige bloggene. Uklart?? Se her så skjønner du kanskje hvor jeg vil hend... Klikk for å se/fjerne innholdet nedenfor Slik er det... Blogg 1. Blogg 2. (...) Slik vil jeg ha det... Blogg 1.De hundre første tegnene av selve bloggen Blogg 2.De hundre første tegnene av blogg 2. (...) Finnes det en funsjon eller noen god og effektiv måte å gjøre dette på? Har sett noen har et eget comment felt hvor de kan skrive inn en slik indeks (om du vil). Dette er jo såklart et alternativ, men det medfører jo flere feter i sql basen og flere variabler å holde styr på. I tillegg må jeg i teorien skrive ting to ganger for å få det til å fungere. Noen som har noen gode forlag? Endret 7. november 2006 av Steffenho Lenke til kommentar
Mez Skrevet 7. november 2006 Del Skrevet 7. november 2006 Bruk substr - eks: substr($tekst, 0, 100) - gir deg de 100 første tegnene i hver tekst. Lenke til kommentar
ZoRaC Skrevet 7. november 2006 Del Skrevet 7. november 2006 Jeg har heller vist de 2 første setningne, da det ellers kan bli delt både midt i ord og setninger. Jeg gjorde det så enkelt som : $text = explode(".", $text); echo $text[0].". ".$text[1]; Dette tar da ikke høyde for setninger som slutter med ? eller !, og det kan hende at den deler opp en dato, e.l, men det duger til mitt bruk. Lenke til kommentar
AlecTBM Skrevet 7. november 2006 Del Skrevet 7. november 2006 ka med echo substr($tekst,0,100).'....'; ?? Lenke til kommentar
ZoRaC Skrevet 7. november 2006 Del Skrevet 7. november 2006 Japp, er en mulighet det også, men innimellom kan det bli litt rart... F.eks "Jeg skulle dra og se hvor mange prosenter jeg fikk på Avis" kan i verste fall bli "Jeg skulle dra og se hvor mange pros....", noe som kan bli litt uheldig tolket av den som bare leser det (er vel flere eksempler, men kom ikke på noen spesifikke:P) Lenke til kommentar
endrebjo Skrevet 7. november 2006 Del Skrevet 7. november 2006 (endret) ka med echo substr($tekst,0,100).'....'; 7237803[/snapback] Å gjøre det i PHP belaster serveren unødvendig. Like greit å gjøre det i databasen: SELECT LEFT(kolonne, 100) AS kolonne FROM tabell Endret 7. november 2006 av endrebjorsvik Lenke til kommentar
Peter Skrevet 7. november 2006 Del Skrevet 7. november 2006 (endret) Hva med wordwrap()? Den er "soft" med mindre du setter siste parameter til 1, tror jeg. (Dvs. den kutter ikke midt i et ord. Så du får maks lengde 100, men oftest noen få tegn kortere for å unngå å kutte ord) PHP <?php define( 'DELIM', '|#!§|' ); define( 'MAX_LEN', 100 ); $str_to_split = '...'; $result = ''; if( strlen( $str_to_split ) > MAX_LEN ) { $split_str = wordwrap( $str_to_split, MAX_LEN, DELIM ); if( ($p = strpos( $split_str, DELIM ) ) !== false ) $result = substr( $split_str, 0, $p ); else $result = $split_str; // This should never occur, but safety first... } else $result = $str_to_split; echo $result; ?> Det er en liten feil i scriptet pga. forumet, men den ene linjen som inneholder et og-tegn, skal se slik ut: if( ($p = strpos( $split_str, DELIM ) ) !== false ) Endret 7. november 2006 av Nazgul Lenke til kommentar
Spiftire Skrevet 7. november 2006 Forfatter Del Skrevet 7. november 2006 Takk for alle svarene. Får prøve litt forskjellig. Regner med at det ikke vil bli så heavy trafikk på serven, men greit å være føre var. takk for alle svarene:D Lenke til kommentar
allyse Skrevet 7. november 2006 Del Skrevet 7. november 2006 ka med echo substr($tekst,0,100).'....'; 7237803[/snapback] Å gjøre det i PHP belaster serveren unødvendig. Like greit å gjøre det i databasen: SELECT LEFT(kolonne, 100) AS kolonne FROM tabell 7238057[/snapback] Bruk SUBSTR (substring i ansi) i sql, ikke LEFT. Mer korrekt. Lenke til kommentar
allyse Skrevet 7. november 2006 Del Skrevet 7. november 2006 Må bare legge til. Jeg begynner å bli lei av _dumme _ spørsmål. Sikter ikke direkte til trådstarter, men hvor vanskelig er det å prøve dette: Såååå enkelt er det Lenke til kommentar
Spiftire Skrevet 7. november 2006 Forfatter Del Skrevet 7. november 2006 Må bare legge til. Jeg begynner å bli lei av _dumme _ spørsmål. Sikter ikke direkte til trådstarter, men hvor vanskelig er det å prøve dette: Såååå enkelt er det 7238410[/snapback] Hmmm... sorry mac, enig at man kan bli flinkere til å google. men på den andre siden så er det mye mer moro å skrive i forum Lenke til kommentar
endrebjo Skrevet 7. november 2006 Del Skrevet 7. november 2006 ka med echo substr($tekst,0,100).'....'; 7237803[/snapback] Å gjøre det i PHP belaster serveren unødvendig. Like greit å gjøre det i databasen: SELECT LEFT(kolonne, 100) AS kolonne FROM tabell 7238057[/snapback] Bruk SUBSTR (substring i ansi) i sql, ikke LEFT. Mer korrekt. 7238348[/snapback] Etter hva jeg ser i MySQL-manualen så virker det som at SUBSTR() er mer beregnet på å hente ut strenger som ikke begynner i begynnelsen av strengen. LEFT() henter kun ut fra begynnelsen av strengen. Men SUBSTR() er mer korrekt ifølge SQL-standarden? Lenke til kommentar
allyse Skrevet 7. november 2006 Del Skrevet 7. november 2006 Etter hva jeg ser i MySQL-manualen så virker det som at SUBSTR() er mer beregnet på å hente ut strenger som ikke begynner i begynnelsen av strengen. LEFT() henter kun ut fra begynnelsen av strengen. Men SUBSTR() er mer korrekt ifølge SQL-standarden? 7240338[/snapback] Etter hva jeg har opplevd finner du ikke LEFT i f.eks Oracle elns. SUBSTR() kan brukes mer over hele fjøla. Måtte gå fra LEFT til substr selv. I følge standard er det vel substring() som er det korrekte, men dunno om mysql støtter denne. Lenke til kommentar
endrebjo Skrevet 7. november 2006 Del Skrevet 7. november 2006 Etter hva jeg ser i MySQL-manualen så virker det som at SUBSTR() er mer beregnet på å hente ut strenger som ikke begynner i begynnelsen av strengen. LEFT() henter kun ut fra begynnelsen av strengen. Men SUBSTR() er mer korrekt ifølge SQL-standarden? 7240338[/snapback] Etter hva jeg har opplevd finner du ikke LEFT i f.eks Oracle elns. SUBSTR() kan brukes mer over hele fjøla. Måtte gå fra LEFT til substr selv. I følge standard er det vel substring() som er det korrekte, men dunno om mysql støtter denne. 7240355[/snapback] Joda, både SUBSTR og SUBSTRING finnes, men jeg tenker at man ikke trenger å bruke mer avanserte funksjoner enn nødvendig. Han skriver at han bruker MySQL, og man må vel uansett gå over koden minst én gang hvis man flytter den rundt på forskjellige motorer (selv om man følger standarden). Lenke til kommentar
allyse Skrevet 9. november 2006 Del Skrevet 9. november 2006 Joda, både SUBSTR og SUBSTRING finnes, men jeg tenker at man ikke trenger å bruke mer avanserte funksjoner enn nødvendig. Han skriver at han bruker MySQL, og man må vel uansett gå over koden minst én gang hvis man flytter den rundt på forskjellige motorer (selv om man følger standarden). 7240458[/snapback] Joa, men er litt for å holde en god disiplin fra starten. lite vits å lære inn LEFT når det er dbspesifikt. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå