[PHP-DB] PHP sort from a database variable..?

2003-06-04 Thread A. Lyse
Please dont kill me for posting here. I dont know where else to post. I'm a
newbie and is completly stuck with a php problem :(

I got this code (among with more though...):

***
$i1=hentIngresser($nettstedid,38,$sprakid,$offsetannet,$antallmotor);
$i2=hentIngresser($nettstedid,39,$sprakid,$offsetannet,$antallmotor);


 if($ingresser = array_merge($i1 ,$i2))
  listIngresser($ingresser);


else
 echo 'Det oppstod en feil ved henting av ingresser.';
**

This code produce the article feeds on this site:
http://www.amotor.no/artikler.php

The articles are feeded from $i1 and $i2, but as you can see on the dates
the newest article does not come first (the code first lists the $i1 THEN
$i2) but what I want is to get the newest on date first, then older and
older.

I talked to the owner of the script and he said that he had a variable named
$publisertLang; //Publish date of the article in  format: mmddhhmmss
He said I could sort the $ingresser (the merged $i1 and $i2) with the
$publisertLand as parameter on listIngresser, but the problem I dont know
how to do that. I've looked through php.net and tryed all sort commands I've
found.

Can somebody please help me?

P.S Excuse my bad English. It's not my native language.

Regards,
A. Lyse



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DB] PHP sort from a database variable..?

2003-06-04 Thread heilo
hi!

we need information about how the array looks like!

please add the following to your script (after merging $i1 and $i2):

echo 'pre';
print_r($ingresser);
echo '/pre';

and send the resulting output!
you can use array_multisort for this problem. anyways i propose to write
your own news-tool. sorting is really easy if you use SQL - if you cant code
one yourselve i would ask the programmer of this newsmodule to add a
sort-parameter to his functions.

.ma


A. Lyse [EMAIL PROTECTED] [EMAIL PROTECTED] 23:23 Uhr:

 Please dont kill me for posting here. I dont know where else to post. I'm a
 newbie and is completly stuck with a php problem :(
 
 I got this code (among with more though...):
 
 ***
 $i1=hentIngresser($nettstedid,38,$sprakid,$offsetannet,$antallmotor);
 $i2=hentIngresser($nettstedid,39,$sprakid,$offsetannet,$antallmotor);
 
 
 if($ingresser = array_merge($i1 ,$i2))
 listIngresser($ingresser);
 
 
 else
 echo 'Det oppstod en feil ved henting av ingresser.';
 **
 
 This code produce the article feeds on this site:
 http://www.amotor.no/artikler.php
 
 The articles are feeded from $i1 and $i2, but as you can see on the dates
 the newest article does not come first (the code first lists the $i1 THEN
 $i2) but what I want is to get the newest on date first, then older and
 older.
 
 I talked to the owner of the script and he said that he had a variable named
 $publisertLang; //Publish date of the article in  format: mmddhhmmss
 He said I could sort the $ingresser (the merged $i1 and $i2) with the
 $publisertLand as parameter on listIngresser, but the problem I dont know
 how to do that. I've looked through php.net and tryed all sort commands I've
 found.
 
 Can somebody please help me?
 
 P.S Excuse my bad English. It's not my native language.
 
 Regards,
 A. Lyse
 



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DB] PHP sort from a database variable..?

