• 15-09-2024, 01:37:26
    #1
    merhabalar hocalarım şöyle bir sorunum var formumda kardeş sayısı kısmı var kardeş sayısı girince ona göre kardeş bölümlerini açıyor

        <script>
            document.getElementById('okuyan_kardes_sayisi').addEventListener('input', function() {
                const numOfSiblings = parseInt(this.value);
                const container = document.getElementById('kardes_bilgileri');
                container.innerHTML = '';
                for (let i = 1; i <= numOfSiblings; i++) {
                    const siblingDiv = document.createElement('div');
                    siblingDiv.innerHTML = `
                        <h4>Kardeş ${i}</h4>
                        <label for="kardes_ad_soyad">Adı Soyadı:</label>
                        <input type="text" id="kardes_ad_soyad" name="kardes_ad_soyad" required>
                        <label for="kardes_dogum_tarihi">Doğum Tarihi:</label>
                        <input type="date" id="kardes_dogum_tarihi" name="kardes_dogum_tarihi" required>
                        <label for="kardes_egitim_durumu">Eğitim Durumu:</label>
                        <select id="kardes_egitim_durumu" name="kardes_egitim_durumu">
                            <option value="">Seçiniz</option>
                            <option value="ilkogretim">İlköğretim</option>
                            <option value="lise">Lise</option>
                            <option value="universite">Üniversite</option>
                        </select>
                        <br><br>
                    `;
                    container.appendChild(siblingDiv);
                }
            });
    </script>
    burdaki verileri kardeşler adındaki mysql tabloma bir türlü ekletemedim altta yer alıyor denemem

            // Başvurunun ID'sini al
            $basvuru_id = $pdo->lastInsertId();
            // Kardeş bilgilerini ekle
            $stmt = $pdo->prepare("INSERT INTO kardesler (basvuru_id, ad_soyad, dogum_tarihi, egitim_durumu)
            VALUES (:basvuru_id, :kardes_ad_soyad, kardes_dogum_tarihi, kardes_egitim_durumu)");
            foreach ($kardesler as $kardes) {
                $stmt->execute([
                    'basvuru_id' => $basvuru_id,
                    'ad_soyad' => $kardes['kardes_ad_soyad'],
                    'dogum_tarihi' => $kardes['kardes_dogum_tarihi'],
                    'egitim_durumu' => $kardes['kardes_egitim_durumu'],
                ]);
            }
            $pdo->commit();
    Yardımcı olabilecek bir hocamdan tavsiye bekliyorum.
  • 15-09-2024, 02:06:09
    #2
    fatbotter.com
    Form verilerinizi phpye gönderirken eklenen kardeş inputlarının name isimleri birbirinden farklı olmalıdır.

    Örneğin 2 kardeş varsa

    name="kardes1"
    name="kardes2"

    gibi.

    document.getElementById('okuyan_kardes_sayisi').addEventListener('input', function() {
        const numOfSiblings = parseInt(this.value);
        const container = document.getElementById('kardes_bilgileri');
        container.innerHTML = '';
        for (let i = 1; i <= numOfSiblings; i++) {
            const siblingDiv = document.createElement('div');
            siblingDiv.innerHTML = `
                <h4>Kardeş ${i}</h4>
                <label for="kardes_ad_soyad_${i}">Adı Soyadı:</label>
                <input type="text" id="kardes_ad_soyad_${i}" name="kardes[${i}][ad_soyad]" required>
                <label for="kardes_dogum_tarihi_${i}">Doğum Tarihi:</label>
                <input type="date" id="kardes_dogum_tarihi_${i}" name="kardes[${i}][dogum_tarihi]" required>
                <label for="kardes_egitim_durumu_${i}">Eğitim Durumu:</label>
                <select id="kardes_egitim_durumu_${i}" name="kardes[${i}][egitim_durumu]">
                    <option value="">Seçiniz</option>
                    <option value="ilkogretim">İlköğretim</option>
                    <option value="lise">Lise</option>
                    <option value="universite">Üniversite</option>
                </select>
                <br><br>
            `;
            container.appendChild(siblingDiv);
        }
    });
        // Kardeş bilgilerini al
        $kardesler = $_POST['kardes'] ?? [];
    
        try {
            $pdo->beginTransaction();
    
            // Başvuru bilgilerini kaydetme kodları...
    
            // Başvurunun ID'sini al
            $basvuru_id = $pdo->lastInsertId();
    
            // Kardeş bilgilerini ekle
            $stmt = $pdo->prepare("INSERT INTO kardesler (basvuru_id, ad_soyad, dogum_tarihi, egitim_durumu) VALUES (:basvuru_id, :ad_soyad, :dogum_tarihi, :egitim_durumu)");
    
            foreach ($kardesler as $kardes) {
                $stmt->execute([
                    'basvuru_id' => $basvuru_id,
                    'ad_soyad' => $kardes['ad_soyad'],
                    'dogum_tarihi' => $kardes['dogum_tarihi'],
                    'egitim_durumu' => $kardes['egitim_durumu'],
                ]);
            }
    
            $pdo->commit();
            echo "Başvuru ve kardeş bilgileri başarıyla kaydedildi.";
        } catch (Exception $e) {
            $pdo->rollBack();
            echo "Hata oluştu: " . $e->getMessage();
        }
    Bu şekilde dener misiniz? Hata alırsanız görebilirsiniz böylece.
  • 15-09-2024, 02:13:24
    #3
    lookout adlı üyeden alıntı: mesajı görüntüle
    Form verilerinizi phpye gönderirken eklenen kardeş inputlarının name isimleri birbirinden farklı olmalıdır.

    Örneğin 2 kardeş varsa

    name="kardes1"
    name="kardes2"

    gibi.

    document.getElementById('okuyan_kardes_sayisi').addEventListener('input', function() {
        const numOfSiblings = parseInt(this.value);
        const container = document.getElementById('kardes_bilgileri');
        container.innerHTML = '';
        for (let i = 1; i <= numOfSiblings; i++) {
            const siblingDiv = document.createElement('div');
            siblingDiv.innerHTML = `
                <h4>Kardeş ${i}</h4>
                <label for="kardes_ad_soyad_${i}">Adı Soyadı:</label>
                <input type="text" id="kardes_ad_soyad_${i}" name="kardes[${i}][ad_soyad]" required>
                <label for="kardes_dogum_tarihi_${i}">Doğum Tarihi:</label>
                <input type="date" id="kardes_dogum_tarihi_${i}" name="kardes[${i}][dogum_tarihi]" required>
                <label for="kardes_egitim_durumu_${i}">Eğitim Durumu:</label>
                <select id="kardes_egitim_durumu_${i}" name="kardes[${i}][egitim_durumu]">
                    <option value="">Seçiniz</option>
                    <option value="ilkogretim">İlköğretim</option>
                    <option value="lise">Lise</option>
                    <option value="universite">Üniversite</option>
                </select>
                <br><br>
            `;
            container.appendChild(siblingDiv);
        }
    });
        // Kardeş bilgilerini al
        $kardesler = $_POST['kardes'] ?? [];
    
        try {
            $pdo->beginTransaction();
    
            // Başvuru bilgilerini kaydetme kodları...
    
            // Başvurunun ID'sini al
            $basvuru_id = $pdo->lastInsertId();
    
            // Kardeş bilgilerini ekle
            $stmt = $pdo->prepare("INSERT INTO kardesler (basvuru_id, ad_soyad, dogum_tarihi, egitim_durumu) VALUES (:basvuru_id, :ad_soyad, :dogum_tarihi, :egitim_durumu)");
    
            foreach ($kardesler as $kardes) {
                $stmt->execute([
                    'basvuru_id' => $basvuru_id,
                    'ad_soyad' => $kardes['ad_soyad'],
                    'dogum_tarihi' => $kardes['dogum_tarihi'],
                    'egitim_durumu' => $kardes['egitim_durumu'],
                ]);
            }
    
            $pdo->commit();
            echo "Başvuru ve kardeş bilgileri başarıyla kaydedildi.";
        } catch (Exception $e) {
            $pdo->rollBack();
            echo "Hata oluştu: " . $e->getMessage();
        }
    Bu şekilde dener misiniz? Hata alırsanız görebilirsiniz böylece.

    Hocam denedim aynen dediğiniz şekilde yine olmadı basvurular tabloma veri gidiyor ancak kardesler tabloma gitmiyor



    aynı zamanda hata da vermiyor bu sorunu çözmekte çok zorlandım müsaitseniz dc wp herhangi bir şekilde anydesk de olur yardımcı olabilir misiniz
  • 15-09-2024, 02:32:21
    #4
    birden fazla inputtan gelen veriyi işlerken for kullanmalısınız. name'leri dizi olarak ayarlayın öncelikle. name="kardes_ad_soyad[]" gibi.

    foreach yerine bu kodu ekleyin.

    $kardes_ad_soyad = $_POST['kardes_ad_soyad'] ?? [];
    $kardes_dogum_tarihi = $_POST['kardes_dogum_tarihi'] ?? [];
    $kardes_egitim_durumu = $_POST['kardes_egitim_durumu'] ?? [];
    
    for ($i = 0; $i < count($kardes_ad_soyad); $i++) {
    $stmt->execute([
    'basvuru_id' => $basvuru_id,
    'ad_soyad' => $kardes_ad_soyad[$i],
    'dogum_tarihi' => $kardes_dogum_tarihi[$i],
    'egitim_durumu' => $kardes_egitim_durumu[$i],
    ]);
        }
    VALUES kısmında kardes_dogum_tarihi, kardes_egitim_durumu bu değerleri de düzeltin -> :kardes_dogum_tarihi, :kardes_egitim_durumu