Отправка значений редактируемого счета-фактуры jQuery в базу данных MySQL с использованием PHP

Я использую этот фантастический пример редактируемого счета jQuery в качестве шаблона для создания динамических счета для моих пользователей.

Это работает достаточно хорошо, и я успешно генерирую элементы, но теперь мне нужно сохранить значения, введенные в различные текстовые поля, и ввести их в базу данных MySQL.

Я уверен, что могу выполнять ввод MySQL с помощью PHP, но что делает это сложнее, так это то, что количество «элементов счета» полностью динамическое, и я не уверен, как я могу заставить PHP «проверить» через текстовые поля страниц и найти новые, сгруппируйте их, а затем добавьте в мою БД.

Вот пример моего кода, который я использую для создания элементов:

<?php if($invoice_items->result_array()) { ?>
<?php foreach($invoice_items->result_array() as $invoice_Row): ?>
    <tr class="item-row">
            <td class="item-name">
            <div class="delete-wpr">
                <textarea><?php echo $invoice_Row['item_name']; ?> Facility Booking</textarea>
                <a class="delete" href="javascript:;" title="Remove row">X</a>
            </div>
        </td>
            <td class="description">
                <textarea><?php echo $invoice_Row['description']; ?></textarea>
            </td>
            <td><textarea class="cost">$<?php echo $invoice_Row['hourly_cost']; ?>.00</textarea></td>
            <td><textarea class="qty"><?php echo $total_time_hours; ?></textarea></td>
            <td><span class="price">$<?php $unit_total = $invoice_Row['hourly_cost']* $total_time_hours; echo $unit_total;?>.00</span></td>
    </tr>
<?php endforeach; ?>
<?php } ?>  

Я думаю, что мне нужно, возможно, создать уникальный идентификатор для каждого текстового поля элементов счета, то есть item-1-desc, item-1-cost и т. д., но это требует написания javascript, о котором я почти ничего не знаю. Кроме того, мне все равно придется заставить PHP как-то перебирать идентификатор, пока он не достигнет конца...

Если кто-то пробовал что-то подобное раньше или вы можете увидеть решение моей проблемы, я был бы очень признателен за вашу помощь.

Спасибо,

Тим


person Tim    schedule 11.08.2010    source источник


Ответы (1)


Используйте синтаксис массива формы php name="item-desc[<?php echo $id?>]"

Затем вы можете повторить их на бэкэнде с помощью foreach для сохранения данных. У вас есть идентификаторы в качестве ключей к массивам, поэтому обновление базы данных должно быть довольно тривиальным.

person Byron Whitlock    schedule 12.08.2010
comment
Эй, Байрон, спасибо за публикацию. Пожалуйста, поправьте меня, если я ошибаюсь, но что происходит, когда пользователь сам добавляет строку через интерфейс jquery. Эти новые данные не будут получены из цикла PHP foreach, и поэтому я не смогу вставить данные в базу данных, потому что PHP не знает, что они существуют. Есть ли способ обойти это? - person Tim; 13.08.2010
comment
Вы должны установить item-id[]=$id для строк, которые уже существуют, и использовать item-desc[], затем вы выполняете итерацию item-desc, проверяя идентификаторы в item-id. Если его нет в идентификаторе элемента, то это новая строка. Или вы можете добавить обратный вызов ajax для обновления бэкэнда и установить идентификатор из результата. - person Byron Whitlock; 13.08.2010