Foreach yapılmış listeden id ve input post etmek
Merhaba,
Bir form da kullanıcı isimlerini alt alta gösterip input kısmına mesajları yazıp birkerede veri tabanına kayıt etmek istiyorum. Malesef kullanıcı id lerini post edemedim. Her denememde ilk sıradaki kullanıcının id si post ediliyor.
Yardım edebilecek arkadaşlara şimdiden teşekkürler.
<?php foreach ($query as $row): ?>
<label><?= $row['adi']?>Adı </label>
<input type="hiden" id="id" name="id" value="<?=$t_row['id']?>"></input>
<input type="text" id="mesaj" name="mesaj"></input>
<?php endforeach; ?>
<li class="submit">
<input type="hidden" name="submit" value="1">
button type="submit">Gönder</button>
</li>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (4)
Hocam submit buttonuna basınca veritabanına kayıt ediyor fakat sadece bir adet id yi.
Bir yerde hata yapıyorum ama malesef göremiyorum.
post('id')
ile gelen değer varmı önce onu kontrol et print_r()
ile yazdır.
veritabanına kayıt ederkende aşağıdaki gibi yapabilirsin.
$ids = post('id');
$messages = post('mesaj');
foreach($ids AS $key => $id){
$message = $messages[$key];
$insert = $db->prepare();// bu kısmı kendine göre düzenlersin
$insert->execute([
$id,
$message
]);
}
Öncelikle cevabınız için teşekkürler.
Yazdığınız gibi denediğim zaman
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'id' cannot be null
hatasını aldım ve Mysql e kayıt edtmedi.
id leri veritabanındaki başka bir tablodan çekiyorum
$id = post('id');
$mesaj = post('mesaj');
almaya çalışıyorum.
Bunun nedeni foreach ile ayni name="id"
değerine sahip input yazdırıyorsun.
name="id[]"
şeklinde yaparsan.
veriyi çekerkende array olarak alabilirsin.
<input type="hiden" name="id[]" value="<?=$t_row['id']?>"></input>
<input type="text" name="mesaj[]"></input>
print_r($_POST['id']); // name="id[]" olan inputların değerini array olarak verir
print_r($_POST['mesaj']);// name="mesaj[]" olan inputların değerini array olarak verir
Formdan veri alman gerekmiyorsa bu işi php kısmında yapmanı tavsiye ederim.
Ek olarak input'a id vermişsin ama bunlar tekrar ettiği için sorun yaşarsın.
id Unique (Benzersiz) olur.Yani sayfada o idye ait başka eleman olmaması gerekir.