recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Comment l'arrière-plan PHP traite-t-il plusieurs éléments de données pour le même élément soumis via le formulaire? ?

  1. La structure de la page est celle indiquée dans l'image ci-dessus et PHP est utilisé dans le backend S'il y a trois enregistrements dans l'expérience éducative et qu'ils sont soumis au backend lorsque vous cliquez sur Enregistrer, quelle devrait être la meilleure façon de le faire. gérer ça ? ?

  2. Si la page d'accueil peut générer dynamiquement une nouvelle ligne, comment gérer le problème du nom et des autres attributs entre plusieurs lignes ? ?

Pouvez-vous me donner l'idée générale ? ?

高洛峰高洛峰2827 Il y a quelques jours672

répondre à tous(4)je répondrai

  • 習慣沉默

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

    Par exemple, il y a les champs suivants

    scholl_name
    education
    address

    Modifier l'original

    Par exemple, son identifiant est 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>

    Nouvellement ajouté

    Définir une variable createdIndex = 0
    Nouveau

    //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++;

    Supprimer

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

    Traitement en arrière-plan

    $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;
    }
    

    C'est le moyen le plus compatible. Si vous utilisez Vue ou similaire, vous pouvez également utiliser la soumission JSON, car Vue peut surveiller si le formulaire a été modifié et enregistrer uniquement le formulaire modifié.

    répondre
    0
  • 大家讲道理

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

    Première question

    Utilisez le formulaire de tableau lors de la soumission sur le front-end :

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

    Le serveur parcourt les données et les enregistre dans la base de données.

    Deuxième question

    le nom n'est pas en conflit, seulement les conflits d'identité. Pouvez-vous décrire le problème plus en détail ?

    répondre
    0
  • 给我你的怀抱

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

    1. Les données soumises en arrière-plan sont reçues directement par $_POST, puis parcourues en boucle pour vérifier les données correspondantes, elles sont stockées dans la base de données
    2. la ligne nouvellement ajoutée est la même ;

    répondre
    0
  • 某草草

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

    La première option :
    Lorsque vous cliquez sur Soumettre, traitez les données souhaitées via js (par exemple, formatez-les dans un tableau) et placez-les dans un champ masqué avant de soumettre le formulaire
    La deuxième option :
    Effectuez le traitement sur le formulaire nom de l'élément Cela a été clairement indiqué ci-dessus :
    La troisième option : (similaire à la deuxième)

    1. Définissez d'abord le modèle pour ajouter une nouvelle ligne

    <script type="text/template" id="tpl_xxx">
    //html元素
    <tr>
        <input name="school[]" />
        <input name="remark[]" />
    </tr>
    </script>
    1. Lors de l'ajout d'une nouvelle ligne, clonez tpl_xxx et placez-la à l'endroit correspondant (comme la dernière ligne du tableau)

    2. Traitement PHP post-soumission

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

    répondre
    0
  • Annulerrépondre