динамически устанавливать количество экземпляров формы и сохранять все как csv, используя php - PullRequest
0 голосов
/ 16 июня 2009

Я работаю над сценарием php, чтобы взять существующий файл csv (мы назовем этот шаблон), открыть его на странице и заполнить редактируемые текстовые поля данными от 1 до 50 раз (пользователь сам решает, сколько) После редактирования по желанию пользователя все можно сохранить в одном комбинированном CSV-файле, отдельном от шаблона.

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

Диаграмма Ссылка

Область, выделенная красным, - это область, с которой у меня проблемы.

Шаблоны содержат около 25 полей, поэтому каждый экземпляр шаблона (клон) будет иметь 25 редактируемых полей, заполненных исходными данными. Я уверен, что могу сделать это сам, но мне нужно указать в правильном направлении, как динамически устанавливать количество клонов исходного шаблона, а затем объединить указанные клоны в виде строк в одном файле CSV после завершения.

Ответы [ 2 ]

0 голосов
/ 16 июня 2009

Я мог бы совершенно неправильно понять, что вы пытаетесь сделать, но я собираюсь догадаться.

Возьмите количество клонов, которое выбрал пользователь, и переберите редактируемую форму. Использовать массивы в качестве имени формы / полей

<?php foreach( range(1, NUMBER_OF_CLONES ) as $clone_number ): ?>
<form name="form[<?= $clone_number ?>]">
<input type="text" name="form[<?= $clone_number ?>]['name']">
</form>
<?php endif; ?>

Это будет отображать NUMBER_OF_CLONES формы.

Чтобы сохранить все это в одном файловом цикле над массивом $ _POST ['form'], который будет иметь элементы (формы) NUMBER_OF_FORMS и создать CSV.

Если я полностью упускаю вашу точку зрения, извините

0 голосов
/ 16 июня 2009

Вы можете назвать свои поля как массивы:

<input type='text' name='field1[]'>
<input type='text' name='field2[]'>
...
<input type='text' name='field25[]'>

Затем отследите, сколько у вас полей и сколько строк:

<input type='hidden' name='rowcount' value='50'>
<input type='hidden' name='fieldcount' value='25'>

Тогда на стороне сервера $_POST['field1'] будет массивом, которым вы можете легко манипулировать:

$fields = $_POST['fieldcount'];
$rows = $_POST['rowcount'];

$csv = array();
for($y = 0; $y < $rows; $y++) {
    $row = array();
    for($x = 0; $x < $count; $x++) {
        $row[$x] = $_POST['field' . ++$x];
    }
    $csv[] = $row;
}
// use fputcsv here.

Это приблизительная оценка, но вы можете взять ее оттуда ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...