resultaat naar Array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Mar kla

mar kla

31/07/2013 14:54:32
Quote Anchor link
ten eerste excuus voor mijn domheid maar ik ben nu al 1.5 dag bezig maar ik kom er niet uit. En misschien is het heel simpel maar zie ik door de code de oplossing niet meer;

wat is het probleem:
In mijn database staab wedstrijden met bezoekers aantallen


ik doe een
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
select
...
t.TeamName_Short as guestteam,
g.Attendance as attendence,
.....


attendence heeft dan als resultaat 10200,10056,14009,9889,10008,10340,10129..........
guestteam heeft dan als resultaat zwo,utr,aja,twe,fey............
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Dit resultaat wil ik met jpgraph in een bargraph zetten
daarbij doe ik:

<?php
while($record =  mysql_fetch_assoc($result_homeattendence))
{

    $valueY = array($record[attendence]);
    $valueX = array($record['guestteam']);
}


echo $valueY.'<br>';
echo $valueX;
?>



dit geeft als resultaat

14273
gra

Maar ik wil graag:
 ("10200","10056","14009","9889","10008","10340","10129","....)
en ("zwo","utr","aja","twe","fey","........)
hebben

welicht is het antwoord/oplossing heel simpel maar is zit even vast :-(
 
PHP hulp

PHP hulp

29/03/2024 05:42:10
 
Erwin H

Erwin H

31/07/2013 15:14:24
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$valueX
= array();
$valueY = array();
while($record =  mysql_fetch_assoc($result_homeattendence))
{

    $valueY[] = $record['attendence'];
    $valueX[] = $record['guestteam'];
}


print_r($valueY);
echo '<br>';
print_r($valueX);
?>

En dan ga ik er verder vanuit dat je weet hoe te werken met arrays (en loops) en dat print_r dus alleen voor de demo is.
Gewijzigd op 31/07/2013 15:19:05 door Erwin H
 
Mar kla

mar kla

31/07/2013 15:48:06
Quote Anchor link
Erwin

bedankt voor je reactie.

Maar ...ik snap dus geen bal van hoe ik de data uit mijn kolommen attendence en guestteam in de $valueX[] en $valueY[] krijg

Gisteren had ik wel "iets" wat er op leek, maar dat zag er zo uit

(1020010056140099889100081034010129)
en
(zwoutrajatwefey)
dus geen separator tussen de waardes

IK ben nu even de weg kwijt :-(
 
NOLot -

NOLot -

31/07/2013 16:14:05
Quote Anchor link
mysql_* is trouwens deprecated, niet gebruiken! En je kunt altijd var_dump proberen om uit te vogelen wat je moet doen om waarden te vinden
 
Erwin H

Erwin H

31/07/2013 16:18:10
Quote Anchor link
Dit is het definieren van een array:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$valueX
= array();
?>

Dit is een waarde toevoegen aan een array:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$valueY
[] = $record['attendence'];
?>

Wat begrijp je dan nog niet?
Na afloop van je while loop is $valueX een array met daarin alle waardes uit de kolom attendance.
 
Mar kla

mar kla

31/07/2013 16:22:44
Quote Anchor link
Erwin.

Klopt, nu heb ik inderdaad data in de array staan:

Array ( [0] => 10200 [1] => 10056 [2] => 14009 [3] => 9889 [4] => 10008 [5] => 10340 [6] => 10129 [7] => 9134 [8] => 10938 [9] => 8254 [10] => 8298 [11] => 11857 [12] => 12140 [13] => 10577 [14] => 10330 [15] => 10000 [16] => 11231 )
Array ( [0] => rkc [1] => gro [2] => aja [3] => utr [4] => wii [5] => aza [6] => psv [7] => zwo [8] => nec [9] => rod [10] => nac [11] => hee [12] => her [13] => vit [14] => twe [15] => vvv [16] => fey )

maar ik snap nog niet hoe ik de inhoud van de array naar het gewenste formaat

("10200","10056","14009","9889","10008","10340","10129","....) kan krijgen
 
Kris Peeters

Kris Peeters

31/07/2013 16:29:52
Quote Anchor link
Als niemand met iets korter* komt ... dit zou wel moeten werken
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
// ik ga er van uit dat $valueX een array is en waarden bevat
$result = '';
for ($i=0; $i<count($valueX); $i++) {
  if ($i>0) {
    $result .= ',';
  }

  $result .= '"' . $valueX[$i] . '"';
}

echo '(' . $result . ')';
?>


(*Met implode kan je ongetwijfeld ook van alles doen...)
Gewijzigd op 31/07/2013 16:33:14 door Kris Peeters
 
Eddy E

Eddy E

31/07/2013 16:44:32
Quote Anchor link
Implode is hier inderdaad makkelijker voor:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$valueX
= array();
$valueY = array();
while($record =  mysql_fetch_assoc($result_homeattendence))
{

    $valueY[] = $record['attendence'];
    $valueX[] = $record['guestteam'];
}


echo '("' . implode('","', $valueY) . '")';
echo '("' . implode('","', $valueX) . '")';
?>


Maar als je het naar JSON wil hebben, (weet ik veel), gebruik dan json_encode() op je $valueX / $valueY.
 
Erwin H

Erwin H

31/07/2013 16:47:16
Quote Anchor link
Ronde haken is geen json. Een json array heeft vierkante haken en een json object heeft accolades. Waarom er dus ronde haken nodig zijn is nu even onduidelijk....
 
Kris Peeters

Kris Peeters

31/07/2013 16:51:52
Quote Anchor link
JSON was ook mijn eerste gedacht.
Behalve dat JSON met vierkante haakjes werkt.

----

Okay, misschien een beetje flauw, maar dit zou ook kunnen werken
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$json
= json_encode($valueY);
echo str_replace(']', ')', str_replace('[', '(', $json));
?>
Gewijzigd op 31/07/2013 16:52:40 door Kris Peeters
 
Mar kla

mar kla

31/07/2013 16:57:44
Quote Anchor link
Het begint er op te lijken. hoewel ik nog steend niet helemaal hoe een en andere werkt. en ik niet denk dat ik iets met JSON wil of moet doen, toch

Maar zoals gemeld wil ik het resultaat van de query gebruiken op met JPGRAPH een bargraph te maken

de waarde uit $valueX en $valueY wil daarvoor gebruiken

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42



$result_homeattendence =mysql("select
{query}
);

$valueX = array();
$valueY = array();
while($record =  mysql_fetch_assoc($result_homeattendence))
{
    $valueY[] = $record['attendence'];
    $valueX[] = $record['guestteam'];
}

echo '("' . implode('","', $valueY) . '")';
echo '("' . implode('","', $valueX) . '")';


// Create the graph. These two calls are always required
$graph = new Graph(550,220,'auto');
$graph->SetScale("textlin");

$graph->SetBox(false);

//$graph->ygrid->SetColor('gray');
$graph->ygrid->SetFill(false);

$graph->xaxis->SetTickLabels($dataY);
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);

// Create the bar plots
$b1plot = new BarPlot($dataX);

// ...and add it to the graPH
$graph->Add($b1plot);
$b1plot->SetColor("black");
$graph->title->Set("Bezoekersaantallen");

// Display the graph
$graph->Stroke();
 
Mar kla

mar kla

02/08/2013 11:52:29
Quote Anchor link
sorry maar ondanks alle hulp hier ben ik er na een paar dagen klooien nog steeds niet uit:-(

even kleine probleem schet
In een mysql database heb ik de table matches
Deze bevat (o.a.) deze kolomen met waarde:
matchid guest attendence
1 VIT 10200
3 PSV 10056
5 RKC 14009
7 VVV 9889
9 NEC 10008
11 UTR 10340
13 NAC 10129
15 HER 9134
17 ROD 10938
19 AZA 8254
21 EXC 8298
23 HEE 11857
25 AJA 12140
27 TWE 10577
29 GRO 10330
31 FEY 10000
33 GRA 11231

NU wil ik heel graag met JPGRAPH er een bargraph van maken

daarvoor moeten de kolomen om gezet worden naar:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$dataY
=array(10200,10056,14009,9889,10008,10340,10129,9134,10938,8254,8298,11857,12140,10577,10330,10000,11231);
$dataX = array('VIT','PSV','RKC','VVV','NEC','UTR','NAC','HER','ROD','AZA','EXC','HEE','AJA','TWE','GRO','FEY','GRA');
?>


De laatste dagen heb ik met van geexpirimeteerd en geprobeerd met IMPLODE, GROUP_CONCAT functies etc etc maar ik kom er niet uit.
Als ik dan denk de $dataY goed te hebben om dan een
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $dataY;
?>

op het scherm de juiste output geeft, zegt JPGRAPH iets van"cannot generate grap becaus x or y do not contain value"

Dus helup :-|
 
- SanThe -

- SanThe -

02/08/2013 12:02:24
Quote Anchor link
Mar kla op 31/07/2013 14:54:32:
Maar ik wil graag:
("10200","10056","14009","9889","10008","10340","10129","....)
en ("zwo","utr","aja","twe","fey","........)
hebben

Eddy E op 31/07/2013 16:44:32:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$valueX
= array();
$valueY = array();
while($record =  mysql_fetch_assoc($result_homeattendence))
{

    $valueY[] = $record['attendence'];
    $valueX[] = $record['guestteam'];
}


echo '("' . implode('","', $valueY) . '")';
echo '("' . implode('","', $valueX) . '")';
?>

Dit geeft toch precies wat jij zoekt.
 
Erwin H

Erwin H

02/08/2013 12:09:08
Quote Anchor link
Ik vrees dat dat echter helemaal niet is wat hij nodig heeft. Dat denkt de TS alleen maar. Deze notatie:
Quote:
("10200","10056","14009","9889","10008","10340","10129","....)

is echter helemaal niets. Het is in php geen array of andere data structuur, in javascript niet en in JSON niet. Met andere woorden: de TS zal eerst een duidelijk voorbeeld moeten geven van wat hij echt nodig heeft voor hij geholpen kan worden. Moet het in php, javascript of json zijn, wat is de benodigde input voor die JPGRAPH etc?

Zo gaat het in elk geval nooit tot een oplossing komen.
 
Mar kla

mar kla

02/08/2013 12:56:35
Quote Anchor link
@san
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
echo '("' . implode('","', $valueY) . '")';
echo '("' . implode('","', $valueX) . '")';
?>


echoot wel :
(10200","10056","14009","9889","10008","10340","10129","9134","10938","8254","8298","11857","12140","10577","10330,10000,11231);
("VIT","PSV","RKC","VVV","NEC","UTR","NAC","HER","ROD","AZA","EXC","HEE","AJA","TWE","GRO","FEY","GRA);

maar ik kan geen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$dataY
= array ("' . implode('","', $valueY) . '");
?>

doen

Daarbij komt dat van JPGRAPH je de getallen alleen met een , en tekst met enkel ' moet aanleveren
 
- SanThe -

- SanThe -

02/08/2013 13:40:55
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$valueX
= array();
$valueY = array();
while($record =  mysql_fetch_assoc($result_homeattendence))
{

    $valueY[] = $record['attendence'];
    $valueX[] = $record['guestteam'];
}


$dataY = '(' . implode(',', $valueY) . ')';
$dataX = '("' . implode('","', $valueX) . '")';
?>

Nu kan je $dataX en $dataY gebruiken voor de aanroep naar JPGRAP.
Gewijzigd op 02/08/2013 13:41:31 door - SanThe -
 
Mar kla

mar kla

02/08/2013 14:20:01
Quote Anchor link
@San

Helaas:-( Dat had ik dus ook al geprobeerd.

maar dan krijg ik de error:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
Either x or y data array contains non-numeric values.
Check that the data is really specified as numeric data and not as strings, it is een error to specify data for exanple as '-2345.2' (using quots).


Als ik hard coded
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$dataY
=array(10200,10056,14009,9889,10008,10340,10129,9134,10938,8254,8298,11857,12140,10577,10330,10000,11231);
$dataX=array('VIT','PSV','RKC','VVV','NEC','UTR','NAC','HER','ROD','AZA','EXC','HEE','AJA','TWE','GRO','FEY','GRA');
?>

en dan dis vars verder in het script gebruik werkt het wel.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$graph
->xaxis->SetTickLabels($dataX);
$b1plot = new BarPlot($dataY);
?>
Gewijzigd op 02/08/2013 14:21:24 door mar kla
 
Ward van der Put
Moderator

Ward van der Put

02/08/2013 14:28:06
Quote Anchor link
Ik zou, met een goede editor, op zoek gaan naar typo's. Alleen al de foutmelding bevat er een stuk of tien:

Quote:
Either x or y data arraay contains non-numeric values.
Chck that the datat is really specified as numeric data and not as strings, it is een error to specify data for exanple as '-2345.2' (using quots).


Dat is meestal een veeg teken dat er een onvoorstelbare sloddervos aan het prutsen is.
 
Erwin H

Erwin H

02/08/2013 14:33:47
Quote Anchor link
Oh oh oh:
Mar kla op 02/08/2013 14:20:01:
Als ik hard coded
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$dataY
=array(10200,10056,14009,9889,10008,10340,10129,9134,10938,8254,8298,11857,12140,10577,10330,10000,11231);
$dataX=array('VIT','PSV','RKC','VVV','NEC','UTR','NAC','HER','ROD','AZA','EXC','HEE','AJA','TWE','GRO','FEY','GRA');
?>

en dan dis vars verder in het script gebruik werkt het wel.

Met andere woorden je hebt gewoon arrays nodig, geen tot string omgevormde arrays!

Zie mijn aller, allereerste post en gebruik gewoon $valueX en $valueY daaruit. Dat zijn correcte arrays en blijkbaar heb je die gewoon nodig. Eventueel de getallen nog even typecasten naar een int.
 
Mar kla

mar kla

02/08/2013 14:34:05
Quote Anchor link
@ward


Dank voor het verwijt, gelukkig ben jij volmaakt!!
Die tekst heb ik even snel overgetikt, en daar zitten wat typo's in .

En dat heeft dus niks te maken met de rest van het script!!



Toevoeging op 02/08/2013 15:11:50:

@Erwin

Ik heb uiteraard jouw eerste post van de week gelijk uitgeprobeerd.

Maar IK krijg het niet voor elkaar (m.a.w. ik weet niet hoe dat moet) om de waardes
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
Array ( [0] => 4115 [1] => 4413 [2] => 5421 [3] => 8130 [4] => 5313 [5] => 6043 [6] => 5360 [7] => 3813 [8] => 4112 [9] => 4006 [10] => 3700 [11] => 4908 [12] => 5611 [13] => 6789 [14] => 8444 [15] => 9140 [16] => 4736 )
Array ( [0] => dbo [1] => ein [2] => spa [3] => her [4] => top [5] => emm [6] => gae [7] => vvv [8] => dor [9] => for [10] => mvv [11] => sto [12] => cam [13] => hel [14] => vol [15] => vee [16] => haa )


die ik via

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
print_r($valueY);
echo '<br>';
print_r($valueX);
?>


wel op mijn scherm te zien krijg naar

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$dataY
=array(10200,10056,14009,9889,10008,10340,10129,9134,10938,8254,8298,11857,12140,10577,10330,10000,11231);
$dataX=array('VIT','PSV','RKC','VVV','NEC','UTR','NAC','HER','ROD','AZA','EXC','HEE','AJA','TWE','GRO','FEY','GRA');
?>

en die dan verder in het srcipt

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$graph
->xaxis->SetTickLabels($dataX);
$b1plot = new BarPlot($dataY)
?>


te gebruiken.

Ik snap even niet wat je bedoeld met Eventueel de getallen nog even typecasten naar een int.
in de database staat de kolom Attendance als type int(6) dat is dan toch goed?
Gewijzigd op 02/08/2013 14:37:13 door mar kla
 
Erwin H

Erwin H

02/08/2013 15:16:20
Quote Anchor link
Mijn god.... Misschien is het beste advies dan om er maar helemaal niet aan te beginnen, of in elk geval eerst eens te leren scripten....

Maar goed. Volledig voorgekauwt nu. Als het je nu nog niet lukt kan je beter een vacature openen denk ik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$valueX
= array();
$valueY = array();
while($record =  mysql_fetch_assoc($result_homeattendence))
{

    $valueY[] = (int)$record['attendence'];
    $valueX[] = $record['guestteam'];
}


$graph->xaxis->SetTickLabels($valueX);
$b1plot = new BarPlot($valueY)
?>
Gewijzigd op 02/08/2013 15:18:31 door Erwin H
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.