PHP űrlap JSON file-ból

PHP űrlap JSON file-ból
2017-07-11T16:08:30+02:00
2017-07-24T16:47:14+02:00
2022-08-10T18:00:29+02:00
onebit
Sziasztok,

Egy aránylag egyszerűnek tűnő problémát próbálok megoldani, de nem találok tömör, frappáns megoldást.

PHP-ban szeretnék felolvasni egy JSON file-t és abból autómatikusan űrlapot generálni, ha lehet ilyet.
Ha nem lehet, akkor hogyan érdemes egy JSON fle feldolgozást elvégezni, értékeit egy form-ba betenni, majd a módosított értékeket visszamenteni az eredeti JSON file-ba?

Előre is köszönöm.

onebit
Mutasd a teljes hozzászólást!
Ha viszont mindenképp ragaszkodsz JSON-fájlokban tárolt űrlap-sablonokhoz, akkor egy nagyon egyszerű példa ->

<h2>PHP űrlap JSON file-ból (onebit)</h2> <?php $json = file_get_contents('form.json'); $json_data = json_decode($json,true); foreach($json_data[0] as $key1 => $value1) { if( $key1 != 'elements' && $key1 != 'end' ) { if( $key1 == 'tagname' ) { echo $value1; } else { if( $key1 != 'id' ) { echo ' '.$key1.'="'.$value1.'"'; } else { echo ' '.$key1.'="'.$value1.'"'.">\n"; } } } if( $key1 == 'end' ) { echo $value1."\n"; } if( is_array( $value1 ) && $key1 == 'elements' ) { for( $i=0;$i<count($value1);$i++ ) { foreach($value1[$i] as $key2 => $value2) { if( $key2 == 'tagname' ) { echo $value2; } else { if( $key2 == 'end' ) { echo $value2."\n<br>\n"; } else { echo ' '.$key2.'="'.$value2.'"'; } } } } } } ?> <!-- A hívott form.json fájl tartalma --> [ { "tagname":"<form", "action":"#", "method":"post", "id":"MyForm", "elements":{ "0":{ "tagname":"Vezetéknév: <input", "type":"text", "name":"First_name", "class":"text", "placeholder":"User", "end":">" }, "1":{ "tagname":"Keresztnév: <input", "type":"text", "name":"Last_name", "class":"text", "placeholder":"Onebit", "end":">" }, "2":{ "tagname":"E-mail cím: <input", "type":"email", "name":"email", "class":"email", "value":"onebit@domain.hu", "end":">" }, "3":{ "tagname":"Jelszó: <input", "type":"password", "name":"password", "value":"", "class":"text", "end":">" }, "4":{ "tagname":"Fájlfeltöltés: <input", "type":"file", "name":"imgs", "end":">" }, "5":{ "tagname":"Üzenet:<br><textarea", "cols":40, "rows":8, "name":"message", "class":"area", "placeholder":"Íde írd az üzenetet...", "end":"></textarea>" }, "6":{ "tagname":"A közzétételhez hozzájárulok <input", "type":"checkbox", "name":"yes", "class":"yes", "end":">" }, "7":{ "tagname":"<input", "type":"submit", "name":"submit", "class":"button", "value":"Elküld", "end":">" } }, "end":"</form>" } ]
Mutasd a teljes hozzászólást!
Csatolt állomány

  • PHP manuál: PHP: JSON - Manual
    tutorial: JSON with PHP
    Mutasd a teljes hozzászólást!
  • Jó nagy, sok segítséget adtál neki. Úgy látom, itt mindenki csak ehhez ért, hogy belinkelje a témát, és ennyi, itt meg is állt a történet.

    Szerinted ezekből meg fogja kapni a választ minden kérdésére?

    A jó kis magyar fórumok és az azt használók! :)
    Mutasd a teljes hozzászólást!
  • Mindenki annyit segít, amire ideje, energiája, kedve van, elvégre itt ingyen és bérmentve megy a segítségnyújtás.

    Hőbörgés helyett lehet ám adni jobb választ is, ha tudsz. Azzal többre megy a kérdező, mint a panaszkodásoddal
    Mutasd a teljes hozzászólást!
  • Stackoverflown is kérnek saját kodot a válaszadok. Abbol meg senki nem tanul ha megirják a kodját, a dokumentáciobol és tutorialokbol tanultuk meg mi is. Ellenben ha ez nem elég megfelelö akkor felteheti az állás rovatba is és ott megirják neki, mert a legtöbben a szabadidönkben jövünk ide és segitünk igy nem jogos az elvárás hogy jofejségböl elvégezze bárki bárki munkáját.
    Mutasd a teljes hozzászólást!
  • A jó kis magyar fórumok és az azt használók! :)

    Hali,

    minekután a topicknyitó egy sor kódot nem mellékelt, hogy mivel próbálkozott volna v hol akadt el, hanem csak egyszerűen egy társalgó szintű kérdést vetett fel "hogyan érdemes egy JSON fle feldolgozást elvégezni," amiből azt szűrtem le, hogy fogalma sincs miként kell JSON fájlt feldolgozni. És a válaszomat a feltett kérdés fügvényében kielégítőnek tartom. Az alapok benne vannak a manuálban. Tessék elovasni és ha a fejlesztés (próbálkozása) során ha valahol elakad akkor forráskódjának releváns részének megadásával egy konkrét kérdésre konkrét választ adunk.


    Érthető voltam?


    Ilyen: PHP-ban szeretnék felolvasni  (helyesen: beolvasni) egy JSON file-t... kezdetű mondatra a válasz: lásd a manuált.
    Mutasd a teljes hozzászólást!
  • Akkor "tömör, frappáns" kérdések:
    1. Tudod, hogy miből mit ("űrlapot, ha lehet ilyet") is szeretnél PHP-s echo-val létrehozni a fájlod beolvasása után?
    2. Tudod minek kell lenni abban a JSON fájlban, hogy ezt meg tudd tenni?
      a. Form tulajdonságai és tulajdonság-értékei (action, method, stb...)
      b. A Form-ban hány és milyen és milyen tuladonsággal, tulajdonság-értékkel rendelkező elem legyen (input -> type, name, id, class, value, stb... vagy textarea vagy stb...)?
    3. Tudod, hogy milyen legyen a JSON formátuma, hogy olvasni, kiértékelni tudd?

    Ha ezekre választ tudsz adni, akkor talán-talán hasznos információt is kaphatsz ezen a fórumon és nem csak a "lelkedet megbirizgáló" froclikat...
    Megjegyzés: Ha esetleg nem lenne elég világos a fenti eszmefuttatás, indulj ki a következő oldalon található egyszerű FORM-ból!
    Mutasd a teljes hozzászólást!
  • Úgy látom, itt mindenki csak ehhez ért, hogy belinkelje a témát, és ennyi, itt meg is állt a történet.
    A jó kis magyar fórumok és az azt használók! :)

    Teljesen jogos a hőbörgés, hiszen neked is csak linkeket küldtek: Forráskód tömörítése probléma

    Ja, nem.
    Mutasd a teljes hozzászólást!
  • PHP -ben ha megírod lehet ilyet, bár itt két JSON file -t javasolnék:

    1. a JSON amelyben az űrlap adatai vannak:
    {age: 13, type: "NORMAL", name: "John Doe"}

    2. a konfigurációja az űrlapnak:
    {age: "numberfield", type: {type: "codeset", values:["SOFT", "NORMAL", "HARD"]}, name: "textfield"}

    Vagyis ha van egy JSON -od amely egyszerű object -et tartalmaz az nem írja le, hogy a property -ket milyen szerkesztő / vezérlő elemekkel akarod kezelni, valamint milyen validációs szabályokat akarsz alakalmazni.
    Ahhoz hogy ezt leírd, vagy programot készítesz vagy egy motort amely konfigurálható, mondjuk JSON -al, ahol megteszed ezeket mint a példában, hogy mondjuk az "age" property -t szám mezőként kezeled, stb...

    Nem vagyok PHP -s de gyanítom erre egyszerű megoldás nincs.
    Mutasd a teljes hozzászólást!
  • Ha viszont mindenképp ragaszkodsz JSON-fájlokban tárolt űrlap-sablonokhoz, akkor egy nagyon egyszerű példa ->

    <h2>PHP űrlap JSON file-ból (onebit)</h2> <?php $json = file_get_contents('form.json'); $json_data = json_decode($json,true); foreach($json_data[0] as $key1 => $value1) { if( $key1 != 'elements' && $key1 != 'end' ) { if( $key1 == 'tagname' ) { echo $value1; } else { if( $key1 != 'id' ) { echo ' '.$key1.'="'.$value1.'"'; } else { echo ' '.$key1.'="'.$value1.'"'.">\n"; } } } if( $key1 == 'end' ) { echo $value1."\n"; } if( is_array( $value1 ) && $key1 == 'elements' ) { for( $i=0;$i<count($value1);$i++ ) { foreach($value1[$i] as $key2 => $value2) { if( $key2 == 'tagname' ) { echo $value2; } else { if( $key2 == 'end' ) { echo $value2."\n<br>\n"; } else { echo ' '.$key2.'="'.$value2.'"'; } } } } } } ?> <!-- A hívott form.json fájl tartalma --> [ { "tagname":"<form", "action":"#", "method":"post", "id":"MyForm", "elements":{ "0":{ "tagname":"Vezetéknév: <input", "type":"text", "name":"First_name", "class":"text", "placeholder":"User", "end":">" }, "1":{ "tagname":"Keresztnév: <input", "type":"text", "name":"Last_name", "class":"text", "placeholder":"Onebit", "end":">" }, "2":{ "tagname":"E-mail cím: <input", "type":"email", "name":"email", "class":"email", "value":"onebit@domain.hu", "end":">" }, "3":{ "tagname":"Jelszó: <input", "type":"password", "name":"password", "value":"", "class":"text", "end":">" }, "4":{ "tagname":"Fájlfeltöltés: <input", "type":"file", "name":"imgs", "end":">" }, "5":{ "tagname":"Üzenet:<br><textarea", "cols":40, "rows":8, "name":"message", "class":"area", "placeholder":"Íde írd az üzenetet...", "end":"></textarea>" }, "6":{ "tagname":"A közzétételhez hozzájárulok <input", "type":"checkbox", "name":"yes", "class":"yes", "end":">" }, "7":{ "tagname":"<input", "type":"submit", "name":"submit", "class":"button", "value":"Elküld", "end":">" } }, "end":"</form>" } ]
    Mutasd a teljes hozzászólást!
    Csatolt állomány
  • Időközben készítettem egy tesztet, melyet kicsit kibővítettem a kérdező "privát" kérése okán...
    Mutasd a teljes hozzászólást!
    Csatolt állomány
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd