Pagina 1 din 1
Preluare date multiple JSON dintr-o coloana
Scris: Mar Ian 21, 2020
de Stefan
Salut, cum as putea prelua datele dintr-o coloana din baza de date care sunt in format JSON?
Valoarea din coloana `articole`
Cod: Selectaţi tot
{
"afisare":[
{
"afisare_articole":1,
"afisare_vizualizari":1,
"afisare_aprecieri":1,
"afisare_autor":1,
"afisare_data":1,
"afisare_comentarii":1,
"afisare_categorii":1,
"afisare_taguri":1,
"afisare_postari":1,
"afisare_search":1
}
],
"permitere":[
{
"permitere_aprecieri":1,
"permitere_comentarii":1
}
]
}
Codul pe care l-am folosit am observat ca imi returneaza doar datele de la "permitere", de ce?
Cod: Selectaţi tot
$array = json_decode($date_website['articole'], true);
$data=array();
foreach($array as $val){
foreach($val as $key=>$val){
$info[$key]=$val;
}
}
print_r($info);
Preluare date multiple JSON dintr-o coloana
Scris: Mie Ian 22, 2020
de MarPlo
Sunt doua probleme la codul php.
1. Variabila $val din al doilea foreach() o rescrie pe cea din primul.
2. Datele dorite nu sunt retinute in variabila definita initial, $data, ci in una care se auto-rescrie $info.
Incearca asa:
Cod: Selectaţi tot
$array = json_decode($date_website['articole'], true);
$data = array();
foreach($array as $val){
foreach($val as $k=>$v){
$data[$k]=$v;
}
}
var_export($data);
Preluare date multiple JSON dintr-o coloana
Scris: Mie Ian 22, 2020
de Stefan
Tot la fel afiseaza, dar daca mut functia var_export in al 2-lea foreach imi afiseaza toate datele. Si am observat ca imi returneaza 2 array-uri, nu ar trebui sa fie un singur array?
Cod: Selectaţi tot
$array = json_decode($date_website['articole'], true);
$data = array();
foreach($array as $val){
foreach($val as $k=>$v){
$data[$k]=$v;
var_export($data);
}
}
Rezultat
Cod: Selectaţi tot
array (
0 =>
array (
'afisare_articole' => 1,
'afisare_vizualizari' => 1,
'afisare_aprecieri' => 1,
'afisare_autor' => 1,
'afisare_data' => 1,
'afisare_comentarii' => 1,
'afisare_categorii' => 1,
'afisare_taguri' => 1,
'afisare_postari' => 1,
'afisare_search' => 1,
),
)
array (
0 =>
array (
'permitere_aprecieri' => 1,
'permitere_comentarii' => 1,
),
)int(1)
Pana la urma vad ca pot prelua datele asa, dar nu inteleg de ce metoda de mai sus nu functioneaza
Cod: Selectaţi tot
var_dump($array['afisare'][0]['afisare_articole']);
Preluare date multiple JSON dintr-o coloana
Scris: Mie Ian 22, 2020
de MarPlo
Da, de fapt acel json contine trei array-uri imbricate; variabila $val de la primul foreach() contine un array bidimensional.
Incearca acest cod:
Cod: Selectaţi tot
$array = json_decode($date_website['articole'], true);
$data = array();
foreach($array as $val){
foreach($val[0] as $k=>$v){
$data[$k]=$v;
}
}
var_export($data);
Preluare date multiple JSON dintr-o coloana
Scris: Mie Ian 22, 2020
de Stefan
Iti multumesc mult! Si cum as putea face update mai multor date dupa trimiterea formularului (folosesc un input de tip checkbox)? Momentan pentru a face update unei singure coloane foloseam comanda urmatoare
Cod: Selectaţi tot
mysqli_query($con, "UPDATE `setari` SET `articole` = JSON_SET(`articole`,'$.afisare[0].afisare_comentarii',123)");
Preluare date multiple JSON dintr-o coloana
Scris: Mie Ian 22, 2020
de MarPlo
Nu stiu, depinde de mai multi factori:
- structura tabelului,
- ce coloane, ce date si cu ce sa le modifici,
- ce formular ai pentru ele.
Daca nu sunt multe, cu zecile, mai bine faci update la fiecare in parte.