Vroeger kon ik met

$content = file_get_contents("php://input");
//convert json object to php associative array
$json = json_decode($content,true);

waardes uit een url halen maar nu werkt dat niet meer.

Kan iemand mijn vertellen hoe ik

"name":"iSpindel000","ID":125392,"angle":77.06406,"temperature":34.0625,"battery":4.671533,"gravity":27.02963,"interval":1

kan ontleden? Ik kan de post welke het apparaat geeft namelijk niet aanpassen.


Onderstaand heb ik de aangepaste code staan maar deze krijg ik op een of andere manier niet werkend.Ik denk dat het te maken heeft met het : wat ertussen staat.




<?php
date_default_timezone_set('Europe/Amsterdam');
$servername = "localhost";
$username = "user";
$password = "paswoord";
$dbname = "name";
$time = date('Y-m-d h:i:s A');
$unixtime = strtotime($time);
// Create connection
$conn = new mysqli($servername, $username,$password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

if(isset($_GET["name"])) { // alleen als er data is meegegeven voeren we dit uit
echo "ok".$_GET;
$data = $_GET["name\"\:\""]; // parameter ophalen
$data1 = $_GET["angle"]; // parameter ophalen
$data2 = $_GET["temperature"]; // parameter ophalen
$data3 = $_GET["battery"]; // parameter ophalen
$data4 = $_GET["wort"]; // parameter ophalen

}


//$content = file_get_contents("php://input");
//convert json object to php associative array
$json = json_decode($content,true);

$sql = "INSERT INTO fermentervalues (name, angle, temperature, battery, wort, string ) VALUES( '$data', '$data1', '$data2', '$data3', '$data4', '$unixtime')";
if ($conn->query($sql) === TRUE) {

} else {

echo "Error:" . $sql . "<br>" . $conn->error;
}
$conn->close();

echo "ok";
?>
Ik neem aan dat dit de output is, omdat ik de { en } lijkt te missen, omdat het volgens mij JSON zal zijn?


{ "name":"iSpindel000","ID":125392,"angle":77.06406,"temperature":34.0625,"battery":4.671533,"gravity":27.02963,"interval":1 }


Dat klopt sorry die heeft hij niet meegenomen

In dat geval werkt dit hier prima:

<?php

$content = '{ "name":"iSpindel000","ID":125392,"angle":77.06406,"temperature":34.0625,"battery":4.671533,"gravity":27.02963,"interval":1 }';
 $json = json_decode($content,true);

echo $json['temperature']; // geeft 34.0625
?>


PS: Je hoeft het laatste bericht in het forum niet te quoten. We weten heus wel waar je op reageert. ;-)
Ok, maar ik krijg de data dan niet uit de url. Als ik hem er direct inzet dan werkt het inderdaad wel. Het lijkt of hij de data niet binnen krijgt
php://input is ook niet echt een URL maar input-stream. Wat is precies de bedoeling in dit stukje?
Vroeger kon ik hiermee een apparaatje in de database laten schrijven wat deze waardes deed meten. Nu krijg ik niet eens de waardes meer in het script te zien met een echo. Ik snap er niks meer van. Schrijf regelmatig c# maar mijn php is super roestig op dit moment :]
Kan je het niet naar een bestand schrijven, en daarna laten uitlezen?
Of is het realtime? Want volgens mij moet het in PHP werken, en ligt het meer aan de backend van je C# script.
Er hangt geen c# achter. Dit is een arduino welke iedere keer als hij wakker wordt de data verzend en weer in slaap valt.

[size=xsmall]Toevoeging op 27/03/2020 19:07:40:[/size]

php://input werkt toch niet meer in de nieuwe php?
Dat zou gewoon moeten werken...
Dat was ook mijn idee. Als ik in de browser

www.website.com/"name":"iSpindel000","ID":125392,"angle":77.06406,"temperature":34.0625,"battery":4.671533,"gravity":27.02963,"interval":1

Krijg ik niks in de database als 0. Enigste wat wel werkt is de $unixtime welke wel weggeschreven is. Dus alles werkt behalve de waardes uit de url halen.

[size=xsmall]Toevoeging op 27/03/2020 19:18:03:[/size]

ps; dit is de oude code welke vorig jaa nog wel werkte

<?php
$time = date('Y-m-d h:i:s A');
$unixtime = strtotime($time);
// Create connection
$conn = new mysqli($servername, $username,$password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
$content = file_get_contents("php://input");
//convert json object to php associative array
$json = json_decode($content,true);
echo $json['temperature'];
$sql = "INSERT INTO fermentervalues (name, angle, temperature, battery,	wort, string )  VALUES( '$json[name]', '$json[angle]', '$json[temperature]', '$json[battery]', '$json[gravity]', '$unixtime')";
if ($conn->query($sql) === TRUE) {
    
} else {
   
   echo "Error:" . $sql . "<br>" . $conn->error;
}
$conn->close();

echo "ok";
?>


[size=xsmall]Toevoeging op 27/03/2020 19:30:44:[/size]

en op
echo $content;

krijg ik ook geen data.

Reageren