У меня есть поле с картинкой (Input type file), если его заполнить (То-есть указать путь к картинке) то скрипт сработает, но если не заполнять то скрипт не работает, как сделать проверку заполнено поле или нет? и если не заполнено чтоб ошибки небыло, а если заполнено то он (отправлял файлик и путь к нему ЭТО УЖЕ ЕСТЬ В СКРИПТЕ)
// Подключаемся к БД
include "../includes/connect.php";
include "../includes/console.php";
// var_dump($_POST);
var_dump($_FILES['position_img']);
$uploaddir = '../media/img/';
$uploadfile = $uploaddir . time() . basename($_FILES['position_img']['name']);
if (
isset($_POST['position_id']) &&
isset($_POST['position_name']) &&
isset($_POST['position_price']) &&
isset($_POST['position_status']) &&
isset($_POST['position_attr_1']) &&
isset($_POST['position_attr_2']) &&
isset($_POST['position_attr_3']) &&
isset($_POST['position_attr_4']) &&
move_uploaded_file($_FILES['position_img']['tmp_name'], $uploadfile)
) {
echo 'here1';
// Айди элемента
$current_ID = $_POST['position_id'];
$position_name = $_POST['position_name'];
$position_price = $_POST['position_price'];
$position_status = $_POST['position_status'];
$position_attr_1 = $_POST['position_attr_1'];
$position_attr_2 = $_POST['position_attr_2'];
$position_attr_3 = $_POST['position_attr_3'];
$position_attr_4 = $_POST['position_attr_4'];
// Обрезаем лишнее
$uploadfile = substr($uploadfile, 3);
// sql to delete a record
$sql = "UPDATE $data_base_TABLE SET
position_name='$position_name',
position_price='$position_price',
position_status='$position_status',
position_attr_1='$position_attr_1',
position_attr_2='$position_attr_2',
position_attr_3='$position_attr_3',
position_attr_4='$position_attr_4',
position_img='$uploadfile'
WHERE id='$current_ID'";
$result = $data_base_CONNECT->query($sql);
var_dump($result);
if ($result === TRUE) {
echo $result_edit_true;
} else {
echo $result_edit_false . $data_base_CONNECT->error;
}
$data_base_CONNECT->close();
}else {
echo 'Not all params are set';
}
Я не спец п PHP, но похоже что при пустом файле логика не отрабатывает ротик что функция move_uploaded_file($_FILES['position_img']['tmp_name... возвращает false при отсутствии файла. То есть программист, написавший этот код сознательно проверял успешность выполнения данной функции. Если логика поменялась, соответвующее условие нужно добавить и в проверку.
По всей видимости проверить передан ли файл можно через проверку на пустоту выражения $_FILES['position_img']['tmp_name']. Я бы сходил внутрь функции переноса файла и посмотрел как в ней проверяется первый параметр
Друг помог, вот ответ
// Подключаемся к БД
include "../includes/connect.php";
include "../includes/console.php";
// var_dump($_POST);
var_dump($_FILES['position_img']);
$uploaddir = '../media/img/';
$uploadfile = $uploaddir . time() . basename($_FILES['position_img']['name']);
if (
isset($_POST['position_id']) &&
isset($_POST['position_name']) &&
isset($_POST['position_price']) &&
isset($_POST['position_status']) &&
isset($_POST['position_attr_1']) &&
isset($_POST['position_attr_2']) &&
isset($_POST['position_attr_3']) &&
isset($_POST['position_attr_4'])
) {
echo 'here1';
// Айди элемента
$current_ID = $_POST['position_id'];
$position_name = $_POST['position_name'];
$position_price = $_POST['position_price'];
$position_status = $_POST['position_status'];
$position_attr_1 = $_POST['position_attr_1'];
$position_attr_2 = $_POST['position_attr_2'];
$position_attr_3 = $_POST['position_attr_3'];
$position_attr_4 = $_POST['position_attr_4'];
// sql to delete a record
$sql = "UPDATE $data_base_TABLE SET
position_name='$position_name',
position_price='$position_price',
position_status='$position_status',
position_attr_1='$position_attr_1',
position_attr_2='$position_attr_2',
position_attr_3='$position_attr_3',
position_attr_4='$position_attr_4'
WHERE id='$current_ID'";
$result = $data_base_CONNECT->query($sql);
var_dump($result);
if ($result === TRUE) {
echo $result_edit_true;
} else {
echo $result_edit_false . $data_base_CONNECT->error;
}
}
if (isset($_FILES['position_img']) && move_uploaded_file($_FILES['position_img']['tmp_name'], $uploadfile)) {
// Обрезаем лишнее
$uploadfile = substr($uploadfile, 3);
// sql to delete a record
$sql = "UPDATE $data_base_TABLE SET position_img='$uploadfile' WHERE id='$current_ID'";
$data_base_CONNECT->query($sql);
var_dump($result);
if ($result === TRUE) {
echo $result_edit_true;
} else {
echo $result_edit_false . $data_base_CONNECT->error;
}
$data_base_CONNECT->close();
}
else {
echo 'Not all params are set';
}
Замените все isset
на !empty
.
И добавьте перед первым if
:
foreach ($_POST as &$value) {
if (is_array($value)) {
continue;
}
$value = trim($value);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Подскажите, почему срабатывает только первый case, а второй нет?
Есть тесты, которые выполняются и записывают некоторые данные в бдЕсть метод в конце, который должен сделать запрос в бд и вытащить данные
У меня есть массив продуктовИ мне нужно получить теги с которыми связаны продукты (Product has many tags