Pagina 1 din 1
decodare array venit cu POST in PHP
Scris: Mar Aug 02, 2016
de andras
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.
decodare array venit cu POST in PHP
Scris: Mar Aug 02, 2016
de MarPlo
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 ...
}
}
decodare array venit cu POST in PHP
Scris: Mar Aug 02, 2016
de andras
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;
}
decodare array venit cu POST in PHP
Scris: Mar Aug 02, 2016
de MarPlo
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);
decodare array venit cu POST in PHP
Scris: Mar Aug 02, 2016
de andras
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.
decodare array venit cu POST in PHP
Scris: Mar Aug 02, 2016
de MarPlo
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.
decodare array venit cu POST in PHP
Scris: Mar Aug 02, 2016
de andras
M-am gindit si eu ca nu era un sir json valid. Multumesc!