2003-06-04 Thread A. Lyse
Hope I did this correctly now :) It is a new, home made news - system,
only I want some new functions to it. I must make the functions myself then
:(

Here is the info:
Array
(
[0] = ingress Object
(
[artikkelid] = 241
[nettstedid] = 11
[gyldig] = 1
[overskrift] = motorsport formel1
[artikkellink] = art.php?artikkelid=241
[forfatternavn] = Aleksander Lyse
[forfatterlink] = http://www.ikke.no/
[ingress] = Formel1
[publisertLang] = 20030530135301
[publisert] = 2003 30/05
[bilde] =
[artikkeltypeid] = 38
)

[1] = ingress Object
(
[artikkelid] = 197
[nettstedid] = 11
[gyldig] = 1
[overskrift] = Motorsportartikkel 5
[artikkellink] = art.php?artikkelid=197
[forfatternavn] = Aleksander Lyse
[forfatterlink] = http://www.ikke.no/
[ingress] = Her kommer det en nyhet fra enten trimme eller
styling seksjonen. Problemet er vi må ha noe på noen av seksjonene før vi
kan gjøre det :p Jeg skriver dette bare for å fylle ut denne ingressen som
normalt skal være fem linjer lang. Spørsmålet blir om jeg klarer hele fem
linjer, og det ser ut til jeg klarte!
[publisertLang] = 20030528201117
[publisert] = 2003 28/05
[bilde] =
http://www.amotor.no/styling/artikler/ingressbilder/2f2f.jpg
[artikkeltypeid] = 38
)

[2] = ingress Object
(
[artikkelid] = 196
[nettstedid] = 11
[gyldig] = 1
[overskrift] = Motorsportartikkel 4
[artikkellink] = art.php?artikkelid=196
[forfatternavn] = Aleksander Lyse
[forfatterlink] = http://www.ikke.no/
[ingress] = Vi kan stolt vise fram vårt økende galleri. Vår
medarbeider Jahan Narui har nå oppdatert Audi delen av galleriet vårt.
Galleriet inneholder nå en stor oversikt over Audi biler og merker. Ta en
titt da og legg inn noen kommentarer på bildene om ønskelig. Flere seksjoner
kommer også til å bli oppdatert om ikke så veldig lenge. Følg med!
[publisertLang] = 20030528201114
[publisert] = 2003 28/05
[bilde] =
http://www.amotor.no/nyheter/mai03/ingressbilder/audis4.jpg
[artikkeltypeid] = 38
)

[3] = ingress Object
(
[artikkelid] = 195
[nettstedid] = 11
[gyldig] = 1
[overskrift] = Motorsportartikkel 3
[artikkellink] = art.php?artikkelid=195
[forfatternavn] = Aleksander Lyse
[forfatterlink] = http://www.ikke.no/
[ingress] = Plass til fem, ekstra komfort for fire eller
varebil? Med Opel Meriva har du mange muligheter. På grunn av lang
akselavstand, har Meriva et rommelig interiør innenfor et kompakt karosseri.
Et fleksibelt setesystem og mange smarte detaljer gjør Opel Meriva ekstra
brukervennlig.
[publisertLang] = 20030528194942
[publisert] = 2003 28/05
[bilde] =
http://www.amotor.no/nyheter/mai03/ingressbilder/16.jpg
[artikkeltypeid] = 38
)

[4] = ingress Object
(
[artikkelid] = 194
[nettstedid] = 11
[gyldig] = 1
[overskrift] = Motorsportartikkel 2
[artikkellink] = art.php?artikkelid=194
[forfatternavn] = Aleksander Lyse
[forfatterlink] = http://www.ikke.no/
[ingress] = fsdfsdfsdfsadfsadfsd
[publisertLang] = 20030528194839
[publisert] = 2003 28/05
[bilde] =
http://www.amotor.no/nyheter/mai03/ingressbilder/c2sport.jpg
[artikkeltypeid] = 38
)

[5] = ingress Object
(
[artikkelid] = 190
[nettstedid] = 11
[gyldig] = 1
[overskrift] = Motorsportartikkel 1
[artikkellink] = art.php?artikkelid=190
[forfatternavn] = Aleksander Lyse
[forfatterlink] = http://www.ikke.no/
[ingress] = Dette er en motorsportnyhettest :) Vi prøver oss
vettu :)
[publisertLang] = 20030528184057
[publisert] = 2003 28/05
[bilde] =
http://www.amotor.no/motorsport/rally/mai03/ingressbilder/solgergargentina3.
jpg
[artikkeltypeid] = 38
)

[6] = ingress Object
(
[artikkelid] = 242
[nettstedid] = 11
[gyldig] = 1
[overskrift] = Motor rally
[artikkellink] = art.php?artikkelid=242
[forfatternavn] = Aleksander Lyse
[forfatterlink] = http://www.ikke.no/
[ingress] = rally
[publisertLang] = 20030530135302
[publisert] = 2003 30/05
[bilde] =
[artikkeltypeid] = 39
)

