waarden in tabel?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pascal Schuffelers

Pascal Schuffelers

03/09/2018 18:45:50
Quote Anchor link
ik heb in mijn database alles op varchar(255) staan , dus als ik een json file creëer dan krijg ik dit te zien.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
{"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?
 
PHP hulp

PHP hulp

15/11/2024 13:32:28
 
Rob Doemaarwat

Rob Doemaarwat

03/09/2018 18:50:41
Quote Anchor link
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).
 
Pascal Schuffelers

Pascal Schuffelers

03/09/2018 19:01:24
Quote Anchor link
waar plaats ik dat dan?
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
<?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();  ?>
 
Thomas van den Heuvel

Thomas van den Heuvel

03/09/2018 19:18:33
Quote Anchor link
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?
 
Pascal Schuffelers

Pascal Schuffelers

03/09/2018 19:24:43
Quote Anchor link
Omdat ik wat aan het testen ben.

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
 
Pascal Schuffelers

Pascal Schuffelers

05/09/2018 07:14:41
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

05/09/2018 07:20:05
Quote Anchor link
Waarom niet converteren naar een DATETIME?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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 -
 
Pascal Schuffelers

Pascal Schuffelers

05/09/2018 07:32:17
Quote Anchor link
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
 
- Ariën  -
Beheerder

- Ariën -

05/09/2018 10:00:19
Quote Anchor link
Ik neem aan dat je wel een veld met DATETIME type gebruikt.
 
Michael -

Michael -

05/09/2018 12:42:52
Quote Anchor link
- 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.
 
- Ariën  -
Beheerder

- Ariën -

05/09/2018 12:44:27
Quote Anchor link
Met een VARCHAR kan je inderdaad niet rekenen of logisch sorteren.
 
Thomas van den Heuvel

Thomas van den Heuvel

05/09/2018 14:38:39
Quote Anchor link
- 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.
 
- Ariën  -
Beheerder

- Ariën -

05/09/2018 14:42:50
Quote Anchor link
Maar dan alsnog is een VARCHAR niet bedoeld voor opslag van datums en tijden. Ik betwijfel of MySQL er in jouw geval goed mee kan omgaan als je in MySQL ermee rekent. Sorteren zou wel prima kunnen.

Verder is een apart veld aanmaken voor de conversie een goed idee.
Gewijzigd op 05/09/2018 14:46:12 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

05/09/2018 15:33:25
Quote Anchor link
Ook rekenen zou geen probleem moeten zijn maar het is waarschijnlijk minder efficiënt als je datums (en tijden) opslaat als varchar (dit zou dus een argument zijn om specifiek DATE(TIME) te gebruiken boven VARCHAR). Maar het kan wel, m.a.w. er is verder geen enkele beperking waarom het niet mogelijk zou zijn om dit te doen.

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
 



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.