Avatar billede benzon Praktikant
23. juli 2002 - 20:45 Der er 28 kommentarer og
1 løsning

Hvordan laver man nyheds udskift med max 100 tegn ?

Hejsa jeg er igang med at lave et lidt anderledes nyheds system end jeg har lavet før og der må max være 100 Tegn i Nyhed Brød Teksten hvordan gør jeg så det ???
Avatar billede in2designs Nybegynder
23. juli 2002 - 20:55 #1
Koden for at variere antallet af bogstaver :

skriv: - MAXLENGTH="100" -
helst efter NAME="" !
Avatar billede benzon Praktikant
23. juli 2002 - 21:01 #2
Ehm prøv lige at forklar den en gang til
Avatar billede gizmo-gizmo Nybegynder
23. juli 2002 - 21:02 #3
Hvis du vil afskære de overskydende ord tegn kan du:

<?php
$nyhed = substr($nyhed, 0, 100);
?>


hvis du vil tjekke om den overholder grænsen på 100 tegn kan du:

<?
if (strlen($nyhed) > 100) {
    echo "fyyygh!! alt for mange tegn, hønn...";
} else {
    echo "du er en helt.";
}
?>
Avatar billede benzon Praktikant
23. juli 2002 - 21:19 #4
ja men den Maxlength er det en der skal smide i Mysql eller ?????

Den der Substr ville nok blive svær eller hvad ????

Det vil jo give et problem vis det er flere nyheder der skal stå ca. 5 Nyheder ude i siden !!!!
Avatar billede mikl-dk Nybegynder
23. juli 2002 - 22:38 #5
maxlenght skal sættes i dit textfelt i formen, så kan man ikke indtaste mere en 100 tegn...
Avatar billede well_r Nybegynder
24. juli 2002 - 00:17 #6
hvis du vælger varchar eller var det charvar eller sådan noget.. så kan du vælge op til 25x tegn eller deromkring.. du skriver simpelt 100 så er det klaret..
men jeg vil stærkt anbefale at du istedet bruger et phpscript til at cutte din tekst ned.. til eks. nærmeste " " <- mellemrum..  på den måde kan du så skriver "..." efter teksten.. og så kan folk jo klikke på teksten får at læse videre..
Avatar billede tipsen Nybegynder
24. juli 2002 - 00:59 #7
Hvis det er spørgsmål om du ikke vil have at folk har mulighed for at taste mere end 100 tegn i et form-felt, kan du gøre følgende:

<input type="text" name="textfield" maxlength="100">

det er det som bliver foreslået i første forslag.
Avatar billede benzon Praktikant
24. juli 2002 - 01:19 #8
det er jo ikke det spørgsmålet går ud på !!!!!

Well er inde på det rigtige men Well kan du hjælpe mig ?
Avatar billede fangel Nybegynder
24. juli 2002 - 10:09 #9
lav fx dette...

function cut($txt){
  if(strlen($txt) > 100){
    $ny_txt = substr($txt, 0, 97) . "...";
  }
  return $ny_txt;
}

så kan du bare lave dette...

$lang_tekst = "DETTE ER EN LANG TXT... DETTE ER EN LANG TXT... DETTE ER EN LANG TXT... DETTE ER EN LANG TXT... DETTE ER EN LANG TXT... DETTE ER EN LANG TXT... DETTE ER EN LANG TXT... DETTE ER EN LANG TXT...";

$kort_tekst = cut($lang_tekst);

echo "$kort_tekst";

det er dog ligeglad med " "... den klikker bare efter tegn 97 og sætter 3 "." bag efter...

Dea_PG
Avatar billede fangel Nybegynder
24. juli 2002 - 10:10 #10
hov, klikker = klipper
Avatar billede tipsen Nybegynder
24. juli 2002 - 10:36 #11
benzon: Beklager - det var bare det jeg læste ud af spørgsmålet!

Jeg vil foreslå, at du bruger substr i mysql - på den måde piller du ikke flere data end højst nødvendigt ud af db'en!

SELECT LEFT(feltnavn,100) FROM ...

og når du så skriver ud i php kan du bare appende "..."
Avatar billede gizmo-gizmo Nybegynder
24. juli 2002 - 12:11 #12
benzon >> du må forklare lidt bedre hvis du vil have folk til at svare specifikt på dit spørgsmål.
Det er svært at vide om du mener:
Brugeren ikke kan indtaste mere end 100 tegn.
Om Der skal komme fejl hvis man har indtastet mere.
Om man bare skal smide de første 100 tegn ind.
Om der kommer 100 tegn ud når man henter det fra databasen.
Om der skal komme 100 tegn ud når man udskriver det på siden.
osv
Avatar billede benzon Praktikant
24. juli 2002 - 12:41 #13
dea_pq <-- Det du skriver vil det ikke bare blive bøvlet ?????? jeg hiver jo teskt ud af mysql

