PHP: Ausgabe begrenzen

J Haupt

Mitglied
Hallo,

nach langem herumprobieren bin ich leider immer noch nicht auf den Trichter gekommen, wie ich im Newsmodul meines PHP-Scripts die Anzahl der auszugebenden Nachrichten limitieren kann. Es ist NICHT nötig, die Ausgabe auf mehrere Seiten zu verteilen, es soll einfach nach X News abgebrochen werden.

Hier der relevante Code

CODE <?php
$cfg['pagetitle'] = "News";

$newses = get_news();

foreach ($newses as $news) {

$news['content'] = strip_tags(html_entity_decode($news['content'], ENT_QUOTES));
$news['title'] = strip_tags(html_entity_decode($news['title'], ENT_QUOTES));

$newslink = get_newsitem_link("id="._sp($news['id']));

$rtlength = strlen($news['title']);
$rclength = strlen($news['content']);

$tlength = $rtlength;
if ($tlength > 32) $tlength = 32;
$clength = 80 - $tlength;

$news['content'];
$news['clipped'] = $news['content'];
if ($rclength > $clength) {
$news['clipped'] = htmlentities(substr($news['clipped'], 0, $clength), ENT_QUOTES);
}

$news['title'];
$news['tlipped'] = $news['title'];
if ($rtlength > $tlength) {
$news['tlipped'] = htmlentities(substr($news['tlipped'], 0, $tlength), ENT_QUOTES);
}

echo "<a href='".$newslink."' class='udarklink'>";
echo $news['tlipped'];
if ($news['tlipped'] != $news['title']) {
echo "...";
}

echo "</a><br />";

}

?>



Vielen Dank!

Ciao,
Johannes
 
du kanst in die foreach schleife eine bedingung machen.
Aber guck dir am besten mal die Funktion get_news() etwas genauer an.
Dort werden wahrscheinlich die News ausgelesen.

MfG
GP
 
Danke vorab für das Feedback.
Die Funktion selbst will ich nicht verändern, da die News anderswo komplett ausgegeben werden sollen. Was ich in die foreach-Schleife zu schreiben habe, übersteigt leider schon meine laienhaften php-Kenntnisse. Idea, anyone? [5¤ via paypal winken]

Ciao,
Johannes
 
Juhu 5 Euro
biggrin.gif

Die Spendeste am besten fuer nen guten Zweck
wink.gif


Kopiere einfach folgenden Code

CODE <?php
$cfg['pagetitle'] = "News";

//Anzahl der anzuzeigenden News
$news_count = 5;


$newses = get_news();

foreach ($newses as $news) {
if($news_show <= $news_count)
{
$news_show++;

$news['content'] = strip_tags(html_entity_decode($news['content'], ENT_QUOTES));
$news['title'] = strip_tags(html_entity_decode($news['title'], ENT_QUOTES));

$newslink = get_newsitem_link("id="._sp($news['id']));

$rtlength = strlen($news['title']);
$rclength = strlen($news['content']);

$tlength = $rtlength;
if ($tlength > 32) $tlength = 32;
$clength = 80 - $tlength;

$news['content'];
$news['clipped'] = $news['content'];
if ($rclength > $clength) {
$news['clipped'] = htmlentities(substr($news['clipped'], 0, $clength), ENT_QUOTES);
}

$news['title'];
$news['tlipped'] = $news['title'];
if ($rtlength > $tlength) {
$news['tlipped'] = htmlentities(substr($news['tlipped'], 0, $tlength), ENT_QUOTES);
}

echo "<a href='".$newslink."' class='udarklink'>";
echo $news['tlipped'];
if ($news['tlipped'] != $news['title']) {
echo "...";
}

echo "</a><br />";
}
}

?>


trotzdem waehre es aber besser die funktion zu editieren.

MfG
GP
 
QUOTE (G.P. @ Fr 15.9.2006, 22:19)
CODE <?php
$cfg['pagetitle'] = "News";

//Anzahl der anzuzeigenden News
$news_count = 5;


$newses = get_news();

foreach ($newses as $news) {
if($news_show <= $news_count)
{
$news_show++;
// ....
}
}

?>

MfG
GP

Bei Deiner Lösung würde foreach so lange durchlaufen, bis das Array fertig ist. Das ist natürlich schlecht für die Performance. (Liegt wahrscheinlich im Millisekundenbereich). So würde ich es lösen (auch wenn ich es ebenfalls für besser halten würde, die Funktion get_news so in der Art get_news([int count]) neu zu schreiben).

Achja, falls $newses ein durchnummeriertes Array ist, könnte man ja auch schauen ob der Key größer als 4 ist, dürfe nochmal etwas schneller sein, bei Bedarf am besten kurz benchmakren.


CODE <?php

$cfg = array();
$cfg['pagetitle'] = "News";
$cfg['news_count'] = 5; // Anzahl der anzuzeigenden News

$newses = get_news();
$count = 0;

foreach($newses as $news) {
if($count < $cfg['news_count']) {
++$count; // ++$var ist schneller als $var++&#59;-)
// ....
} else
break;
}

?>
 
Zurück
Oben