Maison > Questions et réponses > le corps du texte
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 ? ?
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 ? ?
習慣沉默2017-05-16 13:16:33
Par exemple, il y a les champs suivants
scholl_name
education
address
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>
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++;
function delete(id)
{
if (id.indexOf('new_') < 0) //不是新增的, 新增一条删除记录到form
$('<input name="deleted[]" value="'+id+'">').appendTo('#this-form');
//删除本行
$('#' + id).remove();
}
$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é.
大家讲道理2017-05-16 13:16:33
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.
le nom n'est pas en conflit, seulement les conflits d'identité. Pouvez-vous décrire le problème plus en détail ?
给我你的怀抱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 ;
某草草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)
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>
Lors de l'ajout d'une nouvelle ligne, clonez tpl_xxx et placez-la à l'endroit correspondant (comme la dernière ligne du tableau)
Traitement PHP post-soumission
$schools = $_POST['schools'];
$remarks = $_POST['remarks'];
//$schools[0], $remarks[0], ... 组成第一行数据