Avatar billede stengaard Praktikant
21. april 2008 - 19:21 Der er 32 kommentarer og
1 løsning

Forkort tekst fra database

hej hvordan for jeg dette til at virke, så "synopsis" kun kommer frem med 50 tegn..

<?php
                 
include('news/inc.config.php');
$query = mysql_query("SELECT id,title,author,synopsis,text,image,date FROM newsloge ORDER BY id DESC LIMIT 7") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {
    if ($i++ != 0) echo '<div class="hr"></div>';

    echo '<a href="news/news.display.php?id='.$row['id'].'">'.$row['title'].'<br></a>';
    if(strlen($synopsis)>50){
  echo substr($synopsis,0,50);
}
    echo $row['synopsis'].'<br><br>';;
   
}
?>
Avatar billede w13 Novice
21. april 2008 - 19:24 #1
Det burde den da meget gerne lige nu? Vises alle tegnene?
Avatar billede w13 Novice
21. april 2008 - 19:26 #2
Ah ja, du skal jo nok rette til:

<?php
                 
include('news/inc.config.php');
$query = mysql_query("SELECT id,title,author,synopsis,text,image,date FROM newsloge ORDER BY id DESC LIMIT 7") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {
    if ($i++ != 0) echo '<div class="hr"></div>';

    echo '<a href="news/news.display.php?id='.$row['id'].'">'.$row['title'].'<br></a>';
    $synopsis=$row['synopsis'];
    if(strlen($synopsis)>50){
  echo substr($synopsis,0,50);
    }else{
      echo $synopsis;
    }
    echo '<br><br>';;
   
}
?>
Avatar billede stengaard Praktikant
21. april 2008 - 19:27 #3
ja alt i synopsis ikke kun de 50 prøver dit svar
Avatar billede stengaard Praktikant
21. april 2008 - 19:28 #4
nu er det kun de 50 tegn, kan man eventuelt få den til at tælle ord istedet for og efter f.eks. 25 ord lave ....
Avatar billede w13 Novice
21. april 2008 - 19:28 #5
Denne del:

if(strlen($synopsis)>50){
  echo substr($synopsis,0,50);
}

arbejdede jo kun med variablen $synopsis, som ikke så ud til at indeholde noget.
Og så udskrev du $row['synopsis'] i fuld længde lige neden under. Så det skulle være rettet i min kode.
Avatar billede w13 Novice
21. april 2008 - 19:30 #6
Hvad vil du så gøre, når en eller anden skriver:

"LOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOL, det er bare zuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuper fedt!!!"

og lign. :P Så falder det vel lidt til jorden, eller hvad?

I øvrigt kan du opnå "..."-effekten med:

<?php
                 
include('news/inc.config.php');
$query = mysql_query("SELECT id,title,author,synopsis,text,image,date FROM newsloge ORDER BY id DESC LIMIT 7") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {
    if ($i++ != 0) echo '<div class="hr"></div>';

    echo '<a href="news/news.display.php?id='.$row['id'].'">'.$row['title'].'<br></a>';
    $synopsis=$row['synopsis'];
    if(strlen($synopsis)>50){
  echo substr($synopsis,0,50)."...";
    }else{
      echo $synopsis;
    }
    echo '<br><br>';;
   
}
?>
Avatar billede stengaard Praktikant
21. april 2008 - 19:31 #7
det er den også men kan man få den til at tælle ord i synopsis, og skrive de første 25 ord ud og derefter ....
Avatar billede stengaard Praktikant
21. april 2008 - 19:33 #8
det er kun mig der skriver i news så den med "LOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOL, det er bare zuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuper fedt!!!" bliver nok ikke aktuelt *SS*
Avatar billede w13 Novice
21. april 2008 - 19:33 #9
Bliver det så ikke et problem, når der kommer rigtig mange lange ord?

Det kan godt laves, det er bare på en _helt_ anden måde.
Avatar billede w13 Novice
21. april 2008 - 19:34 #10
Ok så, jeg prøver lige at se, om jeg kan finde på noget. =)
Avatar billede stengaard Praktikant
21. april 2008 - 19:39 #11
eventuelt denne her

<?php
               
