news - begrenzung auf anzeige der neuesten 3

Gesperrt
prefix
Beiträge: 142
Registriert: So 16. Mai 2004, 10:40
Kontaktdaten:

news - begrenzung auf anzeige der neuesten 3

Beitrag 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 :)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag 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
Gesperrt