Avatar billede kasbas91 Nybegynder
14. maj 2011 - 16:55 Der er 24 kommentarer og
1 løsning

Hej jeg har et spørgmål, facebook har det sådan at hvis man skriver mere en 3 eller 4 linjer tekst så kommer der 3 prikker og Se mere. ?

Hej jeg har et spørgmål, facebook har det sådan at hvis man skriver mere en 3 eller 4 linjer tekst så kommer der 3 prikker og Se mere. ?


Det kunne jeg også godt tænke mig at lave...

jeg har en function som tæller linje skrift..



function count_lines($string){
       
        $req_lines = 3;
   
        $lines = explode("<br />", $string);
       
        $number_lines = count($lines);
   
        if ($number_lines > $req_lines) {
       
            echo "<div style='display: none;'> ".$string."</div> <br /> ... <br /> See more.";
           
        }
    }




Jeg vil gerne have det til at se sådan ud her:

Det er en tekst
Og en linje mere
Og en linje mere
...
Se mere.

At den skjuler resten af teksten efter 3 linjer tekst.

Men jeg ved ikke helt hvordan man kan lave det...
Avatar billede dab93 Nybegynder
14. maj 2011 - 17:16 #1
substr(rækkerne,0,3)."...";
Avatar billede dab93 Nybegynder
14. maj 2011 - 17:18 #2
Og det er så i PHP.

Jeg bruger selv sådan en funktion her til når jeg begrænser min tekst til 20 tegn:
echo substr($row['tekst'],0,20)."...";
Avatar billede berner5300 Nybegynder
14. maj 2011 - 17:26 #3
Smide det her ind i head

