Avatar billede zac Nybegynder
10. november 2005 - 16:15 Der er 5 kommentarer og
1 løsning

En lille syntaks ting: Række fra query ind i array som streng

Jeg har stort set fået PHP programmet PHPlot, som tegner grafer, til at virke.
Fx tre aldersgrupper 0-29, 30-59, 60-89 ud af x-axen, og på y-axen deres antal i befolkningen i 1900, 1950, 2000.
Bortset fra, at jeg ikke kan få skrevet aldergrupperne under x-axen - min fornemmelse for PHPs syntaks svigter...

I en MySQL query er denne her linie i en while løkke:
$data[] = array('label',$row[1],$row[2],$row[3]);
$row[1], [2] og [3] bliver til y-værdierne (aldergrupperne), 3 søjler over hver aldersgruppe på x-axen.

Problemet er så: På x-axen skal der mærkes med tallene 0-29, 30-59, 60-89, jf. 'label', og de skal hentes fra $row[0] (hvor de faktisk er, kan godt printes alene).

Hvordan får jeg $row[0] ind som label i 'label'?

Det går ikke at skrive
$data[] = array('$row[0]',$row[1],$row[2],$row[3]); - så kommer der blot til at stå $row[0] under x-axen for hvert talsæt.
Avatar billede zac Nybegynder
10. november 2005 - 16:17 #1
for at gøre det helt klart: "bliver til y-værdierne (aldergrupperne).." betyder y-værdierne for de pågældende aldergrupper.
Avatar billede bromer Nybegynder
10. november 2005 - 16:18 #2
Hvorfor har du en quote omkring dette:

data[] = array('$row[0]',$row[1],$row[2],$row[3]);

Burde det ikke bare være

data[] = array($row[0],$row[1],$row[2],$row[3]);

eller er der noget i dit system jeg har misforstået?
Avatar billede zac Nybegynder
10. november 2005 - 16:29 #3
Det er programmet PHPlot, som angiver det. Der kan vælges mellem forskellige slags datasæt, og det, der hedder text-data har på første plads 'label' (imellem enkelte '), som skal bruges, når det ikke er en "normal" x-værdi, man har med at gøre (men fx som her et interval). Pladserne derefter angiver y-værdierne.

Skrevet helt ud, kunne et exempel være:
$data = array(
  array('Jan', 40, 2, 4), array('Feb', 30, 3, 4), array('Mar', 20, 4, 4),
  array('Apr', 10, 5, 4), array('May',  3, 6, 4), array('Jun',  7, 7, 4),
  array('Jul', 10, 8, 4), array('Aug', 15, 9, 4), array('Sep', 20, 5, 4),
  array('Oct', 18, 4, 4), array('Nov', 16, 7, 4), array('Dec', 14, 3, 4),
);

Problemet er så, at jeg gerne vil bruge MySQL til at hente data ud, og 'label' skal så bygge på $row[0].

Der er en anden datatype, data-data, hvor $data[] = array('label', $row[0],$row[1],$row[2],...); - hvor $row[0] (eller rettere første plads efter 'label' er en bestemt x-værdi, og de næste pladser igen y-værdier.
Avatar billede zac Nybegynder
10. november 2005 - 16:31 #4
man kan også lade 'label' stå tom som '' - vil typisk være tilfældet i den sidst nævnte datatype data-data, hvor der jo eksplicit angives en bestemt x-værdi på 2. plads i array'et.
text-data: array('label', y1, y2,...)
data-dat: array('label', x, y1, y2,...)
Avatar billede zac Nybegynder
10. november 2005 - 20:09 #5
Har fået det til at virke ved at udelade '' omkring plads for label...
$data[] = array($row[0],$row[1],$row[2],$row[3],$row[4],$row[5]); - er fin, synes bare ikke, det virkede i første omgang.
Point bromer? du ledte mig mindst på vej!
Avatar billede zac Nybegynder
05. januar 2006 - 17:21 #6
lukker...
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