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
- 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...
- 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 orar zilele saptamanii in baza de date
PHP - MySQL - XML
Primul mesaj
Salut
Am o baza de date cu toate locatiile
location_id | name |address |telephone | open
Si un formular prin care incarc datele in bd....
Ultimul mesaj
Treaba cu adaugare json in mysql e simpla, se rezuma la adaugarea unui sir care contine ghilimele duble.
Problema la tine e ca acele ghilimele sunt...