• 29-12-2024, 09:44:40
    #1
    Bir form oluşturmaya çalışıyorum aslında oluşturdum da istediğim özelliği chatgpt ye verdim kod üzerinde derleme yapması için fakat sonuç gerçekten hüsran... Veritabanı olmadan tüm girdiler için Başvurular klasörü adı altında benzersiz klasör oluşturup verileri .txt içine atıyor ve fotoğraflarıda dosya ismi olarak upluyor. Buraya kadar her şey tamam fakat çocuk sayısı 1, 2, 3 veya 4 seçildiğinde ek form alanı (Kaç adet seçilmişse aynı form alanı seçilen adet kadar çıkacak.) belirleyemiyorum. Medeni durum "Evli" seçtiğimde istediğim alanı getiriyorum ama çocuk sayısında bunu beceremedim.

    <?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        // Form verilerini al
        $formData = [
            'ad' => htmlspecialchars($_POST['ad']),
            'ikinci_ad' => htmlspecialchars($_POST['ikinci_ad'] ?? ''),
            'soyad' => htmlspecialchars($_POST['soyad']),
            'cinsiyet' => htmlspecialchars($_POST['cinsiyet']),
            'dogum_tarihi' => htmlspecialchars($_POST['dogum_tarihi']),
            'dogum_yeri' => htmlspecialchars($_POST['dogum_yeri']),
            'dogdugu_ulke' => htmlspecialchars($_POST['dogdugu_ulke']),
            'adres' => htmlspecialchars($_POST['adres']),
            'adres_devami' => htmlspecialchars($_POST['adres_devami'] ?? ''),
            'ilce' => htmlspecialchars($_POST['ilce']),
            'il' => htmlspecialchars($_POST['il']),
            'posta_kodu' => htmlspecialchars($_POST['posta_kodu'] ?? ''),
            'ulke' => htmlspecialchars($_POST['ulke']),
            'telefon' => htmlspecialchars($_POST['telefon']),
            'email' => htmlspecialchars($_POST['email']),
            'egitim_seviyesi' => htmlspecialchars($_POST['egitim_seviyesi']),
            'medeni_durum' => htmlspecialchars($_POST['medeni_durum']),
            'cocuk_sayisi' => htmlspecialchars($_POST['cocuk_sayisi']),
        ];
    
        // Basvurular klasörünü kontrol et
        $baseDir = __DIR__ . '/basvurular/';
        if (!is_dir($baseDir)) {
            mkdir($baseDir, 0777, true);
        }
    
        // Benzersiz bir başvuru klasörü oluştur
        $uniqueDir = $baseDir . uniqid('basvuru_', true) . '/';
        mkdir($uniqueDir, 0777, true);
    
        // Verileri başvuru klasörüne kaydet
        $infoFilePath = $uniqueDir . 'bilgiler.txt';
        file_put_contents($infoFilePath, json_encode($formData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
    
        // Fotoğrafı kontrol et
        if (isset($_FILES['photo']) && $_FILES['photo']['error'] === UPLOAD_ERR_OK) {
            $fileName = basename($_FILES['photo']['name']);
            $fileTmpName = $_FILES['photo']['tmp_name'];
            $photoPath = $uniqueDir . $fileName;
    
            // Dosyayı taşı
            if (move_uploaded_file($fileTmpName, $photoPath)) {
                echo "<p>Başvuru başarıyla kaydedildi! Dosyanız yüklendi.</p>";
            } else {
                echo "<p>Dosya yükleme başarısız oldu.</p>";
            }
        } else {
            echo "<p>Fotoğraf yüklemeniz gerekiyor.</p>";
        }
    
        // Çocuk ve eş bilgileri için dinamik form işlemleri
        $cocukSayisi = (int) $formData['cocuk_sayisi'];
        if ($cocukSayisi > 0) {
            for ($i = 1; $i <= $cocukSayisi; $i++) {
                $cocukFormKey = "cocuk_$i";
                $cocukData = [
                    'ad' => htmlspecialchars($_POST["{$cocukFormKey}_ad"]),
                    'ikinci_ad' => htmlspecialchars($_POST["{$cocukFormKey}_ikinci_ad"] ?? ''),
                    'soyad' => htmlspecialchars($_POST["{$cocukFormKey}_soyad"]),
                    'dogum_tarihi' => htmlspecialchars($_POST["{$cocukFormKey}_dogum_tarihi"]),
                    'cinsiyet' => htmlspecialchars($_POST["{$cocukFormKey}_cinsiyet"]),
                    'dogum_yeri' => htmlspecialchars($_POST["{$cocukFormKey}_dogum_yeri"]),
                    'dogdugu_ulke' => htmlspecialchars($_POST["{$cocukFormKey}_dogdugu_ulke"]),
                ];
    
                $childInfoPath = $uniqueDir . "cocuk_$i.txt";
                file_put_contents($childInfoPath, json_encode($cocukData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
            }
        }
    
        if ($formData['medeni_durum'] === 'Evli') {
            $esData = [
                'ad' => htmlspecialchars($_POST['es_ad']),
                'ikinci_ad' => htmlspecialchars($_POST['es_ikinci_ad'] ?? ''),
                'soyad' => htmlspecialchars($_POST['es_soyad']),
                'dogum_tarihi' => htmlspecialchars($_POST['es_dogum_tarihi']),
                'dogum_yeri' => htmlspecialchars($_POST['es_dogum_yeri']),
                'dogdugu_ulke' => htmlspecialchars($_POST['es_dogdugu_ulke']),
                'email' => htmlspecialchars($_POST['es_email']),
                'egitim_seviyesi' => htmlspecialchars($_POST['es_egitim_seviyesi']),
            ];
    
            // Eşin fotoğrafını kontrol et
            if (isset($_FILES['es_photo']) && $_FILES['es_photo']['error'] === UPLOAD_ERR_OK) {
                $fileName = basename($_FILES['es_photo']['name']);
                $fileTmpName = $_FILES['es_photo']['tmp_name'];
                $spousePhotoPath = $uniqueDir . $fileName;
    
                // Dosyayı taşı
                if (!move_uploaded_file($fileTmpName, $spousePhotoPath)) {
                    echo "<p>Eş fotoğrafı yükleme başarısız oldu.</p>";
                }
            } else {
                echo "<p>Eşinizin fotoğrafını yüklemeniz gerekiyor.</p>";
            }
    
            $spouseInfoPath = $uniqueDir . 'es_bilgiler.txt';
            file_put_contents($spouseInfoPath, json_encode($esData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
        }
    } else {
    ?>
    <!DOCTYPE html>
    <html lang="tr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Green Card Başvuru Formu</title>
    </head>
    <body>
        <h1>Green Card Başvuru Formu</h1>
        <form action="" method="post" enctype="multipart/form-data">
            <label for="ad">Adınız*:</label><br>
            <input type="text" name="ad" id="ad" required><br><br>
    
            <label for="ikinci_ad">İkinci Adınız:</label><br>
            <input type="text" name="ikinci_ad" id="ikinci_ad"><br><br>
    
            <label for="soyad">Soyadınız*:</label><br>
            <input type="text" name="soyad" id="soyad" required><br><br>
    
            <label for="cinsiyet">Cinsiyet*:</label><br>
            <select name="cinsiyet" id="cinsiyet" required>
                <option value="">Seçiniz</option>
                <option value="Erkek">Erkek</option>
                <option value="Kadın">Kadın</option>
            </select><br><br>
    
            <label for="dogum_tarihi">Doğum Tarihi*:</label><br>
            <input type="date" name="dogum_tarihi" id="dogum_tarihi" required><br><br>
    
            <label for="dogum_yeri">Doğum Yeri*:</label><br>
            <input type="text" name="dogum_yeri" id="dogum_yeri" required><br><br>
    
            <label for="dogdugu_ulke">Doğduğunuz Ülke*:</label><br>
            <input type="text" name="dogdugu_ulke" id="dogdugu_ulke" required><br><br>
    
            <label for="adres">Adres*:</label><br>
            <input type="text" name="adres" id="adres" required><br><br>
    
            <label for="adres_devami">Adres Devamı:</label><br>
            <input type="text" name="adres_devami" id="adres_devami"><br><br>
    
            <label for="ilce">İlçe*:</label><br>
            <input type="text" name="ilce" id="ilce" required><br><br>
    
            <label for="il">İl*:</label><br>
            <input type="text" name="il" id="il" required><br><br>
    
            <label for="posta_kodu">Posta Kodu:</label><br>
            <input type="text" name="posta_kodu" id="posta_kodu"><br><br>
    
            <label for="ulke">Ülke*:</label><br>
            <input type="text" name="ulke" id="ulke" required><br><br>
    
            <label for="telefon">Telefon Numaranız*:</label><br>
            <input type="text" name="telefon" id="telefon" required><br><br>
    
            <label for="email">E-Posta Adresiniz*:</label><br>
            <input type="email" name="email" id="email" required><br><br>
    
            <label for="photo">Fotoğraf Yükleyiniz*:</label><br>
            <input type="file" name="photo" id="photo" accept="image/*" required><br><br>
    
            <label for="egitim_seviyesi">Bitirdiğiniz Eğitim Seviyesi*:</label><br>
            <select name="egitim_seviyesi" id="egitim_seviyesi" required>
                <option value="">Seçiniz</option>
                <option value="Sadece ilkokul">Sadece ilkokul</option>
                <option value="Lise Terk">Lise Terk</option>
                <option value="Lise Mezunu">Lise Mezunu</option>
                <option value="Meslek Yüksekokulu">Meslek Yüksekokulu</option>
                <option value="Üniversite Terk">Üniversite Terk</option>
                <option value="Üniversite Mezunu">Üniversite Mezunu</option>
            </select><br><br>
    
            <label for="medeni_durum">Medeni Durum*:</label><br>
            <select name="medeni_durum" id="medeni_durum" required>
                <option value="">Seçiniz</option>
                <option value="Bekar - Hiç evlenmemiş">Bekar - Hiç evlenmemiş</option>
                <option value="Evli">Evli</option>
                <option value="Evli ve eşi Amerikan Vatandaşı">Evli ve eşi Amerikan Vatandaşı</option>
                <option value="Boşanmış">Boşanmış</option>
                <option value="Dul">Dul</option>
            </select><br><br>
    
            <label for="cocuk_sayisi">Çocuk Sayısı*:</label><br>
            <select name="cocuk_sayisi" id="cocuk_sayisi" required>
                <option value="">Seçiniz</option>
                <option value="Yok">Yok</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
            </select><br><br>
    
            <!-- Eş Bilgileri Formu -->
            <div id="es_bilgileri" style="display:none;">
                <h3>Eş Bilgileri</h3>
    
                <label for="es_ad">Eşimin Adı*:</label><br>
                <input type="text" name="es_ad" id="es_ad"><br><br>
    
                <label for="es_ikinci_ad">Eşimin İkinci Adı:</label><br>
                <input type="text" name="es_ikinci_ad" id="es_ikinci_ad"><br><br>
    
                <label for="es_soyad">Eşimin Soyadı*:</label><br>
                <input type="text" name="es_soyad" id="es_soyad"><br><br>
    
                <label for="es_dogum_tarihi">Eşimin Doğum Tarihi*:</label><br>
                <input type="date" name="es_dogum_tarihi" id="es_dogum_tarihi"><br><br>
    
                <label for="es_dogum_yeri">Eşimin Doğum Yeri*:</label><br>
                <input type="text" name="es_dogum_yeri" id="es_dogum_yeri"><br><br>
    
                <label for="es_dogdugu_ulke">Eşimin Doğduğu Ülke*:</label><br>
                <input type="text" name="es_dogdugu_ulke" id="es_dogdugu_ulke"><br><br>
    
                <label for="es_email">Eşimin E-Posta Adresi*:</label><br>
                <input type="email" name="es_email" id="es_email"><br><br>
    
                <label for="es_photo">Eşimin Fotoğrafı*:</label><br>
                <input type="file" name="es_photo" id="es_photo" accept="image/*" required><br><br>
    
                <label for="es_egitim_seviyesi">Eşimin Eğitim Seviyesi*:</label><br>
                <select name="es_egitim_seviyesi" id="es_egitim_seviyesi" required>
                    <option value="">Seçiniz</option>
                    <option value="Sadece ilkokul">Sadece ilkokul</option>
                    <option value="Lise Terk">Lise Terk</option>
                    <option value="Lise Mezunu">Lise Mezunu</option>
                    <option value="Meslek Yüksekokulu">Meslek Yüksekokulu</option>
                    <option value="Üniversite Terk">Üniversite Terk</option>
                    <option value="Üniversite Mezunu">Üniversite Mezunu</option>
                </select><br><br>
            </div>
    
            <button type="submit">Başvuruyu Kaydet</button>
        </form>
    
        <script>
            document.getElementById('medeni_durum').addEventListener('change', function() {
                const esForm = document.getElementById('es_bilgileri');
                if (this.value === 'Evli') {
                    esForm.style.display = 'block';
                } else {
                    esForm.style.display = 'none';
                }
            });
        </script>
    </body>
    </html>
    <?php
    }
    ?>
  • 29-12-2024, 09:49:13
    #2
    <script>
    document.getElementById('cocuk_sayisi').addEventLi stener('change', function () {
    const cocukContainer = document.getElementById('cocuk_bilgileri');
    cocukContainer.innerHTML = ''; // Eski alanları temizle
    const cocukSayisi = parseInt(this.value) || 0;

    for (let i = 1; i <= cocukSayisi; i++) {
    const fieldset = document.createElement('fieldset');
    fieldset.innerHTML = `
    <legend>Çocuk ${i} Bilgileri</legend>
    <label for="cocuk_${i}_ad">Adı:</label><br>
    <input type="text" name="cocuk_${i}_ad" id="cocuk_${i}_ad" required><br><br>

    <label for="cocuk_${i}_ikinci_ad">İkinci Adı:</label><br>
    <input type="text" name="cocuk_${i}_ikinci_ad" id="cocuk_${i}_ikinci_ad"><br><br>

    <label for="cocuk_${i}_soyad">Soyadı:</label><br>
    <input type="text" name="cocuk_${i}_soyad" id="cocuk_${i}_soyad" required><br><br>

    <label for="cocuk_${i}_dogum_tarihi">Doğum Tarihi:</label><br>
    <input type="date" name="cocuk_${i}_dogum_tarihi" id="cocuk_${i}_dogum_tarihi" required><br><br>

    <label for="cocuk_${i}_cinsiyet">Cinsiyet:</label><br>
    <select name="cocuk_${i}_cinsiyet" id="cocuk_${i}_cinsiyet" required>
    <option value="">Seçiniz</option>
    <option value="Erkek">Erkek</option>
    <option value="Kadın">Kadın</option>
    </select><br><br>

    <label for="cocuk_${i}_dogum_yeri">Doğum Yeri:</label><br>
    <input type="text" name="cocuk_${i}_dogum_yeri" id="cocuk_${i}_dogum_yeri" required><br><br>

    <label for="cocuk_${i}_dogdugu_ulke">Doğduğu Ülke:</label><br>
    <input type="text" name="cocuk_${i}_dogdugu_ulke" id="cocuk_${i}_dogdugu_ulke" required><br><br>
    `;
    cocukContainer.appendChild(fieldset);
    }
    });
    </script>

    Çocuk bilgilerini yerleştireceğiniz bir konteyner ekleyin:

    <div id="cocuk_bilgileri"></div>

    Bu güncellemeyle dinamik alan ekleme problemini çözebilirsiniz.
  • 29-12-2024, 09:54:29
    #3
    kozmikkreatif adlı üyeden alıntı: mesajı görüntüle
    <script>
    document.getElementById('cocuk_sayisi').addEventLi stener('change', function () {
    const cocukContainer = document.getElementById('cocuk_bilgileri');
    cocukContainer.innerHTML = ''; // Eski alanları temizle
    const cocukSayisi = parseInt(this.value) || 0;

    for (let i = 1; i <= cocukSayisi; i++) {
    const fieldset = document.createElement('fieldset');
    fieldset.innerHTML = `
    <legend>Çocuk ${i} Bilgileri</legend>
    <label for="cocuk_${i}_ad">Adı:</label><br>
    <input type="text" name="cocuk_${i}_ad" id="cocuk_${i}_ad" required><br><br>

    <label for="cocuk_${i}_ikinci_ad">İkinci Adı:</label><br>
    <input type="text" name="cocuk_${i}_ikinci_ad" id="cocuk_${i}_ikinci_ad"><br><br>

    <label for="cocuk_${i}_soyad">Soyadı:</label><br>
    <input type="text" name="cocuk_${i}_soyad" id="cocuk_${i}_soyad" required><br><br>

    <label for="cocuk_${i}_dogum_tarihi">Doğum Tarihi:</label><br>
    <input type="date" name="cocuk_${i}_dogum_tarihi" id="cocuk_${i}_dogum_tarihi" required><br><br>

    <label for="cocuk_${i}_cinsiyet">Cinsiyet:</label><br>
    <select name="cocuk_${i}_cinsiyet" id="cocuk_${i}_cinsiyet" required>
    <option value="">Seçiniz</option>
    <option value="Erkek">Erkek</option>
    <option value="Kadın">Kadın</option>
    </select><br><br>

    <label for="cocuk_${i}_dogum_yeri">Doğum Yeri:</label><br>
    <input type="text" name="cocuk_${i}_dogum_yeri" id="cocuk_${i}_dogum_yeri" required><br><br>

    <label for="cocuk_${i}_dogdugu_ulke">Doğduğu Ülke:</label><br>
    <input type="text" name="cocuk_${i}_dogdugu_ulke" id="cocuk_${i}_dogdugu_ulke" required><br><br>
    `;
    cocukContainer.appendChild(fieldset);
    }
    });
    </script>

    Çocuk bilgilerini yerleştireceğiniz bir konteyner ekleyin:

    <div id="cocuk_bilgileri"></div>

    Bu güncellemeyle dinamik alan ekleme problemini çözebilirsiniz.
    Teşekkür ederim Hocam dünden beri uyumuyorum tam derlenmiş halini atar mısınız? Yani çocuk 0 ise ek alan zaten gelmiyor ama 1, 2, 3, 4 ise seçilen adet kadar input mu geliyor?
  • 29-12-2024, 09:57:23
    #4
    çocuk sayısı ekleme düğmesine onclick ile cocukEkle() fonksiyonu koyun. Fonksiyonda da sıfırdan element oluşturup form şablonunu içine enjekte edin. sonra da o elementi formda uygun bir yere enjekte edin.
    bunu verin chatgpt ye yapar hocam.
  • 29-12-2024, 10:01:00
    #5
    sacilannurlar adlı üyeden alıntı: mesajı görüntüle
    çocuk sayısı ekleme düğmesine onclick ile cocukEkle() fonksiyonu koyun. Fonksiyonda da sıfırdan element oluşturup form şablonunu içine enjekte edin. sonra da o elementi formda uygun bir yere enjekte edin.
    bunu verin chatgpt ye yapar hocam.
    Yapamadı hocam içinden geçti mahvetti. Zaten yazdığı kod hep beyaz sayfa hatası verdi. Veritabanı olmadan beyaz sayfa çıkarttı Dünya da bir ilktir. JS'den pek anlamıyorum hocam bi derlesek şu betiği..
  • 29-12-2024, 10:04:06
    #6
    dudbox adlı üyeden alıntı: mesajı görüntüle
    Yapamadı hocam içinden geçti mahvetti. Zaten yazdığı kod hep beyaz sayfa hatası verdi. Veritabanı olmadan beyaz sayfa çıkarttı Dünya da bir ilktir. JS'den pek anlamıyorum hocam bi derlesek şu betiği..
    yukarıdaki arkadaşın kodunu deneyin hocam olmazsa yazın bakalım
  • 29-12-2024, 10:08:07
    #7
    sacilannurlar adlı üyeden alıntı: mesajı görüntüle
    yukarıdaki arkadaşın kodunu deneyin hocam olmazsa yazın bakalım
    Yok çalışmadı hocam.
  • 29-12-2024, 10:11:13
    #8
    dudbox adlı üyeden alıntı: mesajı görüntüle
    Yok çalışmadı hocam.
    Bütün kodunuz en yukarıdaki mi?
  • 29-12-2024, 10:12:28
    #9
    bu olayı chatgpt yapmıyor diğer yapay zekalara bakın örnek https://www.tabnine.com/ sitesi bazıları yapay zekayı chatpgt den ibaret sanıyor ama değil