Ik heb in dit voorbeeld een hard gecodeerde array $data1 en zo'n array heb ik nodig voor een grafiekje. Nu probeer ik dat uit de database te halen maar in mijn script krijg ik dus niet de gewenste array.

<?php

$connect = mysqli_connect("localhost", "user", "password", "lifepo4");

$sql = "SELECT soc
          FROM accu_data
          WHERE substr(datum,15,2) in  ('00')
          ORDER BY hex_id DESC LIMIT 0, 10;";

$result = mysqli_query($connect, $sql);
$row = mysqli_fetch_array($result, MYSQLI_NUM);
print_r($row);

$data1 = array(20,15,23,15);
print_r($data1);

?>

RESULTAAT van de print_r:

Array
(
    [0] => 98
)
Array
(
    [0] => 20
    [1] => 15
    [2] => 23
    [3] => 15
)


De eerste array heeft maar 1 entry terwijl de query 10 records oplevert.
Hoe krijg ik nu een array uit de database zoals $data1 de tweede array?
Dank voor de reacties, ik ben daarmee op het juiste pad geraakt, de oplossing ook voor wat grotere resultaatsets is:

<?php
// content="text/plain; charset=utf-8"


$connect = mysqli_connect("localhost", "user", "passwd", "lifepo4");

$sql = "SELECT soc
          FROM accu_data
          WHERE substr(datum,15,2) in  ('00')
          ORDER BY hex_id DESC LIMIT 0, 10;";

$r = mysqli_query($connect, $sql);

$result = array();
while ($row = mysqli_fetch_array($r, MYSQLI_NUM)) {
    $result[] = $row[0];
}

print_r($result);

$data1 = array(20,15,23,15);
print_r($data1);

?>

OUTPUT:
Array
(
    [0] => 98
    [1] => 98
    [2] => 98
    [3] => 98
    [4] => 98
    [5] => 98
    [6] => 98
    [7] => 98
    [8] => 98
    [9] => 98
)
Array
(
    [0] => 20
    [1] => 15
    [2] => 23
    [3] => 15
)


Het testscriptje haalt slechts de laatste 10 records op met als doel het script werkend te krijgen. De tabel bevat de SoC (state of charge) waarde van een LifePo4 accuset. Elke 5 minuten wordt er een record aangemaakt vanuit het BMS (battery management system). Het doel is om diverse grafieken (dag, week, maand) te maken voor SoC, stroom, spanning en spanning per cel. De gewenst array is input voor een grafiek.
--- edit: never mind antwoord was al gegeven, alleen stond het niet bij mij in beeld ---

Wat betreft de substr() en in ('00')

Is het niet overzichtelijker als je daarvan maakt:

WHERE MINUTE(datum) = 0

Ivo dank die ga ik uitproberen!
Ik heb nu weer een ander probleempje. Ik ben geen held met php ik bouw alleen wat dingetjes voor mezelf. Nu ben ik aan het stoeien met grafiekjes en een makkelijk hulpmiddel leek mij jpgraph.net en daar hoef ik alleen maar de bovenstaande array aan te bieden en dat lukt nu prima. Nu krijg ik op de legenda-x-as omdat ik een grafiek maak van 2000 array entries op de onderste legenda dus ook 2000 karakters hetgeen een grijze brij wordt.

Misschien hier een mede PHP'er die bekend is met jpgraph en een tip voor me heeft om die x-as legenda te beperken tot 7 dagen? De grafiek is namelijk prima maar op 2000 5-minuten waarden wordt de legenda onleesbaar. Kennelijk is die gecodeerd in de php van jpgraph

[img]https://i.postimg.cc/6p1xH6h4/Schermafbeelding-2024-01-08-133331.png[/img]
Waarden alleen voor afgelopen week:


WHERE datum > CURRENT_DATE - INTERVAL 7 DAY
  AND MINUTE(datum) = 0

Reageren