Re: PHP sort from a database variable..?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



i think this one should now work.

remember that this is no very proper solution! it would be better not to
work with such functions and access the database directly i think.

.ma 

<?php
include "pubSysDB.lib";

//Klasse som henter ut all relevant informasjon om en ingress og presenterer det som et oversiktlig objekt. Sparer brukeren for mye logikk og spørringer.
//Denne er ikke optimalisert ennå.
class Ingress{

	var $gyldig;		//"1" hvis dette er en konsistent ingress, "0" hvis det er prolemer som gjør at ingressen ikke kan vises.
	var $feil;		//Dersom gyldig er "0" finnes feilmeldingene her, separert med ;

	var $artikkelid;	//ID til den artikkelen som ingressen er ingress for
	var $nettstedid;	//ID til dette nettstedet
	var $artikkellink;	//Link til selve artikkelen
	var $overskrift;	//Overskriften i ingressen
	var $forfatternavn;	//Navn på forfatteren
	var $forfatterlink;	//Link til side med info om forfatteren
	var $ingress;		//Selve teksten i ingressen
	var $publisert;		//Dato da artikkelen ble publisert
	var $publisertLang;	//Dato da artikkelen ble publisert, på format yyyymmddhhmmss
	var $bilde;		//URL til ingress-bildet

	function Ingress($artikkelid,$nettstedid){
		$this->artikkelid = $artikkelid;
		$this->nettstedid = $nettstedid;
		$db = new pubSysDB();
/* Kommenterte ut dette, bevart intakt. Eneste forskjellen er at man MÅ sjekke om artikkelen er publisert eller ikke! ----------------------
		$db->query("SELECT i.overskrift, i.ingress, i.publisert, i.bilde, b.fornavn, b.etternavn, a.artikkeltypeid
			FROM Ingress i ,Artikkel a, Bruker b, Artikkeltype t
			WHERE i.artikkelid=$this->artikkelid
			AND i.nettstedid=$this->nettstedid
			AND i.artikkelid=a.artikkelid
			AND i.nettstedid=a.nettstedid
			AND a.forfatterid = b.brukerid
			AND a.artikkeltypeid = t.artikkeltypeid
			LIMIT 1");
---------------------------------------------------------------*/
		$db->query("SELECT i.overskrift, i.ingress, i.publisert, i.bilde, b.fornavn, b.etternavn, a.artikkeltypeid, DATE_FORMAT(i.publisert,'%Y%m%d%H%i%S') publisertLang
			FROM Ingress i ,Artikkel a, Bruker b, Artikkeltype t
			WHERE i.artikkelid=$this->artikkelid
			AND i.nettstedid=$this->nettstedid
			AND i.artikkelid=a.artikkelid
			AND i.nettstedid=a.nettstedid
			AND a.forfatterid = b.brukerid
			AND a.artikkeltypeid = t.artikkeltypeid
			AND i.publisert IS NOT NULL
			LIMIT 1");
		if($db->num()){
			$row = $db->fetch();
			$this->gyldig=1;
			$this->overskrift = $row->overskrift;
			$this->artikkellink = "art.php?artikkelid=".$this->artikkelid;
			$this->forfatternavn = $row->fornavn." ".$row->etternavn;
			$this->forfatterlink = "http://www.ikke.no/";;
			$this->ingress = $row->ingress;
			$publisert = explode(' ',$row->publisert);
		        $publisert = explode('-',$publisert[0]);
			$this->publisertLang = $row->publisertLang;
			$this->publisert = $publisert[0].' '.$publisert[2].'/'.$publisert[1];
			$this->bilde = $row->bilde;
			$this->artikkeltypeid = $row->artikkeltypeid;
		}else{
			$this->gyldig=0;
			$this->feil .= "Ingressen finnes ikke idatabasen;";
		}
	}
}

//Returnerer et array med de siste $antall artikler fra og med $offset fra $nettstedid, sortert med den nyeste først.
//(Offset er med for at man lett skal kunne lage neste 50 / forrige 50 linker i fremvisningen.
//
//INN - nettstedid til nettstedet man vil liste ingresser til, hvilket sprÃ¥k man vil ha ingresser pÃ, antall ingresser man vil hente, og offset i disse
//UT - 0 hvis problem oppstod, array med Ingressobjekter hvis alt gikk i orden
function hentIngresser($nettstedid,$typeid,$sprakid,$offset,$antall){
	$arr = Array();
	$db = new pubSysDB();
	if($typeid==0)
		$db->query("SELECT artikkelid FROM Ingress WHERE nettstedid=$nettstedid AND sprakid=$sprakid ORDER BY publisert DESC LIMIT $offset,$antall");
	else
		$db->query("SELECT i.artikkelid FROM Ingress i, Artikkel a WHERE i.artikkelid = a.artikkelid AND a.artikkeltypeid=$typeid AND i.nettstedid=$nettstedid AND i.sprakid=$sprakid ORDER BY i.publisert DESC LIMIT $offset,$antall");
	if($db->num()){
		while($row = $db->fetch()){
			$arr[] = new Ingress($row->artikkelid,$nettstedid);
		}
		return $arr;
	}else{
		return 0;
	}
}

	// converts any array to an instance of the ingress-class
	function array2IngressClass($array)
	{
		$inst = new Ingress2();
		while(list($key, $val) = each($array))
			$inst->$key = $val;
		return $inst;
	}
	
	// converts any class into an array
	function class2Arr($class)
	{
		return (array)$class;
	}
	
	// sorts arrays comeing from hentIngresser() descending
	function sortClassArray($array)
	{
		$arr = array();
		$sArr = array();
		foreach($array as $ent)
		{
			$arr[] = class2Arr($ent);
			$sArr[] = $ent->publisertLang;
		}
		
		array_multisort($arr, SORT_DESC, $sArr);
		
		$cM = count($arr);
		for($c = 0; $c < $cM; $c++)
			$arr[$c] = array2IngressClass($arr[$c]);
		
		return $arr;
	}
	
	// dummy-class to allow converting from array to class
	class Ingress2
	{
		var $gyldig;		//"1" hvis dette er en konsistent ingress, "0" hvis det er prolemer som gjør at ingressen ikke kan vises.
		var $feil;		//Dersom gyldig er "0" finnes feilmeldingene her, separert med ;
		var $artikkelid;	//ID til den artikkelen som ingressen er ingress for
		var $nettstedid;	//ID til dette nettstedet
		var $artikkellink;	//Link til selve artikkelen
		var $overskrift;	//Overskriften i ingressen
		var $forfatternavn;	//Navn på forfatteren
		var $forfatterlink;	//Link til side med info om forfatteren
		var $ingress;		//Selve teksten i ingressen
		var $publisert;		//Dato da artikkelen ble publisert
		var $publisertLang;	//Dato da artikkelen ble publisert, på format yyyymmddhhmmss
		var $bilde;		//URL til ingress-bildet
	}
?>
-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux