Öncelikle Herkese Merhabalar,
if (isset($_POST['yoklamayap'])) {
foreach ($_POST["students_status"] as $row ) {
$ekle=$baglanti->prepare("INSERT INTO yoklama SET students_status=:i");
$ekle->execute([':i'=>$row]);
}
foreach ($_POST["tarih"] as $row ) {
$ekle=$baglanti->prepare("INSERT INTO yoklama SET tarih=:i");
$ekle->execute([':i'=>$row]);
}
foreach ($_POST["students_no"] as $row ) {
$ekle=$baglanti->prepare("INSERT INTO yoklama SET students_no=:i");
$ekle->execute([':i'=>$row]);
}
if ($ekle) {
echo "Kayıt Başarılı";
// code...
}else {
echo "Kayıt Başarısız";}
}
amacım bu kodlar çoklu kayıt işlemi yapmak, kayıt da yapıyor. Anacak her bir foreach döngüsünü ayrı satırlara kaydedyor. Oysa ki ben istiyorum ki;
students_status students_no ve tarih aynı satıra kaydedilsin. Şimdiden destekleriniz için teşekkür ederim.
PDO çok kayıt sorunu
-
- Kayıtlı Kullanıcı
- Mesajlar: 1
- Kayıt: 10.10.2024, 09:53
Re: PDO çok kayıt sorunu
Merhaba! Kodunuzda her bir foreach döngüsünde sadece tek bir alanı eklediğiniz için her satırda sadece o alan kaydediliyor. Üç veriyi (students_status, students_no, ve tarih) aynı satıra eklemek istiyorsanız, tüm verileri tek bir sorgu içinde kullanabilirsiniz. Kodunuzu şu şekilde düzenleyebilirsiniz:
Bu kod, students_status, students_no, ve tarih verilerini aynı satıra kaydeder.
Kod: Tümünü seç
if (isset($_POST['yoklamayap'])) {
foreach ($_POST["students_status"] as $key => $value) {
$ekle = $baglanti->prepare("INSERT INTO yoklama (students_status, students_no, tarih) VALUES (:status, :no, :tarih)");
$ekle->execute([
':status' => $_POST["students_status"][$key],
':no' => $_POST["students_no"][$key],
':tarih' => $_POST["tarih"][$key]
]);
}
if ($ekle) {
echo "Kayıt Başarılı";
} else {
echo "Kayıt Başarısız";
}
}
Re: PDO çok kayıt sorunu
Kod: Tümünü seç
if (isset($_POST['yoklamayap'])) {
// Öğrenci sayısını al
$students_count = count($_POST["students_status"]);
// Çoklu kayıt için bir SQL sorgusu hazırlayın
$ekle = $baglanti->prepare("INSERT INTO yoklama (students_status, tarih, students_no) VALUES (:status, :tarih, :no)");
// Her bir öğrenci için döngü
for ($i = 0; $i < $students_count; $i++) {
// Değerleri al
$status = $_POST["students_status"][$i];
$tarih = $_POST["tarih"][$i];
$no = $_POST["students_no"][$i];
// Sorguyu çalıştır
$ekle->execute([
':status' => $status,
':tarih' => $tarih,
':no' => $no
]);
}
// Kayıt işleminin başarılı olup olmadığını kontrol et
if ($ekle) {
echo "Kayıt Başarılı";
} else {
echo "Kayıt Başarısız";
}
}
Öğrenci Sayısını Alma:
count($_POST["students_status"]) ile öğrenci sayısını alıyoruz. Bu, döngüde kaç kez işlem yapacağımızı belirler.
Tek Sorgu ile Kayıt:
INSERT INTO yoklama (students_status, tarih, students_no) VALUES (:status, :tarih, :no) sorgusunu tek bir prepare ile hazırlıyoruz. Bu sorgu, her bir öğrencinin durumu, tarihi ve numarasını aynı satıra kaydedecek.
Döngü Kullanımı:
for döngüsü ile her bir öğrencinin bilgilerini alıyoruz ve execute ile sorguyu çalıştırıyoruz. Her döngüde, ilgili değerleri alıp sorguya bağlıyoruz.
Kayıt Kontrolü:
Kayıt işleminin başarılı olup olmadığını kontrol etmek için if ($ekle) kontrolü yapıyoruz. Bu şekilde, students_status, tarih ve students_no değerlerini aynı satıra kaydetmiş olursunuz.
Kimler çevrimiçi
Bu forumu görüntüleyen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 3 misafir