Creare si adaugare sir JSON in caseta input
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
andras
- Mesaje: 430
Creare si adaugare sir JSON in caseta input
Salut,
Sint contrariat ca un sir json nu este preluat in input (simplificat, testare):
Cod: Selectaţi tot
<?php
function formInsert($variabile, $tabela, $clasa){
$numItems = count($variabile);
$i = 0;
$re='';
$aj='{';
$re .='<div id="'.$tabela.'" ><form action="#" class="'.$tabela.'" method="POST" id="'.$tabela.'" style="text-align: right;">Introduceti datele si acest cod : <span style="font-size: 24px;">'.sprintf( $codev).'</span><br/>';
foreach ($variabile as $key => $value) {
$re .= '<label for="'.$value.'">'.$key.'</label><input type="text" name="'.$value.'" id="'.$value.'" autocomplete="off" value="" align="right" style="width: 200px; height: 22px; margin: 3px;" /><br/>';
$aj .= '"'.$value.'"';
if (++$i === $numItems) { if(isset($_POST[$value])) $aj .=' : '.'"'.$_POST[$value].'"'.'}'; else $aj .=' : ""}';}
else {if (isset($_POST[$value])) $aj .=' : '.'"'.$_POST[$value].'"'.', '; else $aj .=' : "", ';}
}
echo $aj; //dupa completarea cimpurilor si submit afiseaza {"nume" : "ion", "prenume" : "vasile", "virsta" : "11"}
$re .= '<input type="text" name="sirjson" id="sirjson" value="'.$aj.'" />'; // pune doar un { in cimp (urmeaza sa-l fac hidden)
$re .= '<input type="submit" name="susr" id="susr" onclick="ajaxSend(this.parentNode.id(\"sirjson\").value);" value="submit" />';
$re .= '</form></div><br/>';
return $re; // afiseaza formularul
}
?>
Sirul $aj nu-l pune in id="sirjson" nici daca scot acoladele nici daca mai pun \" \" si nu functioneaza nici ajaxSend () chiar daca pun
Cod: Selectaţi tot
ajaxSend(document.getElementById(\"sirjson\").value);
Unde gresesc?
MarPlo
Mesaje: 4343
Salut,
Sirul JSON nu e nevoie sa-l creezi manual in php, ci se creaza array-ul apoi se aplica json_encode().
Daca vrei sa adaugi sirul json intr-un <input>, pune-l la atributul "value" inttre ghilimele simple (fiindca sirul json contine ghilimele duble).
Exemplu
Cod: Selectaţi tot
<?php
function formInsert($keys, $vals){
$aj=[];
$n = min(count($keys), count($vals));
$re ='<form action="#" method="POST">';
for($i=0; $i<$n; $i++) {
$aj[$keys[$i]] = $vals[$i];
}
$aj = json_encode($aj); //creaza sir json
$re .= "<input type='text' name='sirjson' id='sirjson' value='". $aj. "' /></form>";
return $re;
}
echo formInsert(['k1', 'k2', 'k3'], ['v1', 'v2', 'v3']); // {"k1":"v1","k2":"v2","k3":"v3"}
andras
Mesaje: 430
Din pacate ceva nu fac bine si functioneaza doar partial, afiseaza sirul JSON doar dupa submit, adica la submit trimite doar variabile POST vide. Functia completa este:
Cod: Selectaţi tot
<?php
function formInsert($variabile, $tabela, $clasa){
$numItems = count($variabile);
$codev = setCaptcha('codev');
$i=0;
$re='';
$aj=[];
$re .='<div id="'.$tabela.'" ><form action="prelucrari.php" class="'.$tabela.'" method="POST" id="'.$tabela.'" style="text-align: right;">Introduceti datele si acest cod : <span style="font-size: 24px;">'.sprintf( $codev).'</span><br/>';
foreach ($variabile as $key => $value) {
$re .= '<label for="'.$value.'">'.$key.'</label><input type="text" name="'.$value.'" id="'.$value.'" autocomplete="off" value="" align="right" style="width: 200px; height: 22px; margin: 3px;" /><br/>';
if (isset($_POST[$value])) $aj[$value]= $_POST[$value]; // aici e problema, nu preia imediat
$i++;
}
$aj = json_encode($aj); // formeaza corect sirul json
echo $aj; // afiseaza {"nume":"ion","prenume":"vasile","virsta":"11"} dar numai dupa ce face submit
$re .= '<input type="hidden" name="numeclasa" id="numeclasa" value="'.$clasa.'" />';
$re .= '<input type="hidden" name="numetabela" id="numetabela" value="'.$tabela.'" />';
$re .= "<input type='hidden' name='sirjson' id='sirjson' value='". $aj. "' />";
$re .= '<label for="codev">cod</label><input type="text" name="codev" size="5" maxlength="6" id="codev" autocomplete="off" style="height: 22px;" />';
$re .= "<input type='submit' onclick='ajaxSend(document.getElementById(\"sirjson\").value)' />";
$re .= '</form></div><br/>';
return $re;
}
?>
Daca nu pun conditia if (isset($_POST[$value])) imi da eroare, nu recunoaste variabilele POST. Probabil am gresit din conceptia codului, dar nu pot merge mai departe.
Cum rezolv sa-mi citeasca varibilele POST din prima? Daca nu rezolv trebuie sa renunt la forma asta a functiei.
La fel de defectuos functioneaza indiferent ca apelez la onclick sau la action="prelucrari.php".
Multumesc.
MarPlo
Mesaje: 4343
Cu ce vrei sa completezi array-ul $aj pentru json daca in acel moment nu sunt date trimise /primite cu $_POST?
Care variabile $_POST sa citeasca din prima? $_POST exista doar dupa trimiterea de date la script cu POST.
Poate ar trebui ceva de genu:
Cod: Selectaţi tot
//daca sunt date primite prin POST de la pagina, le preia
//altfel preia pe cele de unde sunt deja salvate
if(isset($_POST[$value])) $aj[$value]= $_POST[$value];
else $aj['nus_ce_cheie'] ='nus_ce_valoare'; //Aci tu stii unde ai Ion, Vasile, etc.
andras
Mesaje: 430
Da, acum e clar, scuze pentru obtuzitatea mea, filozofia mea a fost gresita din start. Am vrut prea repede sa captez variabilele POST si sa plec din formular direct catre functia ajax, dar nu merge, variabilele POST n-au existat pentru ca nu au fost trimise. Am transferat functia $aj = json_encode($aj); din formular in script (prelucrari.php) si am gasit variabele POST, functioneaza normal.
Subiecte similare
-
Adaugare apostrof la value in input cu JavaScript
JavaScript - jQuery - Ajax
Primul mesaj
Am un cod JavaScript care adaugă un câmp input pentru utilizator:
var user = O'Conner, John ;
b.innerHTML += <input type='hidden' value=' +...
Ultimul mesaj
Poți să înlocuiesti caracterul cu entitatea lui HTML.
Astfel, pentru apostrof (') poate fi ’ sau ‘
var user = O'Conner,...
-
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...
-
Lungime obiect JSON in JavaScript
JavaScript - jQuery - Ajax
Primul mesaj
Am convertit un tabel din baze de date într-un obiect JSON.
Aceasta este, în esență, un array bidimensional, fiecare înregistrare fiind pe cate un...
Ultimul mesaj
Poti sa folosesti Object.keys pentru a obține lista de chei din obiect ca un array, apoi obții cu 'length' lungimea din el:...
-
Escapare ghilimele duble in sir JSON
JavaScript - jQuery - Ajax
Primul mesaj
Încerc să transform in obiect un șir JSON 'Hello” test ' care conține ghilimele care au escapate deja cu \.
JSON.parse('{ x : Hello \ test }')...
Ultimul mesaj
Trebuie sa escapezi backslash-ul \, astfel sa ai doua backslashes \\
let obj = JSON.parse('{ x : Hello \\ test }')
console.log(obj)
-
Creare meniu in site cu php
Scripturi de pe site
Primul mesaj
Salut
Am incercat sa pun icons pe primul nivel al meniului din tutorialu tau: Creare site de la zero si nu reusesc sa il adaug pe butonele care...
Ultimul mesaj
Multumes pt ajutor
Este ok acum.
Din exeplul dat de tine am mai vazut ceva intersant si anume acel meniu asa zis breadcrumb cu ce ma selectat deja....
-
adaugare element nou intr-un array de obiecte
PHP - MySQL - XML
Primul mesaj
Salutare,
Am un array de obiecte sub forma aceasta:
$sql =
si un aray de forma aceasta:
$tipuri =
Cum pot adauga in primul array inca...
Ultimul mesaj
primesc o eroare pe linia json_decode($sql, true); , eroare este: json_decode() expects parameter 1 to be string, array given
Am rezolvat problema...