Bir veritabanından içerik görüntülenmesini sınırlamak için?

4 Cevap php

Ben bir veritabanından başlığı ve makaleler vücut içeriğini görüntülemek için aşağıdaki kodu kullanıyorum. Nasıl bütün karakterler aksine eşyanın vücudundan sadece ilk 200 karakter görünmesini sağlayabilirsiniz?

<?php

        $select = mysql_query("SELECT * FROM articles ORDER BY id DESC");
        while ($result = mysql_fetch_assoc($select))
    {
        $id     = $result['id'];
        $title  = $result['title'];
        $body   = $result['body'];

        echo "<h2><a name='$id'>" . $title . "</a></h2>";
        echo $body . "<br />";
    }

?>

Herhangi bir yardım büyük beğeni topluyor!

4 Cevap

Bu satırı değiştirin:

echo $body . "<br />";

Buna:

echo (strlen($body) > 200) ? substr($body,0,200) : $body;
echo "<br />";

$body 200 karakter uzunluğunda, ve tüm vücut aksi ise, o comparison operator (üçlü operatör aka) çıkışına sadece ilk 200 karakteri kullanır.

Eğer bir metin kesilmiş blok işaretlemek için kullanabilirsiniz ortak teknik bir kesik metin bloğunun sonuna üç nokta eklemek olacaktır (üç nokta veya HTML varlık &hellip;). Ben genellikle bunları ayrı ayrı değiştirmek izin burada karşılaştırma operatörünü kullanmak yerine sadece bir substr($str,0,200) yaptığını, her iki durum için işe yarayacağını, ancak nedeni budur.

Diğerlerini (sayfanızdaki tüm verileri ihtiyacınız yoksa) de sizin doğrudan sorguda belirtilen veya PHP gibi yapabilirsiniz:

$select = mysql_query("SELECT id, title, SUBSTR(body, 0, 200) FROM articles ORDER BY id DESC"

Ben sınırı denilen bir işlevi yarattık. Belki de sizin için yararlı olacaktır.

function limit($string, $limit) {
        if (strlen($string) < $limit) {
            $result = substr($string, 0, $limit);
        }
        else
            $result =  substr($string, 0, $limit) . '...';
        return $result;
    }


echo limit('Testing my function', 5);

//Output
Test...