проверить, выбран ли файл в массиве полей в переполнении стека

Я должен обновить базу данных, которая состоит из нескольких полей типа ввода файла.
Название всех полей ввода одинаково.

<input type="text" name="title[]">
<input type="file" name="image[]">
<input type="text" name="title[]">
<input type="file" name="image[]">
<input type="text" name="title[]">
<input type="file" name="image[]">

Теперь не обязательно, чтобы были выбраны все изображения, возможно, что все заголовки изменены, но выбрано только третье изображение. Теперь я хочу загружать файл, только если выбрано изображение, иначе не загружать.

это страница действий:

    <?php
$title = $_POST['title'];

$upload = 0;
for($i=0; $i<sizeof($title); $i++)
{
if(!empty($_FILES['image'][$i]))
{
// upload file and set flag upload=1
} else {
// set flag upload=0
}

if($upload == 1)
{
$qry = "UPDATE <table_name> SET title='$title[$i]', image='$image' WHERE <match found>";
// execute $qry
} else {
$qry = "UPDATE <table_name> SET title='$title[$i]' WHERE <match found>";
// execute $qry
}
}

но каждый раз только else Оператор запускает событие, когда изображение выбрано и даже когда изображение не выбрано.

Обновление 2: результат print_r($_FILES);

Array
(
[image] => Array
(
[name] => Array
(
[0] =>
[1] => Selection_238.png
[2] =>
)
[type] => Array
(
[0] =>
[1] => image/png
[2] =>
)
[tmp_name] => Array
(
[0] =>
[1] => /tmp/phpqSB0Jn
[2] =>
)
[error] => Array
(
[0] => 4
[1] => 0
[2] => 4
)
[size] => Array
(
[0] => 0
[1] => 72259
[2] => 0
)
)
)

Выбранное изображение во втором поле ввода

2

Решение

Прежде всего вам нужно изменить = в == в вашем коде if($upload = 1), так как = является assignment оператор не comparisonоператор.

Проверьте это и, возможно, ваша проблема решена. В противном случае, пожалуйста, проверьте ниже возможное решение

1.

<?php
$title = $_POST['title'];

for($i=0; $i<sizeof($title); $i++)
{
if(!empty($_FILES['image']['name'][$i]))
{
// check if file uploaded then run below query
$qry = "UPDATE <table_name> SET title='$title[$i]', image='$image' WHERE <match found>"; // you can apply if else here based on move_uploaded_file output
} else {
// set flag upload=0
$qry = "UPDATE <table_name> SET title='$title[$i]' WHERE <match found>";
}
}
?>

2.

<?php
$title = $_POST['title'];
$upload = 0; // define here
for($i=0; $i<sizeof($title); $i++)
{
if(!empty($_FILES['image']['name'][$i]))
{
// upload file and set flag $upload = 1
} else {
// set flag $upload = 0
}

if($upload == 1) // you need to change = (assignment) to  == (comparision)
{
$qry = "UPDATE <table_name> SET title='$title[$i]', image='$image' WHERE <match found>";
// execute $qry
} else {
$qry = "UPDATE <table_name> SET title='$title[$i]' WHERE <match found>";
// execute $qry
}
}
?>
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]