Page 2 of 2

Re: Aktualisierungsdatum der Seite ausgeben

Posted: Sun 24. Apr 2011, 12:45
by juergen
Ich hab mal ein wenig gegooglet ... schmeiss mal die auskommentierten Sachen alle raus, wenns dann geht dann liegts daran dass die regulären Ausdrücke auch auskommentiert mitgelesen werden ...

Re: Aktualisierungsdatum der Seite ausgeben

Posted: Sun 24. Apr 2011, 12:53
by flip-flop
Der oben gezeigte Fehler ist behoben. (Änderung der Abfrage ob Werte in der DB gefunden wurden).

Fehler bei Ergebnis = '--';

Code: Select all

	$my_date = (isset($result['0']['max_article_tstamp'])) ? $result['0']['max_article_tstamp']: '--';
Geändert nach:

Code: Select all

	$my_date = (isset($result['0']['max_article_tstamp'])) ? $result['0']['max_article_tstamp']: time();
Nun wird im Fehlerfall zumindest ein verwertbares Datum generiert (time().
Dieser Fehler war eine Folge des Grundsatzproblems auf diesem Server: Es werden keine Werte in der DB gefunden.

Also die DB-Abfrage scheint auf diesem Account nicht zu funktionieren:

Code: Select all

	$sql  = "SELECT article_id, UNIX_TIMESTAMP(max(article_tstamp)) AS max_article_tstamp, ";
	$sql .= "article_begin AS article_livedate, ";
	$sql .= "article_end AS article_killdate ";
	$sql .= "FROM ".DB_PREPEND."phpwcms_article ar LEFT JOIN ".DB_PREPEND."phpwcms_articlecat ac ON ";
	$sql .= "ar.article_cid = ac.acat_id WHERE ";
	// Categorie settings -------------
	$sql .= "ac.acat_aktiv=1 AND ac.acat_public=1 AND ac.acat_trash=0 AND ";
	
	// category: "hide" or "visible when active" 
	$sql .= "ac.acat_hidden=0 AND ";		// "hide" or "visible when active"

	$sql .= "ac.acat_regonly=0 AND ";					// "visible for users logged on only"
	// Article settings ---------------
	$sql .= "ar.article_public=1 AND ar.article_aktiv=1 AND ";	

	// Article settings
	$sql .= "ar.article_deleted=0 AND ar.article_begin<NOW() ";
	$sql .= "AND IF(ac.acat_archive=1 AND ar.article_archive_status=1, 1, ar.article_end>NOW()) LIMIT 1";
	
	$result = _dbQuery($sql);
Knut

Re: Aktualisierungsdatum der Seite ausgeben

Posted: Mon 25. Apr 2011, 17:19
by flip-flop
Grundsatzproblems gelöst.

Einige DBs erlauben (noch) keine Unterabfrage direkt im SELECT Ausdruck "max(article_tstamp)". So etwas müsste dann mit einer separate Unterabfrage nach dem WHERE generiert wird.
Daher rührte der Fehler.

Das Script ist soweit abgeändert, dass zumindest DBs der Sorte 5.X abgefragt werden können. hierdurch entfällt die Möglichkeit andere Felder des getroffenen Artikels ausgeben zu können z.B. die ID des Artikels.
Für den hier geforderten Anwendungsfall ist dies jedoch nicht wichtig.

Code: Select all

	$sql  = "SELECT UNIX_TIMESTAMP(max(article_tstamp)) AS max_article_tstamp ";
	// Nur fuer MySQL Engines geeignet die auch im SELECT Unterabfragen unterstuetzen 
	// Only suitable for MySQL Engines that also support subqueries in SELECT statement
/*
	$sql .= ",article_id, ";
	$sql .= "article_begin AS article_livedate, ";
	$sql .= "article_end AS article_killdate ";
*/
	$sql .=	"FROM ".DB_PREPEND."phpwcms_article ar LEFT JOIN ".DB_PREPEND."phpwcms_articlecat ac ON ";
....
Knut

Re: Aktualisierungsdatum der Seite ausgeben

Posted: Mon 25. Apr 2011, 17:33
by Uwe367
Mensch Knut....

1000 Dank.. :D
Ich weiß gar nicht was ich sagen soll...
Danke, Danke, Danke...