decodare array venit cu POST in PHP
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
andras
- Mesaje:430
decodare array venit cu POST in PHP
Salut,
Am un array construit in JS pe care il pun intr-un hidden si are 4 elemente de forma (exemplu):
Cod: Selectaţi tot
["rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1", "rnbqkbnr/pppppppp/8/8/3P4/8/PPP1PPPP/RNBQKBNR b KQkq d3 0 1", "rnbqkbnr/ppp1pppp/3p4/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq - 0 2", "rnbqkbnr/ppp1pppp/3p4/8/2PP4/8/PP2PPPP/RNBQKBNR b KQkq c3 0 2"]
care vine dintr-un form cu elementul type="hidden" name="movuri[]".
Cum parcurg (dupa submit) acest array in php sa extrag fiecare valoare? Dar as vrea ca mai intii sa verific daca are valori in el. Multumesc.
MarPlo
Mesaje:4343
Salut
Daca array-ul transmis e in format JSON, in php poti sa il transformi in array cu functia:
json_decode($json_array, true). Apoi il poti parcurge cu for() sau foreach().
Exemplu:
Cod: Selectaţi tot
if(isset($_POST['movuri'])){
$movuri = json_decode($_POST['movuri'], true);
//if it is array and has items
if(is_array($movuri) && count($movuri) >0){
//use $movuri data ...
}
}
andras
Mesaje:430
Eu am incercat asa dar nu-mi iese (vin din form cu $request):
Cod: Selectaţi tot
if(isset($request['movuri'])){
$movuri = json_decode($request['movuri'], true);
if(is_array($movuri) && count($movuri) >0){
foreach ($request['movuri'] as $mutare){
......
}
}
}
Imi da eroare : "json_decode() expects parameter 1 to be string, array given", iar ca array imi afiseaza doar
Cod: Selectaţi tot
array[
0 => "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1,rnbqkbnr/pppppppp/8/8/3P4/8/PPP1PPPP/RNBQKBNR b KQkq d3 0 1,rnbqkbnr/ppp1pppp/8/3p4/3P4/8/PPP1PPPP/RNBQKBNR w KQkq d6 0 2"
]
adica imi ia tot array-ul ca un singur element. Care sa fie cauza?
edit: in Javascript folosesc:
Cod: Selectaţi tot
function savemutari(mutari, fen) { // pune fiecare fiecare mutare
mutari.push(fen);
document.getElementById('movuri').value = mutari;
}
MarPlo
Mesaje:4343
Sirul de la "value" din acel <input> e recunoscut ca array in php fiindca are paranteze patrate [] la "name".
Ori stergi parantezele patrate de la "name", ori in php preiei elementul cu cheia 0 din acel array din POST pt. json_decode().
Cod: Selectaţi tot
$movuri = json_decode($request['movuri'][0], true);
- Iar in javascript s-ar putea sa trebuiasca asa, ca sa fie format json in input:
Cod: Selectaţi tot
document.getElementById('movuri').value = JSON.stringify(mutari);
andras
Mesaje:430
Am sters paranteze patrate din name="movuri" dar tot n-a functionat decit dupa explode:
Cod: Selectaţi tot
if(isset($request['movuri'])){
$movuri = explode(',', $request['movuri']);
foreach ($movuri as $mutare){
.........
}
}
Acum functioneaza dar inca tot n-am priceput pe deplin cum e treaba cu transformarea array-urilor din JS in php. Multumesc oricum!
edit: aceea functie Javascript este intr-o bucla, se apeleaza din bucla, la fiecare rulare adaug mutari.push(fen); iar variabila fen este un sir care se adauga de fiecare data la array-ul mutari. Poate aici este greseala.
MarPlo
Mesaje:4343
Nu a funcftionat cu json_decode() in php fiindca datele adaugate in acel input nu erau puse in format json valid.
In javascript trebuiau convertite in sir json cu
JSON.stringify().
Cod: Selectaţi tot
document.getElementById('movuri').value = JSON.stringify(mutari);
- Dar acea functie in JS fiind intr-o bucla care adauga mereu la "value", mai bine mergi pe varianta care stii ca-ti functioneaza bine.
andras
Mesaje:430
M-am gindit si eu ca nu era un sir json valid. Multumesc!
Subiecte similare
- parametru din array in query cu laravel
PHP - MySQL - XML
Primul mesaj
Salutare,
din frontend primesc urmatorul array:
$arrClienti =
dupa care ii fac implode
$idClienti = preg_replace('/ /i', '', implode( , ,...
Ultimul mesaj
Dupa multe sapaturi, am ajuns la concluzia ca nu se poate rula ca parametru o matrice. Doar daca parametrul cu matricea este rulat intr-un loop....
- Setare valori din array in select tag
JavaScript - jQuery - Ajax
Primul mesaj
Salut am un array cu orele de functionare
$data = array (
'0400' => '04:00 AM',
'0430' => '04:30 AM',
'0500' => '05:00 AM',
'0530'...
Ultimul mesaj
Testeaza urmatorul cod.
Daca ceva mai trebuie schimbat, incearca si tu sa modifici dupa cum stii, in functie de ce vrei sa obtii.
Open:...
- Indexi valorilor din array care fac suma
PHP - MySQL - XML
Primul mesaj
Salutare,
am un array cu urmatoarele numere:
arr =
si o variabila, care poate contine numere intregi de la 50 pana 750 (750 este suma...
Ultimul mesaj
Mulțumesc mult marplo, este ceea ce îmi trebuie
- implode(): Passing glue string after array is deprecated
PHP - MySQL - XML
Primul mesaj
Dupa 7 ani !
Acum, revazand o veche aplicatie cu codul Multiple Select Drop Down list cu tabel 3 coloane +1; am constatat ca datorita upgradarii...
Ultimul mesaj
OK ! Eu nu am inteles despre ce parametri era vorba. S-a rezolvat, multumesc pentru promptitudinea cu care mi-ai raspuns ! TOATE CELE BUNE !!!