Avatar billede baronen20 Nybegynder
17. februar 2003 - 10:16 Der er 13 kommentarer og
2 løsninger

Vis noget af indholdet

Jeg har noget tekst i en database som skal skrives ud på en side.
Men jeg vil kun have vist noget af det, dvs. de 50 første tegn.

I har garanteret set det på diverse nyhedssider.
Avatar billede ion Nybegynder
17. februar 2003 - 10:18 #1
Avatar billede kimg Nybegynder
17. februar 2003 - 10:19 #2
substr("dit indhold", 0, 50)
Avatar billede ion Nybegynder
17. februar 2003 - 10:21 #3
Og der skulle selvfølgelig have stået substr($dinstreng,0,50);
Avatar billede ion Nybegynder
17. februar 2003 - 10:22 #4
Tak for rettelsen, kimg ;)
Avatar billede lauer Nybegynder
17. februar 2003 - 10:29 #5
Du kan også gøre det direkte i queryen

SELECT LEFT(feltnavn, 50) AS short FROM tabel
Avatar billede je79ayps Novice
17. februar 2003 - 10:32 #6
Hvis nu man skulle uddype den lidt - kunne det så være muligt at efter de 50 tegn bliver vist laves en "læs mere" og så linker til hele nyheden?
Avatar billede baronen20 Nybegynder
17. februar 2003 - 11:01 #7
taxa
Avatar billede nicklasb Nybegynder
17. februar 2003 - 12:17 #8
if (strlen ($text) > 50) {
$text = substr($text, 0, 50);
$text = $text . "<a href=\"news.php?id=$id\">..Læs mere!</a>" ;
}
Avatar billede je79ayps Novice
17. februar 2003 - 22:08 #9
nicklasb: hvis du kan fortælle hvor jeg skal indsætte det i nedenstående script er der 30 point at hente:

<?
if($kodeord == "kodeord"){
  echo "Nyheden er tilføjet";
  $db = mysql_connect("-", "-", "-");
  mysql_select_db("-",$db);
  $nyhed_dato = time();
 
  mysql_query("INSERT INTO nyheder (dato, overskrift, tekst) VALUES ('$nyhed_dato', '$nyhed_overskrift', '$nyhed_tekst')");
 
}

else {
?>
<form METHOD=POST ACTION=<? echo $PHP_SELF;?>>
kodeord:<br>
<input TYPE=PASSWORD NAME=kodeord><br>
overskrift:<br>
<input TYPE=TEXT NAME=nyhed_overskrift><br>
tekst:<br>
<textarea NAME=nyhed_tekst>her indtastes nyheden</textarea><br>
<input TYPE=SUBMIT VALUE=skriv>
</form>
<?
}
?>
Avatar billede je79ayps Novice
17. februar 2003 - 22:13 #10
Ups det skulle nok have være dette:

<?
$db = mysql_connect("-", "-", "-");
mysql_select_db("-", $db);
$foresp = mysql_query("SELECT dato, overskrift, tekst FROM nyheder ORDER BY dato DESC LIMIT 0, 2") or die(mysql_error());
while($data = mysql_fetch_array($foresp)){

  echo "<b>$data[1]</b> - ";
  echo date("j/n - Y", $data[0]);
  echo "<br>$data[2]<br><br>";
}
?>
Avatar billede nicklasb Nybegynder
17. februar 2003 - 22:16 #11
den kode du har gevet mig der er til at skrive en nyhed eller andet ind i en database med.. Den kode jeg har skrevet er til når du printer din nyhed ud igen. Der vil den så kun tage de første 50 tegn.. og hvis der så er flere, skrier den "læs mere" bag efter..
Men hvis du bare vil skide på dem der skriver nyherne ind på dit site og kun gemme 50 tegn kn du bare sætte det lige før mysql-queryen.. altså:

<?
if($kodeord == "kodeord"){
  echo "Nyheden er tilføjet";
  $db = mysql_connect("-", "-", "-");
  mysql_select_db("-",$db);
  $nyhed_dato = time();
  if (strlen ($text) > 50) {
  $nyhed_tekst = substr($nyhed_tekst, 0, 50);
  }

---og så resten af koden---

og så har du vel heller ikke noget at bruge "læs mere" til, hvis du aligevel ikke gemmer hele nyheden.. Tror du ikke du i stedet lige skulle poste koden til at printe den ud med ;)
Avatar billede nicklasb Nybegynder
17. februar 2003 - 22:23 #12
sorry.. så ikke din seneste besked.. var sku nok lidt for langsom til at prykke koden sammen.. hehe.. men her er der noget du måske kan bruge:

For at kunne linke til en anden side, hvor nyheden står fuldt ud ville det hjælpe meget, om du have lavet en kolonde med et unikt id.. Så kunne du nemlig have hevet den ud efter dette.. men hvis det bare er den seneste nyhed du viser på siden kan du gøre det således:

<?
$db = mysql_connect("-", "-", "-");
mysql_select_db("-", $db);
$foresp = mysql_query("SELECT dato, overskrift, tekst FROM nyheder ORDER BY dato DESC LIMIT 0, 2") or die(mysql_error());
while($data = mysql_fetch_array($foresp)){

$text = "$data[2]";

if (!isset($visalt)) {
if (strlen ($text) > 50) {
  $text = substr($text, 0, 50);
  $text = $text . "<a href=\"$PHP_SELF?visalt=ja\">..læs mere!</a>" ;
}
}

  echo "<b>$data[1]</b> - ";
  echo date("j/n - Y", $data[0]);
  echo "<br>$text<br><br>";
}
?>

Jeg kan dog se at du har valgt at printe to ud.. så desværre vil de begge folde sig ud hvis du klikker på den ene.. Dette kan dog afhjælpes hvis du laver en mindre løkke, og giver dem hvert et id..
Men så tror jeg altså det er meget lettere og hurtigere lige at oprette et unikt id :)
Avatar billede je79ayps Novice
18. februar 2003 - 08:39 #13
Hvis jeg nu kun vil printe den sidste nyhed kan jeg så bruge dit sidste svar?
Avatar billede nicklasb Nybegynder
18. februar 2003 - 10:06 #14
ja.. du kan da prøve.. men det skulle du kunne.. :)
Avatar billede je79ayps Novice
18. februar 2003 - 10:17 #15
Fint jeg prøver lige når jeg kommer hjem.
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

IT-JOB