<script language="javascript" type="text/javascript">
function showHide(shID) {
    if (document.getElementById(shID)) {
        if (document.getElementById(shID+'-show').style.display != 'none') {
            document.getElementById(shID+'-show').style.display = 'none';
            document.getElementById(shID).style.display = 'block';
        }
        else {
            document.getElementById(shID+'-show').style.display = 'inline';
            document.getElementById(shID).style.display = 'none';
        }
    }
}
</script>
<style type="text/css">
    /* This CSS is used for the Show/Hide functionality. */
    .more {
        display: none;
    a.showLink, a.hideLink {
        text-decoration: none;
</style>

Og skriv "Se mere" teksten inde i <div id="example" class="more"></div>

Brug <a href="#" id="example-show" onclick="showHide('example');return false;">Se mere.</a> til at åben og <a href="#" onclick="showHide('example');return false;">Se mindre</a>
Avatar billede kasbas91 Nybegynder
14. maj 2011 - 17:27 #4
Ja men jeg skal have lagt resten at teksten ind i en div, som jeg kan skjule og vise efter behov... hvordan kan man det...
Avatar billede kasbas91 Nybegynder
14. maj 2011 - 17:36 #5
Hov havde ikke set du skrev, ja det er nogen i retning... 

Men hvordan kan jeg få resten af teksten ind i den div.

Altså fx:

test
test
test
...
se mere.

men hvis teksten er større, så skal jeg have splittet teksten, så resten kommer ind i den div fx:

test
test
test
----
test
test
test
----

efter ----

skal resten af teksten være i en div...

Hvis du forstår mig...
Avatar billede kasbas91 Nybegynder
14. maj 2011 - 17:41 #6
Jeg skal have splittet teksten på en eller anden måde...

Men jeg ved ikke hvordan...
Avatar billede berner5300 Nybegynder
14. maj 2011 - 17:48 #7
Smid

border-top: 1px solid #666;
border-bottom: 1px solid #666; }

ind i head under <style type="text/css"> under .more
Avatar billede kasbas91 Nybegynder
14. maj 2011 - 17:49 #8
Men jeg for stadig ikke splittet resten af teksten ind i den div.
Avatar billede berner5300 Nybegynder
14. maj 2011 - 17:51 #9
Prøv at give mig din html fil
Mail: berner5300@live.dk
Avatar billede dab93 Nybegynder
14. maj 2011 - 17:58 #10
<?php
if($_GET['more']!==true) {
  echo substr($tekst,0,3)."...";
} else {
  echo $tekst;
}
?>


Så laves der var et link der hedder <a href="?more=true">se mere</a>

For at lave det som i rækker, det er jo bare teksten der er lavet som "enter", også kendt som \n\l eller noget i den stil, og det kan du gøre således:
echo nl2br($tekst);
Avatar billede kasbas91 Nybegynder
14. maj 2011 - 18:00 #11
jeg har ikke en html...

Men du kan se det her:



function count_lines($string){
       
        $req_lines = 4;
   
        $lines = explode("<br />", $string);
       
        $number_lines = count($lines);
   
        $text  = $string;
               
        if ($number_lines > $req_lines) {
       
            $text .= "<div style='display: none;'>".$string."</div> <br /> ... <br /> See more.";
           
        }
       
        echo $text;
    }



Og her bruger jeg den:

echo $this->count_lines(nl2br($fetch->messages));
Avatar billede berner5300 Nybegynder
14. maj 2011 - 18:11 #12
Har du en hjemmeside hvor det er lagt ud?
Avatar billede dab93 Nybegynder
14. maj 2011 - 18:13 #13
function count_lines($string){
       
        $req_lines = 4;
   
        $lines = explode("<br />", $string);
       
        $number_lines = count($lines);
   
        $text  = $string;
               
        if ($number_lines > $req_lines) {
       
            $text .= "<div style='display: none;'>".$string."</div> <br /> ... <br /> <a href='?more=true'>See more</a>.";
           
        }
       
        echo $text;
    }

if($_GET['more']!==true) {
  echo $this->count_lines(nl2br($fetch->messages));
} else {
  echo $tekst;
}


Prøv dette.
Avatar billede kasbas91 Nybegynder
14. maj 2011 - 18:14 #14
ja:

http://sharefiles.prowdesign.dk/

login:

test@test.com
pass: test
Avatar billede dab93 Nybegynder
14. maj 2011 - 18:18 #15
Virker mit script ikke?
Avatar billede kasbas91 Nybegynder
14. maj 2011 - 18:23 #16
nej det syntes jeg ikke... hmm
Avatar billede kasbas91 Nybegynder
14. maj 2011 - 18:24 #17
Jeg skal have resten af teksten efter 4 linjer ind i den div

automatisk...
Avatar billede dab93 Nybegynder
14. maj 2011 - 19:05 #18
Du skal nok ud i noget jQuery for at få det til at virke.
Avatar billede repox Seniormester
14. maj 2011 - 21:01 #19
Her er et forslag som du eventuelt kan få lidt inspiration fra:
http://err0r.dk/test/938819.php

Kildekoden:
http://err0r.dk/test/938819.php?s

Når man sætter sådan noget i produktion, vil man typisk lave noget mere avanceret i forhold til kommunikationen mellem JavaScript og PHP. AJAX er en metode, men om det er nødvendigt må vist afhænge af mængden af data.
Avatar billede kjeldsted Novice
14. maj 2011 - 22:17 #20
#13, #15, #18.

Eftersom der ønskes en løsning med dynamisk indhold i browseren er PHP jo nok ikke lige en løsning der skal bruges. Det skal laves i JS med PHP som repox faktisk også skriver det.

Det bør nok gøres ved enten at gemme det skjulte tekst i en hidden div eller simpelthen ved at lave JS udskife indholdet af div'en til at vise det hele.
Avatar billede kasbas91 Nybegynder
15. maj 2011 - 13:48 #21
Repox, jeg har fået mit problem løst, og mange tak for din hjælp.

Så læg et svar... Tak.
Avatar billede repox Seniormester
15. maj 2011 - 13:58 #22
Det fik du her ...
Avatar billede kasbas91 Nybegynder
15. maj 2011 - 14:50 #23
Hvis du har tid lige 2 sec..

onclick=\"show_text('".$post_id."', '".$string."');\"

Ser det her ikke meget rigtig ud, men jeg får en fejl i firebug:

unterminated string literal

[Break On This Error] show_text('30', 'hej<br />


Har jeg sat de "" eller '' forkert...
Avatar billede repox Seniormester
15. maj 2011 - 18:41 #24
Er der en reel ny linie, så vil det skabe problemer.
Avatar billede kasbas91 Nybegynder
16. maj 2011 - 14:36 #25
Hej repox, jeg har fået styr på det.. men eller tak.. :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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