Avatar billede Frederik Nybegynder
07. november 2009 - 13:23 Der er 12 kommentarer og
1 løsning

Overskrift hentet fra MySQL er for lang.

Jeg har et problem med at min .$row['overskrift']. bliver for lang, og dermed passer designet på hjemmesiden ikke til indholdet.

Jeg søger et løsning til at det kun et noget af overskriften der bliver udskrevet fx:

Forkert:
En overskrift der er for lang

Rigtigt:
En overskrift der...


Det idelle ville være at der kunne angives en maksimal width.

Er det muligt at lave sådan en funktion i php?


udsnit fra kode:
<div class=\"indholdtop\"><h1>".$row['overskrift']."</h1><h2>Tilføjet: ".$row['dato']." af Webmaster</h2></div>


- XuZeM
Avatar billede preppydude Nybegynder
07. november 2009 - 13:44 #1
<?php
define('MAX_HEADLINE_WIDTH', 150);

// ...
$headline = (strlen($row['overskrift'])>MAX_HEADLINE_WIDTH) ? substr($row['overskrift'], 1, MAX_HEADLINE_WIDTH-4)." ..." : $row['overskrift'];
echo("<h1>$headline</h1>");
?>
Avatar billede Frederik Nybegynder
07. november 2009 - 13:48 #2
kan jeg få en forkalring til koden?
Avatar billede showsource Seniormester
07. november 2009 - 13:59 #3
SELECT LEFT(overskrift, 60) FROM tabel
Avatar billede showsource Seniormester
07. november 2009 - 14:00 #4
eller
SELECT LEFT(overskrift, 60) as overskrift FROM tabel
Avatar billede Frederik Nybegynder
07. november 2009 - 14:12 #5
Begge løsninger angiver jo bare hvor mange anslag/tegn der vises og ikke en bestemt width... Alle tegn varierer jo i brede og dermed er det jo ikke hensigtsmæssigt at angive et bestemt antal anslag der må vises.

showsource din løsning angiver desuden heller ikke ... for at symbolisere en fortsættelse af teksten.. ER det muligt at lave dette også?


- XuZeM
Avatar billede showsource Seniormester
07. november 2009 - 14:31 #6
Du kan definere en width i pixels for et html element.
Men alle computere har jo ikke samme tekststr. så du er i den henseende "ude på et skråplan"

Designmæssigt bør du bruge html som "tilpasser sig" div. opløsninger, skriftstr. m.m.

... kan du jo blot skrive direkte ?
Avatar billede Frederik Nybegynder
07. november 2009 - 14:50 #7
Ja okay.

Jeg har via css defineret, at min h1 kun må være 400px i breden.. Er det så muligt via php at tilføje "..." i slutningen af overskriften hvis de 400px overskrides og undlade dem hvis de 400px ikke overskrides?


- XuZeM
Avatar billede showsource Seniormester
07. november 2009 - 14:59 #8
Nej, ikke med php
Men kan gøres i javascript.
Avatar billede Frederik Nybegynder
07. november 2009 - 15:01 #9
Er det noget du kan forklare mig?
Avatar billede intenz Novice
07. november 2009 - 18:26 #10
Prøv google, der findes en del javascript code til ellipsis (det du prøver at opnå).
http://www.google.dk/search?hl=da&rlz=1T4GGLL_daDK308DK308&q=ellipsis+javascript&meta=&aq=f&oq=
Avatar billede Slettet bruger
07. november 2009 - 19:41 #11
Mit bud er dette. Jeg tror ikke at javscript er vejen frem lige her.

Prøv dette. Bare skift max længden.

<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());


$statement = "SELECT overskrift FROM news";
$get = mysql_query($statement) or die(mysql_error());

// Max længde af overskrift
$ml = 13;
?>

<html>
<head>
</head>
  <body>
  <?php
    while($row = mysql_fetch_assoc($get))
    {
    $r = $row['overskrift'];
    $m = strlen($r);
    if($m > $ml )
    {
    $t = substr($r, 0, $ml);
    $d = substr($t, -1);
      if($d != " ")
      {
      echo "<h1>".$t."...</h1><br />";
      }
      else
      {
      $o = strlen($t) -1;
      $g = substr($t, 0, $o);
      echo "<h1>".$g."...</h1><br />";
      }                   
    }
    else
    echo "<h1>".$r."...</h1><br />";
    }
    ?>
</body>
</html>
Avatar billede Slettet bruger
07. november 2009 - 19:45 #12
He he :D Ups

while($row = mysql_fetch_assoc($get))
    {
    $r = $row['overskrift'];
    $m = strlen($r);
    if($m > $ml )
    {
    $t = substr($r, 0, $ml);
    $d = substr($t, -1);
      if($d != " ")
      {
      echo "<h1>".$t."...</h1><br />";
      }
      else
      {
      $o = strlen($t) -1;
      $g = substr($t, 0, $o);
      echo "<h1>".$g."...</h1><br />";
      }                   
    }
    else
    echo "<h1>".$r."</h1><br />";
    }
Avatar billede Frederik Nybegynder
09. november 2009 - 09:44 #13
Jeg dropper det og holder mig til at h1 kun må være 400px i breden.
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