Hulp nodig met complexe string splitting
Misschien kan iemand mij helpen ik ben best stupid en kan het probleem niet op internet vinden. In het script gaat wat fout tijdens het decoderen maar ik weet niet zo goed wat. Ik krijg een complexe string maar alles met IS_X_AVAILABLE zou ik losse kolommen moeten komen. Ik krijg nu één lap tekst die totaal niet in kolommen zit. Kan iemand mij verder helpen? Ik krijg wat foutmelding op line 45,46,48 deze lijnen zijn hieronder weergegeven. De data die ik in kolommen wil splitten staat ook hieronder weergegeven. Ik moet de data uiteindelijk in kolommen in mysql zien te krijgen ik weet alleen niet hoe en heb het één en ander geprobeerd. Misschien kan iemand mij helpen/richtlijnen geven? ik denk dat er iets fout gaat met het decoden van json. In het onderstaande voorbeeld probeerde ik IS_CATV_AVAILABLE data in een kolom te krijgen ik kreeg wel de kolom IS_CATV_AVAILABLE in mysql maar de data werd niet gedecodeerd en kreeg gewoon een hele lap met hieronder dus.
{"data":{"ID":"1213AP1","IS_CATV_AVAILABLE":{"isAvailable":true,"errors":[]},"IS_DTV_AVAILABLE":{"isAvailable":true,"errors":[]},"IS_INT_AVAILABLE":{"isAvailable":true,"errors":[]},"IS_FAST_AVAILABLE":{"isAvailable":true,"errors":[]},"IS_GIGA_AVAILABLE":{"isAvailable":true,"errors":[]},"IS_VOIP_AVAILABLE":{"isAvailable":true,"errors":[]},"PAID":"PAID-102.243.827"}}
45 $pcArr[$k]['adress_check']= $decoded_string->zipCode . " / " . $decoded_string->houseNumber . " / " . $decoded_string->houseNumberExt;
46 $pcArr[$k]['footprint']= $decoded_string->footprint;
[48] foreach ($decoded_string->availability as $product){
if ($product->name=="fp500") $pcArr[$k]['fp500']= $product->available;
elseif ($product->name=="fp200") $pcArr[$k]['fp200']= $product->available;
elseif ($product->name=="internet") $pcArr[$k]['internet']= $product->available;
elseif ($product->name=="IS_CATV_AVAILABLE") $pcArr[$k]["IS_CATV_AVAILABLE"]= $product->available;
hartelijk dank legendes hopelijk kunnen jullie mij wat hoop geven
stop je string om te beginnen in de site https://jsonformatter.curiousconcept.com/#
Je ziet dan in elk geval overzichtelijk wat erin zit.
Code (php)
Toont hetzelfde, maar dan in PHP.
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
42
43
44
45
46
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
42
43
44
45
46
<?php
$dataset = json_decode({
"data":{
"ID":"1325GD10",
"IS_CATV_AVAILABLE":{
"isAvailable":true,
"errors":[
]
},
"IS_DTV_AVAILABLE":{
"isAvailable":true,
"errors":[
]
},
"IS_INT_AVAILABLE":{
"isAvailable":true,
"errors":[
]
},
"IS_FAST_AVAILABLE":{
"isAvailable":true,
"errors":[
]
},
"IS_GIGA_AVAILABLE":{
"isAvailable":true,
"errors":[
]
},
"IS_VOIP_AVAILABLE":{
"isAvailable":true,
"errors":[
]
},
"PAID":"PAID-142.285.780"
}
[b]}");
echo""<pre>"". print_r($dataset",
1) ."</pre>"";
?>
$dataset = json_decode({
"data":{
"ID":"1325GD10",
"IS_CATV_AVAILABLE":{
"isAvailable":true,
"errors":[
]
},
"IS_DTV_AVAILABLE":{
"isAvailable":true,
"errors":[
]
},
"IS_INT_AVAILABLE":{
"isAvailable":true,
"errors":[
]
},
"IS_FAST_AVAILABLE":{
"isAvailable":true,
"errors":[
]
},
"IS_GIGA_AVAILABLE":{
"isAvailable":true,
"errors":[
]
},
"IS_VOIP_AVAILABLE":{
"isAvailable":true,
"errors":[
]
},
"PAID":"PAID-142.285.780"
}
[b]}");
echo""<pre>"". print_r($dataset",
1) ."</pre>"";
?>
Gewijzigd op 13/12/2021 18:49:02 door - Ariën -
Gelukkig hebben we wel toffe regelnummering.
- Ariën - op 13/12/2021 18:49:46:
UBB-tags in een codeblok gaan niet werken ;-)
Gelukkig hebben we wel toffe regelnummering.
Gelukkig hebben we wel toffe regelnummering.
Hoe zou ik dit moeten transformeren? ik heb de basis voor de code niet geschreven.
Maar wat heeft dat volgens jouw te maken met JSON-formatter?
Gewijzigd op 13/12/2021 20:10:58 door - Ariën -
- Ariën - op 13/12/2021 20:10:19:
Als ik kijk zie ik dat je PHP-code vetgedrukt wou formatteren?
Maar wat heeft dat volgens jouw te maken met JSON-formatter?
Maar wat heeft dat volgens jouw te maken met JSON-formatter?
Ik heb geen idee ik moet alles opgesplitst krijgen in kolommen maar ik krijg steeds een lap tekst misschien gaat er wat fout in de loop.
Dan kan je die kolommen toch gewoon uitlezen en INSERT'en of UPDATE'en?
Houd tijdens het ontwikkelen die print_r() er eens bij met je array-boom en kijk eens waar je data daarin staat.
Gewijzigd op 13/12/2021 20:19:06 door - Ariën -
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
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
<?php
$categories = (object)[
'ID' => 'ID',
'IS_CATV_AVAILABLE' => 'CATV',
'IS_DTV_AVAILABLE' => 'DTV',
'IS_INT_AVAILABLE' => 'INT',
'IS_FAST_AVAILABLE' => 'FAST',
'IS_GIGA_AVAILABLE' => 'GIGA',
'IS_VOIP_AVAILABLE' => 'VOIP',
'PAID' => 'Betaald'
];
$json = '{"data":{"ID":"1213AP1","IS_CATV_AVAILABLE":{"isAvailable":true,"errors":[]},"IS_DTV_AVAILABLE":{"isAvailable":true,"errors":[]},"IS_INT_AVAILABLE":{"isAvailable":true,"errors":[]},"IS_FAST_AVAILABLE":{"isAvailable":false,"errors":[]},"IS_GIGA_AVAILABLE":{"isAvailable":true,"errors":[]},"IS_VOIP_AVAILABLE":{"isAvailable":true,"errors":[]},"PAID":"PAID-102.243.827"}}';
$dataset = json_decode( $json )->data;
echo '<pre>' . print_r( $dataset, TRUE ) . '</pre>';
foreach ( $dataset as $key => $value )
{
if ( isset( $value->isAvailable ) )
{
echo $categories->{$key} . ' = ' . ( $value->isAvailable ? 'Beschikbaar' : 'Niet beschikbaar' ) . '<br />';
} else {
echo $categories->{$key} . ' = ' . $value . '<br />';
}
}
?>
$categories = (object)[
'ID' => 'ID',
'IS_CATV_AVAILABLE' => 'CATV',
'IS_DTV_AVAILABLE' => 'DTV',
'IS_INT_AVAILABLE' => 'INT',
'IS_FAST_AVAILABLE' => 'FAST',
'IS_GIGA_AVAILABLE' => 'GIGA',
'IS_VOIP_AVAILABLE' => 'VOIP',
'PAID' => 'Betaald'
];
$json = '{"data":{"ID":"1213AP1","IS_CATV_AVAILABLE":{"isAvailable":true,"errors":[]},"IS_DTV_AVAILABLE":{"isAvailable":true,"errors":[]},"IS_INT_AVAILABLE":{"isAvailable":true,"errors":[]},"IS_FAST_AVAILABLE":{"isAvailable":false,"errors":[]},"IS_GIGA_AVAILABLE":{"isAvailable":true,"errors":[]},"IS_VOIP_AVAILABLE":{"isAvailable":true,"errors":[]},"PAID":"PAID-102.243.827"}}';
$dataset = json_decode( $json )->data;
echo '<pre>' . print_r( $dataset, TRUE ) . '</pre>';
foreach ( $dataset as $key => $value )
{
if ( isset( $value->isAvailable ) )
{
echo $categories->{$key} . ' = ' . ( $value->isAvailable ? 'Beschikbaar' : 'Niet beschikbaar' ) . '<br />';
} else {
echo $categories->{$key} . ' = ' . $value . '<br />';
}
}
?>
knip
Damn dat komt al beter in de buurt wat heb je gedaan? die dingen IS_XXX_AVAILABLE moeten in lossen kolommen komen en daarin moet dan uiteindelijk dat beschikbaar niet beschikbaar in komen.
Damn dat komt al beter in de buurt wat heb je gedaan? die dingen IS_XXX_AVAILABLE moeten in lossen kolommen komen en daarin moet dan uiteindelijk dat beschikbaar niet beschikbaar in komen.
Edit:
Het is niet nodig om het eerst voorgaande bericht integraal te quoten.
Gewijzigd op 14/12/2021 15:36:44 door - Ariën -
Kolommen van een database bedoel je?
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
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
$resultaat = [];
foreach ( $dataset as $key => $value )
{
if ( isset( $value->isAvailable ) )
{
$resultaat[$categories->{$key}] = ( $value->isAvailable ? 'Beschikbaar' : 'Niet beschikbaar' );
} else {
$resultaat[$categories->{$key}] = $value;
}
}
echo '<table border="1" style="border-collapse: collapse;">';
echo '<tbody><tr>';
foreach ( $resultaat as $key => $value)
{
echo '<td style="padding: 0.500em;">' . $key . '<br />' . $value . '</td>';
}
echo '</tr></tbody>';
echo '</table>';
$query = 'INSERT INTO sales (' . implode( ', ', (array)$categories ) . ')';
$query .= ' VALUES ("';
$query .= implode( '","', $resultaat );
$query .= '" );';
echo $query;
foreach ( $dataset as $key => $value )
{
if ( isset( $value->isAvailable ) )
{
$resultaat[$categories->{$key}] = ( $value->isAvailable ? 'Beschikbaar' : 'Niet beschikbaar' );
} else {
$resultaat[$categories->{$key}] = $value;
}
}
echo '<table border="1" style="border-collapse: collapse;">';
echo '<tbody><tr>';
foreach ( $resultaat as $key => $value)
{
echo '<td style="padding: 0.500em;">' . $key . '<br />' . $value . '</td>';
}
echo '</tr></tbody>';
echo '</table>';
$query = 'INSERT INTO sales (' . implode( ', ', (array)$categories ) . ')';
$query .= ' VALUES ("';
$query .= implode( '","', $resultaat );
$query .= '" );';
echo $query;