Ben bu soruya daha önce bir yerlerde yanıt vermiştim, hatta bunun için hazırladığım kodlar ve veri tabanı örneği bile duruyor hâlâ.
Aşağıda yazdığım kodlarda kullanıcının yazdığı değerler direkt olarak birinci fielddaki ana datayı güncelliyor.İkinci field a da kullanıcının en son kayıt ettiği veriler ekleniyor. Yani diyelim en son 5,6 ve 7 numaralı taksitleri yazıp kayıt ettiyse sadece taksit_5, takist_6 ve taksit_7 kaydoluyor.
index.php
<!doctype html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<?php
try {
$db = new PDO("mysql:host=localhost; dbname=test","root","");
$db-> exec("SET NAMES utf8mb4; SET CHARSET utf8mb4");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Bağlanamadı'. $e->getMessage();
$db = null;
}
$query = $db->query("SELECT * FROM t")->fetch(2);
$taksitler = json_decode($query['field_1'], true);
?>
<form action="ajax.php" method="post">
<?php
for ($i = 2; $i <= 12; $i++): ?>
<label for="taksit_value_<?= $i ?>">Taksit <?= $i ?></label>
<input id="taksit_value_<?= $i ?>" type="number" disabled value="<?= $taksitler['taksit_'.$i] ?>"> <br>
<label for="taksit_input_<?= $i ?>">Taksit <?= $i ?> için değer giriniz</label>
<input id="taksit_input_<?= $i ?>" type="number" name="taksit_<?= $i ?>" step="0.01"><br><br>
<?php endfor;
?>
<input type="submit" value="Onayla">
</form>
</body>
</html>
ajax.php
if ($_POST) {
$lastUpdate = [];
foreach ($_POST as $key => $value) {
if (!empty($value)) { // Yalnızca girilen değerleri güncellemek için
$db->query("UPDATE t SET field_1 = JSON_REPLACE(field_1, '$.$key', $value) WHERE id = 1"); // Buradaki id değerini dinamik yapabilirsiniz
$lastUpdate[$key] = $value;
// Diğer kodlarınızı da burada yazablirsiniz
}
}
if (count($lastUpdate)) {
$update = json_encode($lastUpdate);
$query = $db->prepare("UPDATE t SET field_2 = ? WHERE id = 1");
$query->execute([$update]);
}
}
İkisi arasındaki kullanılan hafıza ve geçen süreyi karşılaştırdım da en azından küçük verilerde hissedilir bir fark olmaz, gözünüze hangisi hitap ediyorsa onu kullanın derim :)
Trimi oraya eklemeniz bir şey değiştirmez hocam, şuraya eklemeyi deneyin
<h4><?php echo mb_substr(trim($yazarpin), 0, 2, 'UTF-8'); ?></h4>
Çalışıyormuş gibi görünüyor Link
Belki de kayıtta isimleri listelerken virgül ile isim arasında fazladan boşluk bırakıyorsunuzdur.
Yani bir şeyler hazırladım ama ne denli işinize yarar bilemem. Link
Bir de bu şekilde deneyin;
https://codepen.io/Elessar61/pen/NWggNEM
Kullanıcının db satırında bir tane de oldPasswords diye sütun oluşturun, ilk kayıtta buraya şifreyi json formatında kaydedin. Sonraki şifre değiştirme isteklerinde bu sütundaki veriyi çekip decode edin ve in_array ile yeni kullanmak istediği şifrenin var olup olmadığını kontrol edin, eğer yoksa yeni şifreyi de bu array e ekleyip yeniden encode ederek aynı sütuna kaydedin. Mantığı böyle, yöntemi kendinize göre güncellemek size kalır.
O nasıl oluyormuş ki, aynı web sitesinde aşağıya doğru indikçe benim tarayıcımda herhangi bir aksiyon olmuyor (masaüstü için)
Mobilde markdown editörüne yapıştır işlemi çalışmıyor. Uzun basıp yapıştır deyince editörün odağı kayboluyor ve hiçbir şey olmuyor