Я прошу прощения за неопределенность названия, но мне трудно это выразить словами.
У меня есть форма, которая содержит key:value
пары, которые считываются из базы данных, помещаются как значения во входные данные, а затем снова считываются (возможно, редактируются, удаляются или добавляются). На стороне сервера мне нужно выяснить, что именно пользователь сделал, чтобы испортить мои данные.
Пример:
<input type='text' name='keyID[]' value='1'/>
<input type='text' name='key[]' value='someKey'/>
<input type='text' name='value[]' value='someValue'/>
<input type='text' name='keyID[]' value='2'/>
<input type='text' name='key[]' value='someOtherKey'/>
<input type='text' name='value[]' value='someOtherValue'/>
<input type='text' name='keyID[]' value='3'/>
<input type='text' name='key[]' value='yetAnotherKey'/>
<input type='text' name='value[]' value='yetAnotherValue'/>
<input type='text' name='key[]' value='aCompletelyNewKey'/>
<input type='text' name='value[]' value='aCompletelyNewValue'/>
Когда форма отправлена, я удаляю исходные данные, выполняю цикл foreach через ключи (получая n-е значение других массивов в качестве моих новых данных) и добавляю их в базу данных.
Это работало до тех пор, пока я не наткнулся на препятствие с моим обновленным дизайном базы данных - теперь мне нужно иметь возможность сказать, что не было отправлено (удалено на странице), что еще осталось (было изменено или оставлено как есть) и что нового (не будет keyID[]
).
Я использовал array_diff()
для списка сохраненных в данный момент keyID[]
s, чтобы выяснить, что нужно удалить и обновить, но как мне выяснить, что было добавлено, когда не будет keyID[]
для новых входов (но будет и key[]
и value[]
)?
Также я не могу гарантировать порядок, в котором будут передаваться значения массивов, поэтому я не думаю, что подсчет до конца массива keyID[]
, а затем проверка остальных на наличие дополнительных значений даст мне правильный значения каждый раз.
Есть идеи?