Seite 1 von 1

news - begrenzung auf anzeige der neuesten 3

Verfasst: Fr 28. Mai 2004, 11:57
von prefix
hi!

ich benutze dieses modifizierte news-modul:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* REFERENZ MODUL / ARTIKELLISTE
*
* Artikelliste mit Img 1, Head 1, Head 2
*
* Erstellt eine Liste mit allen Artikel bis
* auf den Startartikel.
*
* Author      :     Jan Lengowski
* Copyright   :     four for business AG
* Created     :     15-08-2002
* Modified    :     16-08-2002




------ NEWS-MODUL -----------------
************************************************/

// second db class instance
$db2 = new DB_Contenido;

// selected category
$selcat = "CMS_VALUE[0]";

 if($selcat!="0" && $selcat!=""){

// select all articles in category widthout start article
$query = "SELECT ARTLANG.idart, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".
          $cfg["tab"]["art_lang"]." AS ARTLANG ".
         "WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' AND ".
         "ARTLANG.online = '1' ORDER BY CATART.idart DESC";

// execute query
$db->query($query);

unset($articleID);
unset($linkID);

// get id's of sub articles
while ($db->next_record()) {
  $articleID[] = $db->f("idartlang");
  $linkID[] = $db->f("idart");
} // end while

// loop through subarticles

/*echo '
<table width="165" border="0" cellspacing="0" cellpadding="0">
<tr><td height="30" colspan="2" ></td></tr>
<tr><td height="21" width="22" style="border: 0px; border-top:1px; border-bottom:1px; border-color: #F7C473; border-style: solid; background-color: #FCF2D5"><img src="images/wuerfel.gif" width="22" height="21" border="0"></td>
<td width="143" style="border: 1px; border-left:0px; border-color: #F7C473; border-style: dashed; background-color: #FCF2D5; padding-left:10px" class="punkte">CMS_VALUE[2]</td></tr>
';*/
echo '<h1>CMS_VALUE[2]</h1>';

if (is_array($articleID)) {
	
    foreach ($articleID as $key => $value) {

          // select all CMS variables of the article
          $sql = "SELECT * FROM ".$cfg["tab"]["content"]." WHERE idartlang = '$value' AND idtype = '1' AND typeid = '1'";
          $db->query($sql);
          $db->next_record();
          $head = $db->f("value");

          if ( strlen($head) > "CMS_VALUE[3]") {
            $head = substr($head, 0, "CMS_VALUE[3]");
            $head .= '..';
          }

          // link
          $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$selcat&idart=$linkID[$key]&m=$m&s=$s");

          /*echo '<tr><td colspan="2" class="text" height="22" style="border: 1px; border-top:0px; border-color: #F7C473; border-style: dashed; background-color: #FCF2D5; padding-left:10px"><a href="'.$link.'">'.urldecode($db->f("value")).'</a></td></tr>';*/
		  echo '<div class="navirightnews"><a href="'.$link.'">'.urldecode($db->f("value")).'</a></div>';
			
			
    } // end while



          unset($headline);
        unset($text);
        
    } // end foreach
	
    
} // end if (is_array)

//echo '</table><br>';


?>

<div class="navirightanderes">
	<h2>Rechtliches</h2>
	<a href="http://www.sitzenberg-reidling.gv.at/cms/front_content.php?idcat=106">Impressum</a>, 
	<a href="http://www.sitzenberg-reidling.gv.at/cms/front_content.php?idcat=109">Datenschutz</a></div>
<div class="navirightanderes">
	<h2>Anschrift</h2>
	Gemeinde Sitzenberg-Reidling<br />
	Hauptplatz 4<br />
	3454 Sitzenberg-Reidling<br />
	Tel: 02276 / 2241 - 0<br />
	Fax: 02276 / 2241 - 20
</div>
<div class="navirightanderes">
	<h2>Amtsstunden</h2>
	Mo, Do, Fr: 08 - 12 Uhr<br />
	Di: 08 - 12, 15 - 19 Uhr<br />
	Do: 13 - 17 Uhr
</div>
<div class="navirightanderes">
	<h2>Sprechstunden des B&uuml;rgermeisters</h2>
	Donnerstag, 18 - 19 Uhr
</div>
<div class="navirightanderes">
	<h2>Kontakt aufnehmen</h2>
	Bitte verwenden Sie unser <a href="http://www.sitzenberg-reidling.gv.at/cms/front_content.php?idcat=107">Kontaktformular</a>!
</div>
nun wollte ich mit einer while()-bedingung abchecken, dass nur die letzen 3 (datum absteigend) news angezeigt werden (betr. die rechte seite).

allerdings gelingt mir das nicht - kann mir jemand sagen, worum ich diese bedingung stricken muss? danke :)

Verfasst: Fr 28. Mai 2004, 12:59
von HerrB
Es dürfte ausreichen, dass erste Select-Statement um die Option LIMIT zu ergänzen. Wenn es nur die letzten 3 Artikel sein sollten, muss nach idart absteigend sortiert werden (schon vorhanden).

Code: Alles auswählen

// select all articles in category widthout start article 
$query = "SELECT ARTLANG.idart, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ". 
          $cfg["tab"]["art_lang"]." AS ARTLANG ". 
         "WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' AND ". 
         "ARTLANG.online = '1' ORDER BY CATART.idart DESC LIMIT 0,3"; 
idart ist aber keine so dolle Idee, wenn man mal Dinge dazwischen schieben möchte. Erzeugungs- als auch Änderungsdatum können auch nicht verwendet werden, da sie dabei nicht nützlich sein dürften.

Wir haben uns mit einem Artikeltitel (der in Contenido) beholfen, der die Sortierung übernimmt (z.B. "2004-05-24: Jetzt mit Reihenfolge" oder "001: Thema X"). Wenn man den nicht anzeigt, stört es keinen.

Code: Alles auswählen

// select all articles in category widthout start article 
$query = "SELECT ARTLANG.idart, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ". 
          $cfg["tab"]["art_lang"]." AS ARTLANG ". 
         "WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' AND ". 
         "ARTLANG.online = '1' ORDER BY ARTLANG.title, CATART.idart DESC LIMIT 0,3"; 
Damit lässt sich auch ein hervorragender Terminkalender basteln...

Gruß
HerrB