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

Reply via email to