cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Bagaimanakah latar belakang php memproses beberapa keping data untuk item yang sama yang dihantar melalui borang? ?

  1. Struktur halaman adalah seperti yang ditunjukkan dalam gambar di atas, dan PHP digunakan di bahagian belakang Jika terdapat tiga rekod dalam pengalaman pendidikan, dan ia diserahkan kepada bahagian belakang apabila anda mengklik Simpan, apakah cara terbaik untuk. mengendalikannya? ?

  2. Jika halaman depan boleh menjana baris baharu secara dinamik, bagaimana untuk menangani masalah nama dan atribut lain antara berbilang baris? ?

Bolehkah anda memberitahu saya idea umum? ?

高洛峰高洛峰2822 hari yang lalu669

membalas semua(4)saya akan balas

  • 習慣沉默

    習慣沉默2017-05-16 13:16:33

    Sebagai contoh, terdapat medan berikut

    scholl_name
    education
    address

    Ubah suai yang asal

    Sebagai contoh, IDnya ialah 123

    <p>
        <input name="old[123][scholl_name]" value="....">
        <input name="old[123][education]" value="....">
        <input name="old[123][address]" value="...."> 
        <a href="javascript:delete(123)">删除</a>
    </p>

    Baru ditambah

    Tetapkan pembolehubah createdIndex = 0
    Baharu

    //createdIndex 使用js输出
    <p id="new_createdIndex">
        <input name="create[new_createdIndex][scholl_name]" value="">
        <input name="create[new_createdIndex][education]" value="">
        <input name="create[new_createdIndex][address]" value=""> 
        <a href="javascript:delete('new_createdIndex')">删除</a>
    </p>
    
    //每次新增后都累加
    createdIndex++;

    Padamkan

    function delete(id)
    {
        if (id.indexOf('new_') < 0) //不是新增的, 新增一条删除记录到form
           $('<input name="deleted[]" value="'+id+'">').appendTo('#this-form');
        //删除本行
        $('#' + id).remove();
    }

    Pemprosesan latar belakang

    $deleted = $_POST['deleted'];
    foreach($deleted as $id)
    {
       数据库删除对应的$id
    }
    $create = $_POST['create'];
    
    //如果需要排序 可以用sort或rsort
    
    foreach($create as $v)
    {
        /*
        结构是: 
        $v = [
            'school' => 'Your value',
            'education' => '...',
            'address' => ''
        ];
        */
        insert into table 
    }
       
    
    $old = $_POST['old'];
    foreach($old as $id => $v)
    {
       //结构同上
       update table set .... where id = $id;
    }
    

    Ini adalah cara yang paling serasi Jika anda menggunakan Vue atau sebagainya, anda juga boleh menggunakan penyerahan JSON, kerana Vue boleh memantau sama ada borang telah diubah suai dan hanya merekodkan borang yang diubah suai.

    balas
    0
  • 大家讲道理

    大家讲道理2017-05-16 13:16:33

    Soalan pertama

    Gunakan borang tatasusunan apabila menyerahkan pada bahagian hadapan:

    [{
        "school": "中山大学"
        ...
    }, {
        "school": "华南理工大学"
        ...
    }]

    Pelayan merentasi data dan menyimpannya ke pangkalan data.

    Soalan kedua

    nama tidak bercanggah, hanya konflik id. Bolehkah anda menerangkan masalah dengan lebih terperinci?

    balas
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:16:33

    1. Data yang diserahkan ke latar belakang diterima secara langsung oleh $_POST, dan kemudian dilalui dalam gelung untuk mengesahkan data yang sepadan Setelah lulus pengesahan, ia disimpan dalam pangkalan data
    2 baris yang baru ditambah adalah sama

    balas
    0
  • 某草草

    某草草2017-05-16 13:16:33

    Pilihan pertama:
    Apabila anda mengklik hantar, proses data yang anda mahu melalui js (contohnya, formatkannya ke dalam tatasusunan) dan letakkannya ke dalam medan tersembunyi sebelum menyerahkan borang
    Pilihan kedua:
    Lakukan pemprosesan pada borang nama unsur Ia telah dinyatakan dengan jelas di atas:
    Pilihan ketiga: (serupa dengan yang kedua)

    1. Tentukan dahulu templat untuk menambah baris baharu

    <script type="text/template" id="tpl_xxx">
    //html元素
    <tr>
        <input name="school[]" />
        <input name="remark[]" />
    </tr>
    </script>
    1. Apabila menambah baris baharu, klon tpl_xxx dan letakkan di tempat yang sepadan (seperti baris terakhir jadual)

    2. Pemprosesan PHP selepas penyerahan

    $schools = $_POST['schools'];
    $remarks = $_POST['remarks'];
    //$schools[0], $remarks[0], ... 组成第一行数据

    balas
    0
  • Batalbalas