Avatar billede naquer Nybegynder
19. august 2011 - 09:43 Der er 10 kommentarer og
1 løsning

Mysql resultat til variabel

Hej,

Jeg har nedenstående MYSQL kode:

    $get_point = mysql_query("SELECT COUNT( * )  AS antal,
        CASE WHEN valid >  '2000-01-01'
        THEN  'expired'
        ELSE  'valid'
        END AS validation
        FROM  `Point`
        WHERE bruger='" .$_SESSION['login']. "'
        GROUP BY validation
        UNION SELECT COUNT( * ) AS antal ,  'lastweek' AS validation
        FROM Point
        WHERE WEEK( datoafleveret ) = WEEK( NOW( ) ) -1
        AND bruger ='" .$_SESSION['login']. "'");

Som resulterer i følgende output:

antal    validation
3          Expired
4          Valid
2          Lastweek

Nu ønsker jeg at generere 3 PHP variable som får følgende værdier:

$expired = 3
$valid = 4
$lastweek = 2

Hvordan er det muligt ud fra ovenstående?

På forhånd tak
Avatar billede jakobdo Ekspert
19. august 2011 - 10:07 #1
Kig evt. her: http://php.about.com/od/advancedphp/qt/build_variables.htm

Dog ville jeg nok bare smide data i et array.

Så kunne du lave:

$data = array();

$data['expired'] = 3;
$data['valid'] = 4;
$data['lastweek'] = 2;

Det tror jeg vil være en bedre løsning.
Avatar billede naquer Nybegynder
19. august 2011 - 10:13 #2
Tak for svaret.

Problemet er imidlertid at jeg ikke ønsker at hardcode 3, 4 og 2, da disse værdier vil være variable.

De skal altså få den værdi som mysql querien resulterer i.
Avatar billede michael_stim Ekspert
19. august 2011 - 10:18 #3
Men du har dem formodentlig allerede som variabler. I stedet for at echo'e dem, tildeler du bare et variabelnavn.

Hvordan ser de næste par linjer kode ud?
Avatar billede naquer Nybegynder
19. august 2011 - 10:30 #4
while($point_array = mysql_fetch_array($get_point)) {
        $number = $point_array['antal'];
        }

Jeg kan dog ikke se hvordan jeg kommer derfra til at lave

$expired = (antal hvor validation = expired)
$valid = (antal hvor validation = valid)
$lastweek =  (antal hvor validation = lastweek)
Avatar billede ggxdg Nybegynder
19. august 2011 - 10:39 #5
Jacobdo's forslag:

$expired = 3
$valid = 4
$lastweek = 2

while ($row = mysql_fetch_assoc($get_point)
{
  ${$row['validation']} = $row['antal'];
}

${'expired'}
${'valid'}
${'lastweek'}



while ($row = mysql_fetch_assoc($get_point)
{
  $data[$row['validation']] = $row['antal'];
}

$data['expired']
$data['valid']
$data['lastweek']
Avatar billede ggxdg Nybegynder
19. august 2011 - 10:46 #6
* der mangler en slut-parantes til at afslutte while *suk*
Avatar billede naquer Nybegynder
19. august 2011 - 10:48 #7
Fantastisk - det virker perfekt. Mange tak.

I smider bare et svar
Avatar billede ggxdg Nybegynder
19. august 2011 - 10:49 #8
Det var Jakobdos idé, jeg penslede det bare ud :P
Jakobdo får bare pointene.
Avatar billede jakobdo Ekspert
19. august 2011 - 10:51 #9
Takker ggxdg, godt teamwork og deler gerne point.
Og et svar. :o)
Avatar billede naquer Nybegynder
19. august 2011 - 10:59 #10
Nu får jakobdo pointene i første omgang - ggxdg du smider bare et svar også hvis du vil have point :)
Avatar billede jakobdo Ekspert
19. august 2011 - 11:01 #11
Takker for point.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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