Hoe kan ik delen uit een url halen met php7
$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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?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";
?>
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";
?>
Gewijzigd op 27/03/2020 18:41:23 door Bas Onbekend
Code (php)
1
{ "name":"iSpindel000","ID":125392,"angle":77.06406,"temperature":34.0625,"battery":4.671533,"gravity":27.02963,"interval":1 }
Gewijzigd op 27/03/2020 18:52:31 door - Ariën -
Gewijzigd op 27/03/2020 18:52:45 door - Ariën -
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?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
?>
$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 :]
Of is het realtime? Want volgens mij moet het in PHP werken, en ligt het meer aan de backend van je C# script.
Gewijzigd op 27/03/2020 19:06:08 door - Ariën -
Dat zou gewoon moeten werken...
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.
Toevoeging op 27/03/2020 19:18:03:
ps; dit is de oude code welke vorig jaa nog wel werkte
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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";
?>
$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";
?>
Toevoeging op 27/03/2020 19:30:44:
en op
echo $content;
krijg ik ook geen data.
Gewijzigd op 27/03/2020 19:33:00 door - Ariën -
Ik heb eerder het idee dat je naar het programma van de Arduino moet kijken. Want de PHP-code ziet er verder prima uit. Test het anders eens uit een hard-coded JSON string, zoals ik al deed.
Als ik die er hard coded in plaats werkt het. Maar als ik de string in de url plaats doet hij het ook niet. Het is net of die $content = file_get_contents("php://input"); regel niet meer werkt.
Wanneer is die link dan gebroken? Heb je iets speciaals gedaan?
Nee heb het apparaat 1 jaar niet gebruikt. In 2019 werkte het nog gewoon. Niks veranderd of aangepast.
Ik ben niet echt bekend met een Arduino, maar kan je niet daarmee zien of dat script daar ergens vastloopt?
script llopt gewoon goed. als ik de waardes in internet explore achter de url plaats werkte het voorheen ook. Nu dus ook niet meer.
Kan je dan niet de data in je PHP-script met GET uitlezen?
Ik zou zo niet weten hoe ik dat moet doen.
print_r($_GET);
dan komt Array ( ) ok terug