Я хочу создать Динамическую HTML-форму с использованием массива, но всякий раз, когда я заполняю форму, вывод не получает последовательность массива со значением. Я обнаружил эту проблему, когда использую input type="file"
, но если я использую только текстовые поля input type="text"
, он работает должным образом ..
Вот мой код textfile.php
<?php
if(isset($_POST['submit'])) {
if(isset($_POST['data_value'])) {
foreach ($_POST['data_value'] as $data_name => $data_value) {
echo $_POST['data_name'][$data_name].' - '.$data_value."<br>";
}
}
$textQnty = empty($_POST['data_value'])? 0: count($_POST['data_value']);
if(isset($_FILES['data_value'])) {
foreach ($_FILES['data_value']['name'] as $data_name => $data_value) {
$file_name = $_FILES['data_value']['name'][$data_name];
echo $_POST['data_name'][$data_name + $textQnty].' - '.$file_name."<br>";
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Test File</title>
</head>
<body>
<form method="post" enctype="multipart/form-data">
<?php
$data_array = array('text', 'file2', 'file', 'text2');
foreach($data_array as $data_name) { ?>
<input type="hidden" name="data_name[]" value="<?php echo $data_name; ?>">
<?php
if(strpos($data_name,'text') !== false){ ?> <input name="data_value[]" type="text" /> <?php }
if(strpos($data_name,'file') !== false){ ?> <input name="data_value[]" type="file" /> <?php }
} ?>
<input type="submit" name="submit" value="Add" />
</form>
</body>
</html>
Вот как я вывожу (нужна последовательность массивов)
Array Sequence - array('text', 'file2', 'file', 'text2');
But Result -
text - First of Text input Data
file2 - Second of Text input Data
file - First of file input Data
text2 - Second of file input Data
Мне нужен такой вывод (согласно последовательности массивов)
text - First of Text input Data
file2 - First of file input Data
file - Second of file input Data
text2 - Second of Text input Data
Мой код работает нормально. Мне просто нужны некоторые базовые улучшения. Спасибо!