[7] = ingress Object
(
[artikkelid] = 213
  

Re: [PHP-DB] PHP sort from a database variable..?

2003-06-04 Thread heilo
sorry, needed some time to hack this one ::)

as your print_r shows that you have to sort an array which includes objects
(in this case an ingress-class - whatever this is). i tried to simulate your
environement and endet up with this:

function array2IngressClass($array)
{
$inst = new ingress();
while(list($key, $val) = each($array))
$inst-$key = $val;
return $inst;
}

function class2Arr($class)
{
return (array)$class;
}

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;
}

/***/

$i1 = hentIngresser($nettstedid,38,$sprakid,$offsetannet,$antallmotor);
$i2 = hentIngresser($nettstedid,39,$sprakid,$offsetannet,$antallmotor);


if($ingresser = array_merge($i1 ,$i2))
{
$ingresser = sortClassArray($ingresser);
listIngresser($ingresser);
}
else
echo 'Det oppstod en feil ved henting av ingresser.';

/***/

does this work? if not which errors occour??

.ma


-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DB] PHP sort from a database variable..?

2003-06-04 Thread A. Lyse
I get this error:

Fatal error: Call to undefined function: sortclassarray() in
/home/amotor/www/list_ingresser_artikler.php on line 25

Regards,
A. Lyse



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DB] PHP sort from a database variable..?

2003-06-04 Thread heilo
did you also copy the functions?

A. Lyse [EMAIL PROTECTED] [EMAIL PROTECTED] 0:40 Uhr:

 I get this error:
 
 Fatal error: Call to undefined function: sortclassarray() in
 /home/amotor/www/list_ingresser_artikler.php on line 25
 
 Regards,
 A. Lyse
 



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DB] PHP sort from a database variable..?

2003-06-04 Thread A. Lyse
This might helt some:

The php file: http://www.amotor.no/list_ingresser_artikler.php

The ingress.lib file: http://www.amotor.no/ingress.lib

The comments might be a bit weird. Its norwegian :(

Regards,
A. Lyse



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DB] PHP sort from a database variable..?

2003-06-04 Thread A. Lyse
Here is the php file

***
?php
//Dette er en mal for å lette implementering av pusyset til de enkelte
sider.
//Denne malen viser ingressene til de 50 siste artikler denne siden skal ha.
include ../lib/ingress.lib;

$nettstedid=11; //Id til nettstedet. Dersom man ikke husker sin nettstedid
finnes den i admindelen av pubsyset.
$sprakid=1; //Språkid. 1=Norsk
$offset=0; //Offset, dersom man ikke skal vise fra artikkel 0, men f.eks.
fra artikkel 51.
$offset3ingr=2; //Offset, dersom man ikke skal vise fra artikkel 0, men
f.eks. fra artikkel 51.
$offsetannet=1; //Offset, dersom man ikke skal vise fra artikkel 0, men
f.eks. fra artikkel 51.
$antall=50; //Hvor mange artikler skal vises
$antallmotor=25; //Hvor mange artikler skal vises på motorsport
$antallmotor3ingresser=3; //Hvor mange artikler skal vises videre på
motorsport
$antallmc=1; //Hvor mange artikler skal vises på MC
$antallmc3ingresser=3; //Hvor mange artikler skal vises videre på MC
$antallstyling=1; //Hvor mange artikler skal vises på MC
$antallstyling3ingresser=3; //Hvor mange artikler skal vises videre på MC
$typeid=0; //Hva slags ingresser skal vises? 0 viser alle typer.
$i1 = hentIngresser($nettstedid,38,$sprakid,$offsetannet,$antallmotor);
$i2 = hentIngresser($nettstedid,39,$sprakid,$offsetannet,$antallmotor);


if($ingresser = array_merge($i1 ,$i2))
{
$ingresser = sortClassArray($ingresser);
listIngresser($ingresser);
}


else
 echo 'Det oppstod en feil ved henting av ingresser.';