tipsen <-- Ville gerne bruge Well´s måde så den Cuter efter et mellemrum,

gizmo-gizmo <-- Det er til News !!!!! Det er Brød Tekst og det skal hives ud af Databasen, og nej brugeren taster bare det ind der skal stå i nyhed og så skulle jeg gerne have lavet en måde så den så kun hiver det ud der er nødvændigt !!!!
Avatar billede tipsen Nybegynder
24. juli 2002 - 12:47 #14
benzon: "Det er til News !!!!!" gør mig altså ikke klogere omkring den problemstilling du vil have løst - det kan godt være du har siddet nogle dage med systemet og ved præcist hvad du skal bruge "News" til og hvordan det skal fungere, men det gør vi andre altså ikke...

Men hvis du gerne vil begrænse brødteksten til ca. 100 tegn i udskriften - samtidig med at den så vidt muligt klipper smart, kan du du bruge følgende script:

Nogle af jer har nok set denne funktion før, men den er altså udmærket:

//  Funktion, der "klipper" en tekst over på det mest hensigtsmæssige sted (".", " ", )
// str klip(str tekst, int længde, int tolerance)

function klip($tekst, $laengde = 10, $tolerance = 10) // $laengde og $tolerance kan udelades
{
    $punktum  = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), "."); // position af punktum
    $mellemrum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), " "); // position af mellemrum
    $mere      = "..."; // punktummer hvis mere tekst

    if (strlen($tekst) <= $laengde + $tolerance) {
        $slut_pos = strlen($tekst); // slutposition = slut på tekst, da denne er kortere end $laengde og $tolerance
        $mere = ""; // ikke andet
    } elseif ($punktum !== false) {
        $slut_pos = $laengde-$tolerance+$punktum; // slutposition = punktum
    } elseif ($mellemrum !== false) {
        $slut_pos = $laengde-$tolerance+$mellemrum; // slutposition = mellemrum
    } else {
        $slut_pos = $laengde; // slutposition $laengde (ikke noget at gøre - skær ord over)
    }

    return substr($tekst, 0, $slut_pos) . $mere; // udskriv del + evt. punktummer
}

-fandt den på et tidspunkt i et gammelt spørgsmål her på eksperten og har selv brugt den efterfølgende - den er ikke helt tosset!
Avatar billede benzon Praktikant
24. juli 2002 - 13:22 #15
Tipsen du er hende på det rette der :)
Avatar billede benzon Praktikant
24. juli 2002 - 13:22 #16
Men er lige med hvordan pokker den så skal kodes ind i det jeg har :\
Avatar billede benzon Praktikant
24. juli 2002 - 13:32 #17
<?
echo"<font size=\"1\" face=\"Verdana\"><a href="news?id=$row[id]"><img border=\"0\" src=\"images/prik.gif\" width=\"2\" height=\"10\">$row[indhold]</a></font>";
?>

meget meget Simpelt sådan som nyheden skal printes ud der er Style Sheet der fjerner stregen under Nyheden !!!!

Men det var sådan noget jeg hade tænkt mig

Der er sat Limit i Mysql Connection til 3 Nyheder
Avatar billede tipsen Nybegynder
24. juli 2002 - 15:10 #18
hvis du i forvejen printer nyhederne ud med ovenstående og $row['indhold'] indeholder brødteksten gør du følgende i stedet:

<?
echo"<font size=\"1\" face=\"Verdana\"><a href="news?id=$row[id]"><img border=\"0\" src=\"images/prik.gif\" width=\"2\" height=\"10\">".klip($row[indhold],100,10)."</a></font>";
?>

