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
-
Post cu Ajax in modal
JavaScript - jQuery - Ajax
Primul mesaj
Bună ziua,
Vreau să trimit în aceeași pagină dar în modal două id-uri. Prin alert(id) îmi arată conținutul postului trimis dar în modal nu imi...
Ultimul mesaj
Nu prea inteleg mecanismul si ce anume nu functioneaza.
Oricum, daca functioneaza cand pui manual id-ul, poate ca problema e de la php.
Trebuie sa...
-
Separare array de obiecte în mai multe array-uri
JavaScript - jQuery - Ajax
Primul mesaj
Am un array de obiecte, si pentru crearea unui grafic trebuie să îl împart în 3 array-uri diferite. Cum se face cu JS?
const dataOverview = ;...
Ultimul mesaj
Este simplu, aplici functia map() .
var series1 = dataOverview.map(x => x.series1);
var series2 = dataOverview.map(x => x.series2);
var...
-
Adaugare array in acelasi array JS
JavaScript - jQuery - Ajax
Primul mesaj
Incerc sa adaug un array in acelasi array in javascript, Dar se pare ca nu functioneaza; al treilea element se adauga incontinuu.
Iata codul:
var...
Ultimul mesaj
Nu functioneaza cum vrei fiindca adaugi aceeași referință la array. De aceea, când array-ul se actualizează, cel din interior va fi si el actualizat....
-
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....
-
Cannot use object of type mysqli_result as array
PHP - MySQL - XML
Primul mesaj
Salut, m-am lovit de aceasta eroare in scriptul meu...
Cannot use object of type mysqli_result as array
<?php
include header.php ;...
Ultimul mesaj
Am vazut ca metoda executeQuery() nu transforma in vreun fel datele de la mysqli (cum am presupus ca le returneaza ca obiect) ci le returneaza direct...
-
Produsul Dot a doua array in Javascript
JavaScript - jQuery - Ajax
Primul mesaj
Cum se poate implementa eficient o metoda dotProduct (pentru a obține produsul Dot din două array) fără a importa alte biblioteci Javascript?
De...
Ultimul mesaj
Iată o metodă.
Se foloseste funcția map() pentru a crea un nou array cu rezultate înmulțite ale fiecărui index, apoi se aplica funcția reduce()...