aray binnen aray kan niet naar mysql

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robert v Ommen

Robert v Ommen

03/01/2014 23:23:03
Quote Anchor link
Goedendag,

ik probeer met python op een raspberry pi 10 temperatuursensoren uit te lezen,
deze via een website in een MYSQL database te zetten (Hosting2go) zodat ik hier uiteindelijk grafieken mee kan maken e.d.
Het uiteindelijke doel is de aansturing van een zonneboiler met vloerverwarming en houtkachel e.d.

Stukje bij beetje kom ik steeds verder en lukt het steeds meer. Ik leer er uiteraard enorm veel van.

Maar nu loop ik tegen een probleem aan.

ik gebruik de volgende regel om (een deel van) de records toe te voegen:

$sql="INSERT INTO $tbl_name(DATETIME, S0, S1, KLEPBRON, KLEPWW)VALUES('$today', '$datas[0]', '$datas[1]', '$var1', '$var2')";

op zich lukt dat wel, alleen komen er in de velden S0 en S1 ARAY te staan ipv de temperatuur.

print (sensor_Raw) in python geeft:

{0: [19.0], 1: [18.875], 2: [18.812], 3: [18.937], 4: [19.125], 5: [19.125], 6: [19.25], 7: [18.937], 8: [19.125], 9: [19.375]}

Deze data wordt met json gepost naar de PHP op de server.

print_r($data); in PHP geeft

Array
(
[0] => Array
(
[0] => 19
)

[1] => Array
(
[0] => 18.875
)

[2] => Array
(
[0] => 18.812
)

[3] => Array
(
[0] => 18.937
)

[4] => Array
(
[0] => 19.125
)

[5] => Array
(
[0] => 19.125
)

[6] => Array
(
[0] => 19.25
)

[7] => Array
(
[0] => 18.937
)

[8] => Array
(
[0] => 19.125
)

[9] => Array
(
[0] => 19.375
)

)

Mijn vraag is, hoe haal ik de arays uit de aray? Ik heb met explode zitten proberen, maar dat lukt om de een of andere reden niet. Eigenlijk wil ik ook weten waarom dit zo gebeurd.

ik maak een denkfout geloof ik, ik weet alleen niet welke.

Wie weet waar dit fout gaat?
Gewijzigd op 03/01/2014 23:41:00 door Robert v Ommen
 
PHP hulp

PHP hulp

22/11/2024 06:49:30
 
Ozzie PHP

Ozzie PHP

04/01/2014 00:05:48
Quote Anchor link
Ku je hier iets mee? (Ik heb het niet getest.)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
foreach ($data as $array) {
  foreach ($array as $key => $value) {
    echo sprintf('Data %d: %f<br>', $key, $value);
  }
}

?>
 
Robert v Ommen

Robert v Ommen

04/01/2014 00:16:09
Quote Anchor link
Hallo Ozzie, dank je voor je snelle reactie!, dit is wat eruit komt:

Data 0: 19.125000<br>Data 0: 19.000000<br>Data 0: 18.875000<br>Data 0: 19.062000<br>Data 0: 19.125000<br>Data 0: 19.187000<br>Data 0: 19.250000<br>Data 0: 19.062000<br>Data 0: 19.062000<br>Data 0: 19.312000<br>

Dit is niet een aray waar ik verder mee kan, of wel? Allemaal data 0.

Ik wil ook graag begrijpen hoe ik die arays binnen de aray gekregen heb, zodat ik daar de code kan aanpassen.

Groeten Robert
 
Ozzie PHP

Ozzie PHP

04/01/2014 00:30:34
Quote Anchor link
Ah oke... ik zie t al...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
foreach ($data as $array) {
  $count = 1;
  foreach ($array as $value) {
    echo sprintf('Data %d: %f', $count, $value) . PHP_EOL;
    $count++;
  }
}

?>

Ik weet verder niet echt wat je wilt, dus dan moet je wat duidelijker zijn.
 
Robert v Ommen

Robert v Ommen

04/01/2014 09:03:45
Quote Anchor link
Hallo Ozzie, tja, voor een beginner is het uiteraard moeilijk te achterhalen wat er fout gaat, maar ook uit te leggen wat er nu precies gebeurt en hou ik het graag anders had gezien.
Mijn python programma haalt temperaturen van sensoren op en zet deze in een aray. (dictionary) Dat is dus deze lijst: {0: [19.0], 1: [18.875], 2: [18.812], 3: [18.937], 4: [19.125], 5: [19.125], 6: [19.25], 7: [18.937], 8: [19.125], 9: [19.375]}
Maar wanneer ik deze dus verzend, met urlencode vanuit python naar de webserver, die deze waardes in de mysql gaat zetten, gaat het fout. Er komen arays binnen de aray. Waarom is dat vraag ik me af.

Toevoeging op 04/01/2014 09:17:16:

Overigens is dit het resultaat van de eerdere code:

Data 1: 17.000000
Data 1: 16.875000
Data 1: 17.000000
Data 1: 17.062000
Data 1: 17.187000
Data 1: 17.250000
Data 1: 17.000000
Data 1: 17.062000
Data 1: 17.312000


Toevoeging op 04/01/2014 09:18:49:

Wat ik eigenlijk wil is één aray waar ik dan mbv $datas[0] en $datas[1] de waardes uit kan halen
 
Ivo P

Ivo P

04/01/2014 10:43:33
Quote Anchor link
geven die [ ] in Python niet ook al aan dat het een array is?

Ik denk daarom dat je query zou moeten zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$sql
="INSERT INTO $tbl_name(DATETIME, S0, S1, KLEPBRON, KLEPWW)
      VALUES
      ('$today', '$datas[0][0]', '$datas[1][0]', '$var1', '$var2')"
;
?>


of, om problemen te voorkomen,
* met vars buiten quotes
* met escaping van de waarden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$sql
="INSERT INTO $tbl_name(DATETIME, S0, S1, KLEPBRON, KLEPWW)
      VALUES
      ('"
. mysql_real_escape_string($today)."',
       '"
. mysql_real_escape_string($datas[0][0])."',
       '"
. mysql_real_escape_string($datas[1][0])."',
       '"
. mysql_real_escape_string($var1) ."',
       '"
. mysql_real_escape_string($var2)."')";
?>
Gewijzigd op 04/01/2014 10:46:24 door Ivo P
 
Robert v Ommen

Robert v Ommen

04/01/2014 11:44:44
Quote Anchor link
geven die [ ] in Python niet ook al aan dat het een array is?

Dit was mijn eye opener! Je hebt helemaal gelijk en ik snap nu ook waarom het fout ging in mijn python programma. Is opgelost nu en de waardes komen goed in mysql.

Bedankt en Ozzie ook bedankt!!

Groeten Robert
Gewijzigd op 04/01/2014 17:23:31 door Robert v Ommen
 
Ozzie PHP

Ozzie PHP

04/01/2014 16:25:20
Quote Anchor link
>> Overigens is dit het resultaat van de eerdere code:

Ah stom, die $count = 1; moest op de eerste regel staan!

Is het nu helemaal gelukt?
 
Robert v Ommen

Robert v Ommen

04/01/2014 17:23:09
Quote Anchor link
Ja helemaal. In python wist ik nu de code aan te passen zodat nu goede arays binnen komen in PHP. Ik kan verder maar zal hier vast nog vaker komen!

mvg Robert.
 
Ozzie PHP

Ozzie PHP

04/01/2014 17:46:17
Quote Anchor link
Oké, mooi zo :)
 



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.