include('news/inc.config.php');
$query = mysql_query("SELECT id,title,author,synopsis,text,image,date FROM newsloge ORDER BY id DESC LIMIT 7") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {
    if ($i++ != 0) echo '<div class="hr"></div>';

    echo '<a href="news/news.display.php?id='.$row['id'].'">'.$row['title'].'<br></a>';
$textarray = explode(" ",$synopsis);
$num_of_words=25;
$counter=1;
$finaltext="";
foreach ($textarray as $key => $value){
  $finaltext.=$value;
  if ($counter==$num_of_words){
      $counter=1;
      $finaltext.="<br>\n";
  } else $finaltext.=" ";
  $counter++;
}
    echo '<br><br>';;
 
}
?>
Avatar billede w13 Novice
21. april 2008 - 19:40 #12
Prøv at rette:
    $synopsis=$row['synopsis'];
    if(strlen($synopsis)>50){
  echo substr($synopsis,0,50)."...";
    }else{
      echo $synopsis;
    }
til:
    $synopsis=split(" ",$row['synopsis']);
    for($i=0;$i<count($synopsis)&&$i<25;$i++){
      echo $synopsis[i];
    }
    if(count($synopsis)>25){
      echo "...";
    }
Avatar billede w13 Novice
21. april 2008 - 19:40 #13
Eh, ja hvad med den? :)
Avatar billede stengaard Praktikant
21. april 2008 - 19:41 #14
mit forslag virker ikke kun titel der kommer frem
Avatar billede w13 Novice
21. april 2008 - 19:42 #15
Proev lige mit saa
Avatar billede stengaard Praktikant
21. april 2008 - 19:43 #16
giver hvid skærm

<?php
               
