php/echarts Jquery waarde gebruiken

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • josvane
  • Registratie: Oktober 2002
  • Laatst online: 29-09 22:30
Voor een interne website wil ik graag wat waardes grafisch weergeven. Hiervoor maak ik gebruik van bootstrap i.c.m. echarts.

Als ik de waardes hard in de js file type. Dan heb ik wat ik hebben wil. Uiteraard wil ik natuurlijk realtime waardes gebruik vanuit de database. De waardes ophalen gebeurt met PHP en vanuit daar doe ik een json_encode.

Op mijn pagina wordt deze array middels deze code een variable in JS.

code:
1
2
3
<script>
var totalUsage = {$totalUsage}
</script>


Als ik bron weergeven doen, dan zie ik de volledige array. En ziet het er zo uit.
code:
1
var totalUsage = {"names":"'Product 1','Product 2','Product 3'","available":"50000,138000,20700","orders":"1310,3097,1707"}


Voor de grafiek moet ik de waardes als volgt aanleveren. (Als ik het zoals onderstaand doe werkt het)
code:
1
data: ['Product 1,'Product 2','Product 3']


Als ik echter het volgende doe:
code:
1
data: [totalUsage.names]
werkt het helaas niet.
De grafiek toont de drie waardes als 1 product. Wat wellicht ook wel logisch is. Nu ligt mijn kennis niet bepaald bij JS/Jquery en zit nu vast in het vinden van een oplossing. De oplossing zal er moeten komen middels trial and error, ik denk het op te lossen op ongeveer deze manier?
code:
1
2
3
4
5
for x as y
{ 
  value .= 'y',
}
data: [value]

Mijn vraag is dan ook, heb ik de goede denkrichting? Zo niet, heeft iemand een tip/zoekterm die mij op weg helpt

Beste antwoord (via josvane op 04-11-2020 17:54)


  • Kryziek
  • Registratie: Juni 2010
  • Laatst online: 16:55

Kryziek

bb || !bb

Ik denk dat ik je probleem zie. Je `var totalUsage` is verkeerd geformatteerd. Je `names` is geen array maar 1 lange string waar alle namen in staan. Je moet ervoor zorgen dat je PHP al op een juiste wijze de `names` output. Zie hieronder voor een juist voorbeeld.

code:
1
2
3
4
5
6
7
{
    "names": [
        "Product 1",
        "Product 2",
        "Product 3"
    ]
}

Alle reacties


Acties:
  • 0 Henk 'm!

  • EvH
  • Registratie: Juli 2014
  • Laatst online: 18:44

EvH

Snelle blik:
Je gebruikt in je eerste var “names”. Als laatste roep je “name” op.

Acties:
  • 0 Henk 'm!

  • josvane
  • Registratie: Oktober 2002
  • Laatst online: 29-09 22:30
EvH schreef op woensdag 4 november 2020 @ 12:33:
Snelle blik:
Je gebruikt in je eerste var “names”. Als laatste roep je “name” op.
Dat was een typo, gefixed

Acties:
  • 0 Henk 'm!

  • EvH
  • Registratie: Juli 2014
  • Laatst online: 18:44

EvH

Moet het niet overigens zo zijn: data: totalUsage.names
Je wilt namelijk de directe var aanroepen..

Acties:
  • 0 Henk 'm!

  • josvane
  • Registratie: Oktober 2002
  • Laatst online: 29-09 22:30
Ik heb dat geprobeerd, alleen maakt hij dan van iedere letter een aparte regel. Ik ga daar wel even mee verder. Ik denk dat oplossing echt in de notatie zit.

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Kryziek
  • Registratie: Juni 2010
  • Laatst online: 16:55

Kryziek

bb || !bb

Ik denk dat ik je probleem zie. Je `var totalUsage` is verkeerd geformatteerd. Je `names` is geen array maar 1 lange string waar alle namen in staan. Je moet ervoor zorgen dat je PHP al op een juiste wijze de `names` output. Zie hieronder voor een juist voorbeeld.

code:
1
2
3
4
5
6
7
{
    "names": [
        "Product 1",
        "Product 2",
        "Product 3"
    ]
}

Acties:
  • +1 Henk 'm!

  • josvane
  • Registratie: Oktober 2002
  • Laatst online: 29-09 22:30
Kryziek schreef op woensdag 4 november 2020 @ 16:15:
Ik denk dat ik je probleem zie. Je `var totalUsage` is verkeerd geformatteerd. Je `names` is geen array maar 1 lange string waar alle namen in staan. Je moet ervoor zorgen dat je PHP al op een juiste wijze de `names` output. Zie hieronder voor een juist voorbeeld.

code:
1
2
3
4
5
6
7
{
    "names": [
        "Product 1",
        "Product 2",
        "Product 3"
    ]
}
Dat was hem, ik zat verkeerd te denken. Om de oplossing ook inzichtelijk te maken. De PHP code
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
foreach($totalUsage as $key => $value)
        {
            if($key != 0)
            {
                if(!is_array($value['DataBundleValue']))
                {
                    $name[]     = $value['ProductName'] . " data";
                    $bundel[]   = $value['DataBundleValue'];
                    $used[]     = $value['DataCurrentValue'];
                }

                if(!is_array($value['VoiceBundleValue']))
                {
                    $name[]     = $value['ProductName'] . " voice";
                    $bundel[]   = $value['VoiceBundleValue'];
                    $used[]     = $value['VoiceCurrentValue'];
                }
                
            }
        }
        $data = array('names' => $name, 'bundels' => $bundel, 'use' => $used);
        return json_encode($data);

Dit resultaat ziet er in JS zo uit
code:
1
var totalUsage = {"names":["Product 1","Product 2","Product 3"],"available":["50000","138000","20700"],"orders":["1337","3167","2083"]}

Bij data is dit vervolgens voldoende
code:
1
data: totalUsage.names,


@EvH, ook dank voor de hulp
Pagina: 1