Gå til innhold

Sideskift på lang tekst


Anbefalte innlegg

Lager wap-side som skal ha nyheter.

 

Inne på en valgt nyhet kommer $tekst som da hentes fra mySQL.

 

Da mobiler har liten skjerm har jeg kommet frem til at ca. 450 tegn per side er passe.

 

Utfordringen er da enten å dele opp $tekst i bolker med 450 tegn og lenke til neste side, som igjen (hvis det er over 900 tegn) lenker til neste side osv.

 

Eller fikse det hele med variabeler i spørringen med hjelp av SELECT SUBSTRING.

 

$tekst vil normalt ikke være over 900 tegn men kan være det, så best om det ikke blir noen begrensing.

 

Setter pris på om noen har tips om metoder/kode :)

 

Mvh Akke

Lenke til kommentar
Videoannonse
Annonse

Tjaa.. sånn på stående fot så ville vel dette være passende

 

Men den har ikke kode for å lage nav-bar. Men siden den genererer en array så er ikke det noe stress. Det er bare å linke til neste side hvis ikke dette er den siste side (sizeof());

 

Du vil muligens også passe på at siden slutter med et helt ord slik at ikke ord blir delt på midten.

 

Håper dette hjelper.

Lenke til kommentar

Takker, dette hjalp veldig mye :)

 

Landet opp med:

  

$TegnPerSide=450;



$AntSider=ceil(strlen($tekst)/$TegnPerSide);

 for ($Cnt=0; $Cnt<$AntSider;$Cnt+=1)

 {

   $sidetekst[$Cnt]=substr($tekst, $Cnt*$TegnPerSide, $TegnPerSide);

 }

 

 If ($side == ""){

 	$vistittel = "<p><b>$tittel</b></p>";

 	$side = 0;

 	$sidenr = $side + 1;

 } else {

 	$sidenr = $side + 1;

 	$vistittel = "";

 }

 

 $mer = "<br><a href='nytt.php?vis=$vis&side=$sidenr'>Mer...</a>";

 

 if ($AntSider == $sidenr){

 	$mer = "";

 }

 

 $vissidetekst = trim ($sidetekst[$side]);

 

 echo ("$vistittel<p>$vissidetekst$mer</p>");

 

Sikkert litt rare løsninger på sideskift/lenke biten, men det funker. Eneste svakheten her som jeg kan se er at ord deles på midten.

 

Takk skal du ha BlueEAGLE :)

Lenke til kommentar

fant en funksjon på php.net som bare deler mellom ord, men den er egentlig til linjeskift så det må skrives om litt for å bli sideskift:

 


   function short_words($str,$cols,$cut) {

       $str = str_replace("rn","",$str);

       $str = str_replace("n","",$str);

       $str = str_replace("r","",$str);

       $tag_open = '<';

       $tag_close = '>';

       $in_tag = 0;

       $str_len = strlen($str);

       $segment_width = 0;

  

       for ($i=0; $i <= $str_len; $i++){

           if (substr($str,$i,strlen($cut)) == $cut) {

               $i += strlen($cut)-1;

               $segment_width = 0;

           } else {

               if ($str[$i] == $tag_open) {

                   $in_tag++;

               } elseif ($str[$i] == $tag_close) {

                   if ($in_tag > 0) {

                       $in_tag--;

                   }

               } else {

                   if ($in_tag == 0) {

                       $segment_width++;

                       if ($str[$i] == " ") {

                           $last_space = $i;

                       }

                       if (($segment_width > $cols) && ($str[$i] != " ")) {

                           if ($last_space < $i) {

                               $str = substr($str,0,$last_space).$cut.substr($str,$last_space);

                               $i   = $last_space + strlen($cut) - 1;

                           } else {

                               $str = substr($str,0,$i).$cut.substr($str,$i);

                               $i   += strlen($cut) - 1;

                           }

                           $last_space     = 0;

                           $str_len        = strlen($str);

                           $segment_width  = 0;

                       }

                   }

               }

           }

       }

       return $str;

   }



$str = short_words($str, 45 ,"<br />");

Lenke til kommentar

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å
×
×
  • Opprett ny...