Og så skal du selvfølgelig sætte funktionen ind et sted øverst i dokumentet.
Avatar billede benzon Praktikant
24. juli 2002 - 15:13 #19
det der skulle så virke ud fra hvad du siger ????
Avatar billede benzon Praktikant
24. juli 2002 - 15:14 #20
Så prøver vi lige
Avatar billede benzon Praktikant
24. juli 2002 - 15:24 #21
Hvordan laver jeg så så den piller <br> ud af teksten ???
Avatar billede benzon Praktikant
24. juli 2002 - 15:24 #22
Fatal error: Cannot redeclare klip() in /home/httpd/vhosts/j-r-c.dk/httpdocs/amnesia/beta/news.php on line 9 <-- Hmmm
Avatar billede fangel Nybegynder
24. juli 2002 - 15:42 #23
du har 2 funktioner der hedder klip...
Avatar billede benzon Praktikant
24. juli 2002 - 16:56 #24
ARHHH ok
Avatar billede benzon Praktikant
24. juli 2002 - 16:58 #25
hmmmmmm vis jeg så fjerner det du siger ja så virker det ikke
Avatar billede benzon Praktikant
24. juli 2002 - 17:09 #26
<?
include("mysql.ink");
mysql_connect("$dbhost","$dbuser","$dbpass");
mysql_select_db("$dbname");
$query = mysql_query("select * FROM news ORDER BY id DESC LIMIT 3") or die(mysql_error());
while($row = mysql_fetch_array($query)){
?>
<?
$tekst = $row['indhold'];
?>
<?
function klip($tekst, $laengde = 10, $tolerance = 10) // $laengde og $tolerance kan udelades
{
    $punktum  = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), "."); // position af punktum
    $mellemrum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), " "); // position af mellemrum
    $mere      = "..."; // punktummer hvis mere tekst

    if (strlen($tekst) <= $laengde + $tolerance) {
        $slut_pos = strlen($tekst); // slutposition = slut på tekst, da denne er kortere end $laengde og $tolerance
        $mere = ""; // ikke andet
    } elseif ($punktum !== false) {
        $slut_pos = $laengde-$tolerance+$punktum; // slutposition = punktum
    } elseif ($mellemrum !== false) {
        $slut_pos = $laengde-$tolerance+$mellemrum; // slutposition = mellemrum
    } else {
        $slut_pos = $laengde; // slutposition $laengde (ikke noget at gøre - skær ord over)
    }

    return substr($tekst, 0, $slut_pos) . $mere; // udskriv del + evt. punktummer
}
?>
<?
echo"<br><font size=\"1\" face=\"Verdana\"><a href=\"news?id=$row[id]\"><img border=\"0\" src=\"images/prik.gif\" width=\"2\" height=\"10\">".klip($row[indhold],100,10)."</a></font>";
?>

Hmmm hvad kan jeg rette så den fejl ikke er der ???????

Og hvordan fjerner jeg de <BR> tags der er i teksten i databasen ????
Avatar billede fbb Nybegynder
24. juli 2002 - 18:32 #27
du skal entent bruge: <?
function klip($tekst, $laengde = 10, $tolerance = 10) // $laengde og $tolerance kan udelades
{
    $punktum  = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), "."); // position af punktum
    $mellemrum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), " "); // position af mellemrum
    $mere      = "..."; // punktummer hvis mere tekst

    if (strlen($tekst) <= $laengde + $tolerance) {
        $slut_pos = strlen($tekst); // slutposition = slut på tekst, da denne er kortere end $laengde og $tolerance
        $mere = ""; // ikke andet
    } elseif ($punktum !== false) {
        $slut_pos = $laengde-$tolerance+$punktum; // slutposition = punktum
    } elseif ($mellemrum !== false) {
        $slut_pos = $laengde-$tolerance+$mellemrum; // slutposition = mellemrum
    } else {
        $slut_pos = $laengde; // slutposition $laengde (ikke noget at gøre - skær ord over)
    }

    return substr($tekst, 0, $slut_pos) . $mere; // udskriv del + evt. punktummer
}
?>

Eller

".klip($row[indhold],100,10)."
Avatar billede benzon Praktikant
24. juli 2002 - 18:35 #28
ja men vis jeg fjærner function klip($tekst, $laengde = 10, $tolerance = 10) // $laengde og $tolerance kan udelades
kommer der intet OutPut :\
Avatar billede tipsen Nybegynder
25. juli 2002 - 11:48 #29
Du skal have funktionen stående een gang øverst i dit script eller i en include-fil - den skal der ikke pilles ved! Når du så skal bruge funktionen skriver du:

echo klip("tekst", 100,10);

hvor de to sidste argumenter er "optional" og vil antage standardværdierne fra funktionsdeklarationen, hvis de ikke angives i funktionskaldet!

Hvis du vil strippe html-tags generelt, kan du bruge funktionen striptags(), som fjerner alle html-tegn - er det brugbart?
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