PDO çok kayıt sorunu

PHP Programlama dili hakkında tartışmalar, paylaşım ve yardımlaşma forumu.
Cevapla
asiyan27
Kayıtlı Kullanıcı
Mesajlar: 1
Kayıt: 04.11.2022, 15:53

PDO çok kayıt sorunu

Mesaj gönderen asiyan27 »

Ö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.
literallyking
Kayıtlı Kullanıcı
Mesajlar: 1
Kayıt: 10.10.2024, 09:53

Re: PDO çok kayıt sorunu

Mesaj gönderen literallyking »

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:

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";
    }
}
Bu kod, students_status, students_no, ve tarih verilerini aynı satıra kaydeder.
Kullanıcı avatarı
TRWE_2012
Kayıtlı Kullanıcı
Mesajlar: 32
Kayıt: 14.05.2022, 06:59

Re: PDO çok kayıt sorunu

Mesaj gönderen TRWE_2012 »

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";
    }
}
Kod Açıklaması :

Öğ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.
Cevapla

“PHP” sayfasına dön

Kimler çevrimiçi

Bu forumu görüntüleyen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 3 misafir