ik heb in mijn database alles op varchar(255) staan , dus als ik een json file creëer dan krijg ik dit te zien.:
[{"Datum":"15-11-2017","MVRml10ml":"14.2"},{"Datum":"16-11-2017","MVRml10ml":"13.75"},{"Datum":"16-11-2017","MVRml10ml":"14.35"},{"Datum":"16-11-2017","MVRml10ml":"13.83"},{"Datum":"16-11-2017","MVRml10ml":"13.99"},{"Datum":"16-11-2017","MVRml10ml":"13.86"},{"Datum":"16-11-2017","MVRml10ml":"13.48"},{"Datum":"15-11-2017","MVRml10ml":"15.403"},{"Datum":"15-11-2017","MVRml10ml":"12.893"},{"Datum":"15-11-2017","MVRml10ml":"14.332"}]


maar eigenlijk moet ik dit hebben.:
{"Datum":"16-11-2017","MVRml10ml":13.86}


dus bij het getal moeten die "" weg zijn, dus ik ga ervan uit dat dit komt door die varchar, waar moet mijn kolom dan wel op staan om dit niet te hebben?
Op zich is alles als een varchar oplsaan niet echt handig ...

Als je json_encode() gebruikt kun je bij de 2e parameter opties meegeven. Zet daar (oa) JSON_NUMERIC_CHECK neer, en dan gaat PHP automagisch je nummers in orde maken. Let op: dit geeft nogal eens onbedoelde resultaten bij bijvoorbeeld telefoonnummers of andere string die "op een getal lijken" ("10e5" is bijvoorbeeld een getal).
waar plaats ik dat dan?

 <?php  $mysqli = new mysqli('localhost','xxx','xxxx','xxxxxx');
        $myArray = array();
        if ($result = $mysqli->query("SELECT Datum, MVRml10ml FROM metingen where Product = 'QCP EXPP 164A-1111' limit 10")) {
                $tempArray = array();
                while($row = $result->fetch_object()) {
                                $tempArray = $row;
                                array_push($myArray, $tempArray);
                        }
                echo json_encode($myArray);
                $json_data = json_encode($myArray);
                file_put_contents('test.json', $json_data);
                $fp = fopen('results.json', 'w');
                fwrite($fp, json_encode($myArray));
                fclose($fp);
        }

        $result->close();
        $mysqli->close();  ?>
Rob Doemaarwat op 03/09/2018 18:50:41
Als je json_encode() gebruikt kun je bij de 2e parameter opties meegeven. Zet daar (oa) JSON_NUMERIC_CHECK neer

Nou... Waar je json_encode() aanroept? Waarom trouwens zowel naar het scherm als naar een bestand, en dan nog eens naar een bestand? Je roept daar 3x json_encode() aan. Waarom?
Omdat ik wat aan het testen ben.

Btw heb JSON_NUMERIC_CHECK geprobeerd maar dan werkt het niet meer.
[update] werkt nu thx!!
Kleine vraag nog.
Ik heb een stomme fout gemaakt in een oude db ooit.
Daar heb ik ooit Datum in een aparte kolom gezet en tijd in een aparte kolom.
Nu is mijn vraag met betrekking op bovenstaande code, kan ik Datum en Tijd bij het selecteren samen duwen?
Ik heb een via google zitten zoeken maar weet niet hoe dit heet of dat het wel kan.
Waarom niet converteren naar een DATETIME?


UPDATE tabel SET DateAndTime = STR_TO_DATE(CONCAT(`Date`, ' ', `Time`), '%Y-%m-%d  %H:%i:%s');

(ongetest)
MMm dat zou ik eens vanavond kunnen proberen, maar gaat het zo ook als je iets uitleest dat je 2 kolommen samen kunt voegen met als resultaat 1 waarde datum en tijd?

Update.:

Met gebruik van CONCAT krijg ik ze samen

$result = $mysqli->query("SELECT CONCAT(Datum , Tijd) as Datum, MVRml10ml FROM metingen where Product = 'QCP EXPP 164A-1111' order by Datum ASC limit 200")

Alleen zou ik tussen datm en tijd graag een spatie zien, enig idee?

update ook opgelost.
Ik neem aan dat je wel een veld met DATETIME type gebruikt.
- Ariën - op 05/09/2018 10:00:19

Ik neem aan dat je wel een veld met DATETIME type gebruikt.

Pascal Schuffelers op 03/09/2018 18:45:50

ik heb in mijn database alles op varchar(255) staan


@Pascal, is het niet mogelijk je velden aan te passen? Eventueel een pagina maken die alles output en op een goede manier opslaat? Datum en tijd kun je het beste opslaan als DATETIME. Je krijgt dan 2018-09-05 12:43:22. Hiermee kun je dan zo'n beetje alles mee doen. Dat gaat niet met een varchar.
Met een VARCHAR kan je inderdaad niet rekenen of logisch sorteren.

Reageren