function listIngresser($ingresser){
 foreach($ingresser as $i){

  echo '
  tr
  td width=100% align=left bgcolor=#ebe8e4  a
href='.$i-artikkellink.' img class=lesmer
src=/bilder/design/lesmer.gif width=61 height=19 align=right
  b a class=forsidelinker
href='.$i-artikkellink.''.$i-overskrift.'/a /b
  nbsp;nbsp;b class=dato('.$i-publisert.')/b

/tr /td
tr
td height=121 class=ingresshoved
a href='.$i-artikkellink.'img class=bilde src=' . $i-bilde . '
width=100 height=76 border=1 align=right/a
/font'.$i-ingress.'

tr td align=left width=100% bgcolor=#f4f4f4 p
/p /td '
   ;


 }
}



?



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DB] PHP sort from a database variable..?

2003-06-04 Thread heilo
ok, add the following lines to your ingress.lib-file:

/***/
// converts any array to an instance of the ingress-class
function array2IngressClass($array)
{
$inst = new ingress();
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;
}


-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DB] PHP sort from a database variable..?

2003-06-04 Thread A. Lyse
Almoust now!

Got some (alot of errors) but it sorts correct: (see the errors here)
http://www.amotor.no/artikler.php

Here is altso the PubSysDB: http://www.amotor.no/pubSysDB.lib

Regards,
A. Lyse



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DB] PHP sort from a database variable..?

2003-06-04 Thread heilo
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 
mmddhhmmss
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 

Re: [PHP-DB] PHP sort from a database variable..?

2003-06-04 Thread A. Lyse
It worked. Thanx!

Why is this a bad solution? Will it slow down the feed?

Regards,
A. Lyse



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



RE: [PHP-DB] PHP sort from a database variable..?

2003-06-04 Thread Ford, Mike [LSS]
 -Original Message-
 From: heilo [mailto:[EMAIL PROTECTED]
 Sent: 03 June 2003 23:35
 
 sorry, needed some time to hack this one ::)
 
 as your print_r shows that you have to sort an array which 
 includes objects
 (in this case an ingress-class - whatever this is). i tried 
 to simulate your
 environement and endet up with this:

This looks a bit like a sledgehammer to crack a nut -- why not just use
usort, like this:

   function obj_date_compare($a, $b) {
  return strcmp($a-publisertLang, $b-publisertLang);
   }

   ...

   if($ingresser = array_merge($i1 ,$i2))
   {
  $ingresser = usort($ingresser, 'obj_date_compare');
  listIngresser($ingresser);
   }

Cheers!

Mike

-
Mike Ford,  Electronic Information Services Adviser,
Learning Support Services, Learning  Information Services,
JG125, James Graham Building, Leeds Metropolitan University,
Beckett Park, LEEDS,  LS6 3QS,  United Kingdom
Email: [EMAIL PROTECTED]
Tel: +44 113 283 2600 extn 4730  Fax:  +44 113 283 3211 

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DB] PHP sort from a database variable..?

2003-06-04 Thread heilo
wow!

thats a much more elegant way to solve this sorting problem!
didn't know usort up to now!

simplebeautiful !! :)

.ma

Ford, Mike   [LSS] [EMAIL PROTECTED] [EMAIL PROTECTED] 11:18
Uhr:

 -Original Message-
 From: heilo [mailto:[EMAIL PROTECTED]
 Sent: 03 June 2003 23:35
 
 sorry, needed some time to hack this one ::)
 
 as your print_r shows that you have to sort an array which
 includes objects
 (in this case an ingress-class - whatever this is). i tried
 to simulate your
 environement and endet up with this:
 
 This looks a bit like a sledgehammer to crack a nut -- why not just use
 usort, like this:
 
  function obj_date_compare($a, $b) {
 return strcmp($a-publisertLang, $b-publisertLang);
  }
 
  ...
 
  if($ingresser = array_merge($i1 ,$i2))
  {
 $ingresser = usort($ingresser, 'obj_date_compare');
 listIngresser($ingresser);
  }
 
 Cheers!
 
 Mike
 
 -
 Mike Ford,  Electronic Information Services Adviser,
 Learning Support Services, Learning  Information Services,
 JG125, James Graham Building, Leeds Metropolitan University,
 Beckett Park, LEEDS,  LS6 3QS,  United Kingdom
 Email: [EMAIL PROTECTED]
 Tel: +44 113 283 2600 extn 4730  Fax:  +44 113 283 3211 


-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php