Merhabalar. Az önce bir projem için kod yazarken şunu düşündüm. Yahu foreach döngüsünü yeni başlayanlar çok kullanıyor. İleride iş alıp yapmaya çalışırken html tarafından name değerlerini dizi şeklinde gönderdiklerinde veritabanına eklerken yine foreach döngüsünü deneyip kanser olabilirler. Hemen sonrasında bir örnek hazırlayıp buraya bırakarak arayan arkadaşların sonuna kadar faydalanmasını sağlamak istedim. Şimdiden herkese kolay gelsin, bol kazançlar dilerim.
Dipnot: Ben Tayfun Erbilen'in BasicDB sınıfını kullandığım için örnek bu şekilde olacak. Eğer takılan olursa yorumlarda belirttiği vakit sql sorgusunu da memnuniyetle yazarım.
Form Control (kopyala yapıştır yapabilirsiniz):
function form_control(...$except_these){
unset($_POST['submit']);
$data = [];
$error = false;
foreach ($_POST as $key => $value){
if (!in_array($key, $except_these) && !post($key)){
$error = true;
} else {
$data[$key] = post($key);
}
}
if ($error){
return false;
}
return $data;
}Döngü:
if ($data = form_control()){ // Form Control fonksiyonundan gelen değerleri bir değişkene atayalım.
$count = count($data['ornek_name']); // POST içinden gelen herhangi bir name'i sayalım.
for ($i = 0; $i < $count; $i++){ // Döngü 0'dan başlamalı. Örneğin elimizde 2 veri varsa döngü 0, 1 olacak ve 2 olmadan duracak. Doğru bir işlem yapılacak.
$insert = $db->insert('ornek_table') // Hangi tabloya insert ediyoruz?
->set([
/* Şimdi burası önemli. Klasik veritabanındaki column => değer eşleştirmesini yaptıktan sonra değere $ornek['posttan_gelen_name'][$i] şeklinde doldurm alıyız. İndis değerlerine yukarıda örnek vermiştim. 0'dan başlayarak son indise kadar döngü içerisine her bir turda veritabanına kayıt yapılabilmesi için bu şekilde yapmalıyız. Bunu yeni başlıyorsanız ilk önce kafanızda pekişsin diye veritabanına insert içinde değilde dışarıda deneyebilirsiniz. */
'ornek_column1' => $data['ornek_name1'][$i],
'ornek_column2' => $data['ornek_name2'][$i],
'ornek_column3' => $data['ornek_name3'][$i],
'ornek_column4' => $data['ornek_name4'][$i]
]);
}
}