waarden in tabel?
Code (php)
1
[{"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.:
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?
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).
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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(); ?>
$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?
Btw heb JSON_NUMERIC_CHECK geprobeerd maar dan werkt het niet meer.
[update] werkt nu thx!!
Gewijzigd op 03/09/2018 19:30:48 door Pascal Schuffelers
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.
Code (php)
1
UPDATE tabel SET DateAndTime = STR_TO_DATE(CONCAT(`Date`, ' ', `Time`), '%Y-%m-%d %H:%i:%s');
(ongetest)
Gewijzigd op 05/09/2018 14:45:12 door - Ariën -
Update.:
Met gebruik van CONCAT krijg ik ze samen
Code (php)
1
$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.
Gewijzigd op 05/09/2018 07:58:27 door Pascal Schuffelers
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.
- Ariën - op 05/09/2018 07:20:05:
'%m/%d/%Y %H:%i:%s'
Dit formaat lijkt mij compleet ongeschikt.
DATETIME is the way to go lijkt mij.
Maak hier in eerste instantie een aparte/nieuwe kolom van/voor, zodat je niet in bestaande datums en tijden loopt te prutten met het risico dat je data verliest.
- Ariën - op 05/09/2018 12:44:27:
Met een VARCHAR kan je inderdaad niet rekenen of logisch sorteren.
Dat is niet waar. Je zou een datetime (yyyy-mm-dd hh:ii:ss) prima als VARCHAR op kunnen slaan omdat deze zich beide bedienen van een alfabetische (lexicografische) sortering.
Verder is een apart veld aanmaken voor de conversie een goed idee.
Gewijzigd op 05/09/2018 14:46:12 door - Ariën -
De voorbeelden in de MySQL manual opereren op tekstuele strings, en niet op kolommen van het DATE(TIME) type, dit is dus geen noodzakelijke voorwaarde, zoals jouw vorige stelling min of meer suggereert.
Het is natuurlijk altijd een goede zaak om data "extra betekenis" te geven door deze in een kolom op te slaan van een type die de betekenis en het gebruik van de data weerspiegelt (een numerieke waarde in een INT kolom, een tekst in een VARCHAR of TEXT kolom, en een datum/tijd in een DATE(TIME) kolom). Ook het gebruik van deze data bepaalt mede wat het handigste is.
Gewijzigd op 05/09/2018 15:37:45 door Thomas van den Heuvel