• 25-10-2023, 21:27:53
    #1
    Selamlar, Bir projemde sınırsız sayıda aşağıdaki kutulardan oluşturmak istiyorum. JS ile bunu yaptım burada sıkıntım yok. Ama sıkıntı yaşadığım konu php tarafına gönderirken istemediğim bir tarzda array oluşturuyor.

    Input name'lerim;
    title[]
    url[]
    icon[]

    Tüm yeni oluşan bloklarda bu şekilde oluyor.



    PHP tarafına bu şekilde gidiyor



    Ama benim yapmak istediğim yapı;

    $arr = [
    ["title" => "test", "url" => "test", "icon" => "test"],
    ["title" => "test 2", "url" => "test 2", "icon" => "test 2"]
    ];


    Önerilerinizi bekliyorum.
  • 25-10-2023, 21:38:23
    #2
    Web Tasarım ve Yazılım
    https://chat.openai.com/ buraya bi sorun hocam html olarak verir
  • 25-10-2023, 21:49:36
    #3
    Şu şekilde bir denermisiniz kendim yazmadım kodu.
    <form method="post" action="form_handler.php">
        <div id="dynamic-fields">
            <div class="field">
                <input type="text" name="title[]" placeholder="Title">
                <input type="text" name="url[]" placeholder="URL">
                <input type="text" name="icon[]" placeholder="Icon">
                <button type="button" class="remove-field">Remove</button>
            </div>
        </div>
        <button type="button" id="add-field">Add Field</button>
        <input type="submit" value="Submit">
    </form>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            const dynamicFields = document.getElementById('dynamic-fields');
            const addFieldButton = document.getElementById('add-field');
    
            addFieldButton.addEventListener('click', function() {
                const field = dynamicFields.querySelector('.field').cloneNode(true);
                dynamicFields.appendChild(field);
            });
    
            dynamicFields.addEventListener('click', function(event) {
                if (event.target && event.target.className === 'remove-field') {
                    event.target.parentElement.remove();
                }
            });
        });
    </script>
    $titles = $_POST['title'];
    $urls = $_POST['url'];
    $icons = $_POST['icon'];
    
    $combinedArray = [];
    for ($i = 0; $i < count($titles); $i++) {
        $combinedArray[] = [
            "title" => $titles[$i],
            "url" => $urls[$i],
            "icon" => $icons[$i]
        ];
    }
    
    print_r($combinedArray);
  • 25-10-2023, 23:04:10
    #4
    bostanci96 adlı üyeden alıntı: mesajı görüntüle
    https://chat.openai.com/ buraya bi sorun hocam html olarak verir
    Tam olarak burada çözemedim hocam. Biraz karmaşık bir durum olduğu için sürekli farklı sonuçlar veriyordu.

    Gelistir adlı üyeden alıntı: mesajı görüntüle
    Şu şekilde bir denermisiniz kendim yazmadım kodu.
    <form method="post" action="form_handler.php">
        <div id="dynamic-fields">
            <div class="field">
                <input type="text" name="title[]" placeholder="Title">
                <input type="text" name="url[]" placeholder="URL">
                <input type="text" name="icon[]" placeholder="Icon">
                <button type="button" class="remove-field">Remove</button>
            </div>
        </div>
        <button type="button" id="add-field">Add Field</button>
        <input type="submit" value="Submit">
    </form>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            const dynamicFields = document.getElementById('dynamic-fields');
            const addFieldButton = document.getElementById('add-field');
    
            addFieldButton.addEventListener('click', function() {
                const field = dynamicFields.querySelector('.field').cloneNode(true);
                dynamicFields.appendChild(field);
            });
    
            dynamicFields.addEventListener('click', function(event) {
                if (event.target && event.target.className === 'remove-field') {
                    event.target.parentElement.remove();
                }
            });
        });
    </script>
    $titles = $_POST['title'];
    $urls = $_POST['url'];
    $icons = $_POST['icon'];
    
    $combinedArray = [];
    for ($i = 0; $i < count($titles); $i++) {
        $combinedArray[] = [
            "title" => $titles[$i],
            "url" => $urls[$i],
            "icon" => $icons[$i]
        ];
    }
    
    print_r($combinedArray);
    Bu tam olarak istediğim gibi olmadı hocam. Ellerinize sağlık. JS tarafına her eklenen inputa otomatik olarak sayı ekleyen bir dizi ekledim name="data[1][title]" şeklinde oldu. 1 2 3 4 şeklinde gidiyor ekledikçe. PHP tarafına gönderdiğimde data array'inden istediğim şekilde alabildim.
  • 27-10-2023, 11:37:47
    #5
    js de inputları oluştururken name kısımlarını şu şekilde tanımla

    name="veri[][url]"
    name="veri[][title]"
    name="veri[][icon]"