Хорошо, давайте начнем с очистки вашего кода. Вместо того, чтобы создавать каждую независимую переменную в вашем методе if ($_SESSION['admin'] == 'loged')
, вы можете использовать функцию extract();
. Метод extract()
создает переменную для каждого ключа в предоставленном массиве. Скажем, у вас есть ключ name
в массиве $_POST
, метод извлечения создаст для вас переменную с именем name
. Чтобы получить значение, все, что вам нужно сделать, это получить доступ к переменной $name
.
if ($_SESSION['admin'] == 'loged'){
extract($_POST);
}
Во-вторых, вы не используете слово and
, если вы хотите проверить более чем одну вещь в операторе if, вы используете следующий операнд '&&'.
if (isset($_POST['title']) && isset($_POST['main-poster']) && isset($_POST['type']) && isset($_POST['year']) && isset($_POST['language']) && isset($_POST['platform']) && isset($_POST['publisher']) && isset($_POST['size']) && isset($_POST['graphics']) && isset($_POST['little-info']) && isset($_POST['full-info']) && isset($_POST['posters']) && isset($_POST['screenshots']) && isset($_POST['trailers']) && isset($_POST['gameplays']) && isset($_POST['author']))
Вместо того, чтобы вручную проверять, установлен ли каждый объект в массиве $_POST
, вы можете просто выполнить итерацию по $_POST
.
Создайте массив переменных, которые вам нужно установить:
$req_fields = array(
'title',
'main-poster',
'type',
'year',
'language',
'platform',
'publisher',
'size',
'graphics',
'little-info',
'full-info',
'posters',
'screenshots',
'trailers',
'gameplays',
'author'
);
Затем создайте массив для элементов, которые не были установлены:
$notset = array();
Наконец, выполните итерацию $_POST
, проверяя, установлено ли каждое значение. Если нет, добавьте его в массив.
foreach ($req_fields as $key) {
if (!isset($_POST[$key]) {
$notset[] = $key;
}
}
Затем проверьте, не были ли установлены какие-либо значения, и перенаправьте пользователя, в противном случае загрузите модель и отправьте сообщение:
if (count($notset) > 0) {
$this->load->view('postnews');
}
else {
$this->load->model('Gamesmodel');
echo $this->Gamesmodel->PostArticle($title, $main_poster, $type, $year, $language, $platform, $publisher, $size, $graphics, $little_info, $full_info, $posters, $screenshots, $trailers, $gameplays, $autor, $date);
}
Предположительно, настоящая причина, по которой вставка не работает, заключается в том, что она фактически не вызывается. Причиной этого может быть то, что некоторые ключи фактически не были установлены.
Выполните итерацию по массиву $notset
, чтобы увидеть, так ли это:
foreach ($notset as $unsetField) {
echo "Field {$unsetField} is not set. <br />";
}