v2.5.2
Giriş yap

PHP Düzgün formatta json_encode yapmak

obey00
407 defa görüntülendi

Tablomdaki "taksitler" alanında şu şekilde kayıtlı bir veri mevcut

{"taksit_2":3.92,"taksit_3":4.91,"taksit_4":5.9,"taksit_5":6.88,"taksit_6":7.87,"taksit_7":8.86,"taksit_8":9.84,"taksit_9":10.83,"taksit_10":11.82,"taksit_11":12.8,"taksit_12":13.79}

Ben bunu "textarea" içerisine basmak, kullanıcıya da manuel olarak düzenleme imkanı vermek istiyorum. Daha sonrasında da kullanıcı "Update" butonuna basarsa, json formatını bozmadan - sadece taksitlerin karşısındaki float olan sayısal kısmı güncellemesini yaparak tekrar kayıtta tutmak istiyorum yani.

1- Yukarıdaki json formatındaki kayıtı "textarea" içerisine en mantıklı nasıl basabilirim? (Decode ettikten sonra Array ( [taksit_2] => 13.92 ) şeklinde String olarak basıyor; bunu Array'e çevirip oradan encode etmeyi bir türlü başaramadım. Doğru formata sokamadım.

2- Mevcut formatı bozmadan, dediğim gibi ekrana bastıktan sonra kullanıcı sayıları değiştirdikten sonra tekrar aynı format içerisinde nasıl update işlemi yapmamı önerirsiniz?

kartal
989 gün önce

Kullanıcıya hata yapma şansı bırakmadan güncelleme yaptırmalısın bu yüzden textarea içine objeyi string olarak yani text olarak koyman iyi fikir değil.
Bunun yerine her alan için ayrı input alanı luşturup

<label>1. taksit</label>
<input type="text" name="taksit[]" value="<?php echo $taktis1; ?>">
<input type="text" name="taksit[]" value="<?php echo $taktis2; ?>">

şeklinde olmalı.
Kaydettirirken de formda ki diğer verilerle beraber değişiklik yapılanlarıda yani hepsini birden alıp kaydettirebilirsin.
Formda ki verileri şu şeklide alacaksın

$new_arr = array();
foreach($_POST["taksit"] as $taksit_name => $tutar){
    
    $new_arr[$taksit_name] = $tutar;

 //Sonra :
 $jsonUpdate = json_encode($new_arr);
 bu şekilde bir sonuç (object) alırsın {"taksit1" : 100, "taksit2" : 50} 
 /*
 Ve php ile veri tabanına kayıt
 veriyi tutacağın alanı text olarak yapmalısın.
 */

Sonuç olarak teker teker değil her defasında kolonda ki bütün veriyi güncelleyecek.