include('news/inc.config.php');
$query = mysql_query("SELECT id,title,author,synopsis,text,image,date FROM newsloge ORDER BY id DESC LIMIT 7") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {
    if ($i++ != 0) echo '<div class="hr"></div>';

    echo '<a href="news/news.display.php?id='.$row['id'].'">'.$row['title'].'<br></a>';
  $synopsis=split(" ",$row['synopsis']);
    for($i=0;$i<count($synopsis)&&$i<25;$i++){
      echo $synopsis[i];
    }
    if(count($synopsis)>25){
      echo "...";
    }
?>
Avatar billede w13 Novice
21. april 2008 - 19:45 #17
Hvid skærm ligefrem? Det giver da ingen mening. Prøv lige med:

<?php
               
include('news/inc.config.php');
$query = mysql_query("SELECT id,title,author,synopsis,text,image,date FROM newsloge ORDER BY id DESC LIMIT 7") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {
    if ($i++ != 0) echo '<div class="hr"></div>';

    echo '<a href="news/news.display.php?id='.$row['id'].'">'.$row['title'].'<br></a>';
  $synopsis=split(" ",$row['synopsis']);
    for($i=0;$i<25;$i++){
      echo "test";
    }
    if(count($synopsis)>25){
      echo "...";
    }
?>
Avatar billede stengaard Praktikant
21. april 2008 - 19:48 #18
stadig hvid skærm
Avatar billede w13 Novice
21. april 2008 - 19:57 #19
Hmm..

<?php
               
include('news/inc.config.php');
$query = mysql_query("SELECT id,title,author,synopsis,text,image,date FROM newsloge ORDER BY id DESC LIMIT 7") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {
    if ($i++ != 0) echo '<div class="hr"></div>';

    echo '<a href="news/news.display.php?id='.$row['id'].'">'.$row['title'].'<br></a>';
  $synopsis=split(" ",$row['synopsis']);
    echo "Før..";
    for($i=0;$i<25;$i++){
      echo "test";
    }
    if(count($synopsis)>25){
      echo "...";
    }
    echo "Efter..";
?>
Avatar billede stengaard Praktikant
21. april 2008 - 19:59 #20
stadig hvid skærm
Avatar billede stengaard Praktikant
21. april 2008 - 20:16 #21
der er noget jeg ikke forstår ved dette eksempel er det kun titel der kommer frem

<?php
               
include('news/inc.config.php');
$query = mysql_query("SELECT id,title,author,synopsis,text,image,date FROM newsloge ORDER BY id DESC LIMIT 7") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {
    if ($i++ != 0) echo '<div class="hr"></div>';

    echo '<a href="news/news.display.php?id='.$row['id'].'">'.$row['title'].'<br></a>';
   
$textarray = explode(" ",$synopsis);
$num_of_words=20;
$counter=1;
$finaltext="";
foreach ($textarray as $key => $value){
  $finaltext.=$value;
  if ($counter==$num_of_words){
      $counter=1;
      $finaltext.="<br>\n";
  } else $finaltext.=" ";
  $counter++;
}
echo $finaltext;;
 
}
?>
Avatar billede w13 Novice
21. april 2008 - 20:18 #22
Plejer du at se, når der kommer fejl i din PHP-kode?
Avatar billede stengaard Praktikant
21. april 2008 - 20:23 #23
ikke så tit hvorfor
Avatar billede stengaard Praktikant
21. april 2008 - 20:23 #24
denne virker heller ikke også hvid skærm

<?php
               
include('news/inc.config.php');
$query = mysql_query("SELECT id,title,author,synopsis,text,image,date FROM newsloge ORDER BY id DESC LIMIT 7") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {
    if ($i++ != 0) echo '<div class="hr"></div>';

    echo '<a href="news/news.display.php?id='.$row['id'].'">'.$row['title'].'<br></a>';
   
$max = 25;
if ( strlen( $row['synopsis'] ) > $max )
{
  echo substr( $row['synopsis'], 0, $max ) . "... <a href='script.php'>Læs mere</a>";
}
else
{
  echo $row['synopsis'];
}

?>
Avatar billede w13 Novice
21. april 2008 - 20:29 #25
Der må jo være en fejl et sted, når en almindelig echo ikke bliver udført, men når vi ikke kan se fejlmeddelelser, er det jo svært at sige hvor.
Avatar billede stengaard Praktikant
21. april 2008 - 20:32 #26
ja ikke
Avatar billede olebole Juniormester
21. april 2008 - 22:52 #27
<ole>

if ($i++ != 0) echo '<div class="hr"></div>';

- a' hva'for et $i ...?  =)

Prøv i øvrigt at skrive:

<?php

ini_set("error_reporting", E_ALL);
include('news/inc.config.php');
$query = mysql_query("SELECT id,title,author,synopsis,text,image,date FROM newsloge ORDER BY id DESC LIMIT 7") or die(mysql_error());
print "Antal fundne rækker: ".mysql_num_rows($query)."<br>";
... osv ... osv ...

/mvh
</bole>
Avatar billede nielle Nybegynder
22. april 2008 - 07:07 #28
En anden måde at korte af til 50 ord:

$pattern = "(\w+\W*){0,50}";
$phpPattern = "/$pattern/";

preg_match($phpPattern, $synopsis, $matches);

$synopsis50 = $matches[0];
Avatar billede stengaard Praktikant
22. april 2008 - 21:40 #29
hvordan for jeg dette bygget ind i scriptet

$pattern = "(\w+\W*){0,50}";
$phpPattern = "/$pattern/";

preg_match($phpPattern, $synopsis, $matches);

$synopsis50 = $matches[0];

<?php
             
include('news/inc.config.php');
$query = mysql_query("SELECT id,title,author,synopsis,text,image,date FROM newsloge ORDER BY id DESC LIMIT 7") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {
    if ($i++ != 0) echo '<div class="hr"></div>';

    echo '<a href="news/news.display.php?id='.$row['id'].'">'.$row['title'].'<br></a>';
 
$textarray = explode(" ",$synopsis);
$num_of_words=20;
$counter=1;
$finaltext="";
foreach ($textarray as $key => $value){
  $finaltext.=$value;
  if ($counter==$num_of_words){
      $counter=1;
      $finaltext.="<br>\n";
  } else $finaltext.=" ";
  $counter++;
}
echo $finaltext;;

}
?>
Avatar billede nielle Nybegynder
22. april 2008 - 22:57 #30
<?php
include('news/inc.config.php');
$query = mysql_query("SELECT id, title, author, synopsis, text, image, date FROM newsloge ORDER BY id DESC LIMIT 7") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {
    if ($i++ != 0) echo '<div class="hr"></div>';
    echo '<a href="news/news.display.php?id='.$row['id'].'">' . $row['title'] . '<br></a>';

    $pattern = "(\w+\W*){0,50}";
    $phpPattern = "/$pattern/";

    preg_match($phpPattern, $row['synopsis'], $matches);

    echo $matches[0] . '<br><br>';;
}
?>
Avatar billede stengaard Praktikant
23. april 2008 - 01:21 #31
kigger på det tak
Avatar billede stengaard Praktikant
23. april 2008 - 09:58 #32
tak for hjælpen det virker og resultatet bliver

<?php
include('news/inc.config.php');
$query = mysql_query("SELECT id, title, author, synopsis, text, image, date FROM newsloge ORDER BY id DESC LIMIT 7") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {
    if ($i++ != 0) echo '<div class="hr"></div>';
    echo '<a href="news/news.display.php?id='.$row['id'].'">' . $row['title'] . '<br></a>';

    $pattern = "(\w+\W*){0,30}";
    $phpPattern = "/$pattern/";

    preg_match($phpPattern, $row['synopsis'], $matches);

    echo $matches[0] . '..... <a href="news/news.display.php?id='.$row['id'].'">Læs Mere<br></a><br><br>';;
}
?>
Avatar billede nielle Nybegynder
26. april 2008 - 07:28 #33
Svar?
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