Avatar billede christian-BN Praktikant
31. maj 2009 - 17:49 Der er 2 kommentarer og
1 løsning

return $array[foo]

Hej, jeg har lidt problemer med et array som gør vrøvl.
hvad jeg gerne vil er at hente en del af array og indsætte det i en funktion for derefter at sætte det tilbage i array.
Kort fortalt har jeg brugt strtotime og skal have det lavet om fra til dato igen.

public function kommendeJobs()
    {
        $array = array();
        $dato = strtotime(date('l j F Y'));
       
        $kontaktInfo = "kontaktinfo.kontakt, kontaktinfo.firma,  kontaktinfo.email";
        $jobs = "jobs.dato";
       
        // Joiner  kontaktinfo-tabel og job-tabel
        $search = mysql_query("SELECT $kontaktInfo,$jobs FROM kontaktinfo, jobs WHERE jobs.dato > $dato");
        while($row = mysql_fetch_array($search))
        {
            $array[] = $row;
            return $array;
        }
        // return array;
    }

Jeg vil så gerne hente det punkt jobs.dato fra array'et indsætte det i en funktion som omregner det til en dato og dereftter indsætte den nye dato istedet for jobs.dato. - giver det mening?

eks.
array #0
{
    [dato] "1355266800"
    [email] "christoffer@test.dk"
    [firma] "DONG"
    [kontakt] "Christoffer"
}

Hvor dato værdien som omregnes til en reel dato. Hvordan gør man det?  jeg har forsøgt at bruge $array["dato"]; men output er null.

function omregnetDato($sek)
    {
    $tide = gmstrftime("%Y/%m/%d",$sek);
    preg_match('/(\d\d?)[^\w](\d\d?)[^\w](\d{1,4})/', $tide, $match);
    $months = array(null, 'Januar', 'Februar', 'Marts', 'April', 'Maj', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'December');
        unset($months[0]);
       
        ksort($months);
        foreach ($months as $key => $val) {
            if ($match['2'] == $key) {
                $match[2] = $val;
                $y = $match[3] . '. ' . $match[2] . ' - 20' . $match[1]; // fra pregmatch
                }
        }

        return $y;
    }
Avatar billede ebusiness Nybegynder
31. maj 2009 - 18:11 #1
Det du har gjort er at oprette et array og så fylde det array som du får fra din SQL forespørgsel ind i element 0 i det array.

Din kommendeJobs() funktion skal bare returnere arrayet $row.
Avatar billede christian-BN Praktikant
31. maj 2009 - 18:39 #2
Er lidt småforvirret, er lige begyndt at dele alt op i klasser og og gemme i forskellige dokumenter.
Hvis nu jeg laver

$array[] = omregnetDato($row['dato']);
$array[] = $row;

burde det så ikke du? Samtidig så brokker den sig over at funktionen omregnetDato ikke er defineret, men den ligger i et Dato.php dokument inde i en klasse jeg har navngivet Dato, og den bliver bare inkluderet som en hver anden fil. include 'Dato.php';

Fulde kode:
public function kommendeJobs()
    {
        include 'Dato.php';
       
        $array = array();
        $dato = strtotime(date('l j F Y'));
       
        $kontaktInfo = "kontaktinfo.kontakt, kontaktinfo.firma,  kontaktinfo.email";
        $jobs = "jobs.dato";
       
        // Joiner  kontaktinfo-tabel og job-tabel
        $search = mysql_query("SELECT $kontaktInfo,$jobs FROM kontaktinfo, jobs WHERE jobs.dato > $dato");
        while($row = mysql_fetch_array($search))
        {
            $array[] = omregnetDato($row['dato']);
            $array[] = $row;
            return $array;
        }
        // return array;
    }
Avatar billede ebusiness Nybegynder
31. maj 2009 - 19:52 #3
Det vil nok generelt være pænest at du holder din include udenfor funktionen.

Det ser ikke ud til at du har forstået hvordan arrays virker, men det som du vil er vist således:

include 'Dato.php';
public function kommendeJobs()
    {
        $dato = strtotime(date('l j F Y'));
     
        $kontaktInfo = "kontaktinfo.kontakt, kontaktinfo.firma,  kontaktinfo.email";
        $jobs = "jobs.dato";
     
        // Joiner  kontaktinfo-tabel og job-tabel
        $search = mysql_query("SELECT $kontaktInfo,$jobs FROM kontaktinfo, jobs WHERE jobs.dato > $dato");
        while($row = mysql_fetch_array($search))
        {
            $row['dato'] = omregnetDato($row['dato']);
            return $row;
        }
        // return array;
    }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester