Preluare date multiple JSON dintr-o coloana
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
Stefan
- Mesaje: 117
Preluare date multiple JSON dintr-o coloana
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);
MarPlo
Mesaje: 4343
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);
Stefan
Mesaje: 117
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']);
MarPlo
Mesaje: 4343
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);
Stefan
Mesaje: 117
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)");
MarPlo
Mesaje: 4343
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.
Subiecte similare
-
Afisare numar cel mai mare dintr o coloana
PHP - MySQL - XML
Primul mesaj
Bună Marplo
Vreau să extrag din coloan pret cel mai mare numar ca de exemplu 4444.
Mie imi afisează 54 în loc de 4444, dacă în loc de 4444 modific...
Ultimul mesaj
Am schimbat `pret` varchar(20) DEFAULT NULL in `pret` int(11) NOT NULL ca la tine si merge.
Multumesc
-
Eroare la incarcare json
JavaScript - jQuery - Ajax
Primul mesaj
Bună Marius
Cum rezolv să imi încarce tot fișierul .json
eoroare la
//fetch(endpoint)
//.then(blob => blob.json())
//.then(data =>...
Ultimul mesaj
Fisierul json de la acea adresa are peste 50 MB, e cam mare pentru preluare si procesare direct in pagina (client side) cu javascript.
A) Indicat...