На вашем контроллере нужно исправить две вещи.
Во-первых, когда вы хотите извлечь значения из ввода, вы передаете только значение ключа, которое вы использовали в имени ввода. В вашем случае вы использовали интерфейс <input name="name_ofpost[]" {...}>
, поэтому вы выбрали ключ name_ofpost
вместо name_ofpost[]
.
В строках, которые вы извлекаете значения из пост-ввода, удалите []
из имени ключа.
$sName = $this->input->post('name_ofpost');
$sNo = $this->input->post('no_ofpost');
Во-вторых, вы использовали для каждого пустой массив.
$vacancyDtls = array(); //empty array
foreach($vacancyDtls as $vacDtls) {...} //there is nothing to foreach
Вместо этого используйте функцию count для $ sName или $ sNo. Прежде чем использовать функцию count, необходимо убедиться, что переменная является массивом, в противном случае вы получите это предупреждение, которое вы получили. Вы можете сделать это:
// I assume you need both variables to be on the same size
if(is_array($sName) && is_array($sNo)) {
$count= count($sName);
$vacancyDtls = array();
//from here you add a for loop and extract the values from the input variables
for($i=0;$i<$count;$i++) {
$vacDtls[$i] = array('name_ofpost' => $sName[$i],
'no_ofpost' => $sNo[$i]);
}
} else {
//Make sure something came from the post or get resquest you just did from the front-end.
var_dump($this->input->post()); // will print every post parameter sent to the controller
var_dump($sName);
var_dump($sNo);
}
В операторе else print_r или var_dump для ввода данных, чтобы проверить, поступило ли что-то из запроса, который вы только что выполнили, это способ отладки того, что вы отправили контроллеру.
Ваш код переднего плана не показывает, как вы делаете запрос. Неясно, выполняете ли вы вызов Ajax или используете форму, или отправляете запрос или получаете запрос. Если это запрос get, используйте $ this-> input-> get ('key name');
Отладьте интерфейс и убедитесь, что используемая функция передает что-то в запрос.