<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
include ('engine.php');
$db = new Database;
$ins = array(
'type_product' => (array(
'post' => $_POST['type_product'],
'name' => 'Тип продукта',
'type' => 'text',
)) ,
'company_product' => (array(
'post' => $_POST['company_product'],
'name' => 'Компания',
'type' => 'text',
)) ,
'color_product' => (array(
'post' => $_POST['color_product'],
'name' => 'Цвет продукта',
'type' => 'text',
)) ,
'line_product' => (array(
'post' => $_POST['line_product'],
'name' => 'Линейка',
'type' => 'text',
)) ,
'bend_product' => (array(
'post' => $_POST['bend_product'],
'name' => 'Изгиб',
'type' => 'text',
)) ,
'thickness_product' => (array(
'post' => $_POST['thickness_product'],
'name' => 'Толщина',
'type' => 'text',
)) ,
'long_product' => (array(
'post' => $_POST['long_product'],
'name' => 'Длина',
'type' => 'text',
)) ,
'unit_of_measure_product' => (array(
'post' => $_POST['unit_of_measure_product'],
'name' => 'Еденица измерения',
'type' => 'text',
)) ,
'price_product' => (array(
'post' => $_POST['price_product'],
'name' => 'Цена',
'type' => 'text',
)) ,
'mix_product' => (array(
'post' => $_POST['mix_product'],
'name' => 'Набор',
'type' => 'text',
)) ,
'quantity_product' => (array(
'post' => $_POST['quantity_product'],
'name' => 'Количество',
'type' => 'text',
)) ,
'lines_product' => (array(
'post' => $_POST['lines_product'],
'name' => 'Линии',
'type' => 'text',
)) ,
'size_product' => (array(
'post' => $_POST['size_product'],
'name' => 'Размер',
'type' => 'text',
)) ,
'composition_product' => (array(
'post' => $_POST['composition_product'],
'name' => 'Состав',
'type' => 'text',
)) ,
'description_product' => (array(
'post' => $_POST['description_product'],
'name' => 'Описание',
'type' => 'text',
)) ,
'image_product' => (array(
'post' => 'images/' . 'basename' . $_FILES['image_product']['name'],
'name' => 'Изображение',
'type' => 'file',
)) ,
);
if (isset($_POST['submit']))
{
if (is_array($ins))
{
$db->insert('product', $ins);
move_uploaded_file($_FILES['image_product']['tmp_name'], $ins['image_product']['post']);
}
}
?>
<form method="post" enctype="multipart/form-data">
<?php
foreach($ins as $key => $value)
{
echo '<p><input type="' . $value['type'] . '" name="' . $key . '" placeholder="' . $value['name'] . '"></p>';
}
?>
<input type="submit" name="submit" value="Отправить">
</form>
раз уж никто не пишет, то замечу, что проверка в коде
is_array($ins)
всегда будет возвращать true
, т.к. собственно массив у вас определен выше.
Для повышения читаемости, используйте краткую запись массива []
вместо array()
.
Описания полей можно несколько упростить, заменив код вида
$ins = array(
'type_product' => (array(
'post' => $_POST['type_product'],
'name' => 'Тип продукта',
'type' => 'text',
)) ,
'company_product' => (array(
'post' => $_POST['company_product'],
'name' => 'Компания',
'type' => 'text',
)) ,
на массив определений текстовых полей
$txtFields = [
'type_product' => "Тип продукта",
'company_product' => "Компания",
....
];
с помощью которого затем получить
$data = array_map(function($k, $v) {
return [
'post' => $_POST[$k],
'name' => $v,
'type' => 'text',
];
}, array_keys($txtFields), $txtFields);
ну или каким иным способом.
В любом случае, вам следует разделить описание конфигурации полей, и получение их значений из $_POST
. Как логически в коде, так и структурно в разные массивы. Вышеприведенный кусок кода формирует массив по вашему шаблону, однако, ведь, например, нет смысла передавать строку Тип продукта
в метод вставки в БД? Конфиг надо хранить водном месте, данные в другом.
Почти все поля типовые. Вынести разницу в отдельный массив поменьше и потом уже собрать полную версию для запроса к БД:
$fields = [
'type_product' => 'Тип продукта',
'company_product' => 'Компания',
'color_product' => 'Цвет продукта',
..
'composition_product' => 'Состав',
'description_product' => 'Описание',
];
$ins = [];
foreach ($fields as $n => $v) {
$ins[$n] = ['post' => $_POST[$v], 'name' => $n, 'type' => 'text'];
}
$ins['image_product'] = [ ..
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
подскажите пожалуйста как средствами PHP найти и отправить файл на Email? Пробовал вот так, отправляет только имя файла
Вопрос такой, есть два микро-сервиса, один создает транзакцию и кидает в очередь (rabbitmq) второй сервис должен ее подхватить и обработатьСтолкнулись...
Как можно преобразовать такой url http://sitenameru/katalog/nazvaniekategorii/ в такой: http://sitename