У вас есть строка (вывод date()
), из которой вы вычитаете и целое число, в результате вы получаете результат как целое число, а не строку. Вероятно, вам лучше начать правильно писать строку и избавиться от целочисленной арифметической проблемы.
Я предлагаю работать с объектами DateTime. Вот как вы можете выводить поля ввода.
<?php
$current_date = new DateTime();
while($i = 1; $i <= 4; $i++) {
$date_int = new DateInterval('P' . (string)$i . 'Y');
$temp_date = $current_date->sub($date_int);
$date_string = $temp_date->format('Y');
?>
<input type="number" name="<?php echo $date_string; ?>brand%gross" placeholder="Gross Sales % for <?php echo $date_string; ?>" />
<?php
} // end while
?>
Когда обрабатывая $_POST
вы можете сделать то же:
<?php
$current_date = new DateTime();
$year_array = array();
while($i = 1; $i <= 4; $i++) {
$date_int = new DateInterval('P' . (string)$i . 'Y');
$temp_date = $current_date->sub($date_int);
$date_string = $temp_date->format('Y');
if (!empty($_POST[$date_string. 'brand%gross'])) {
$year_array[$date_string] = $_POST[$date_string . 'brand%gross'];
}
} // end while
?>
Обратите внимание, что я использую массив для хранения ваших данных индексируется года строкой, так как вы не можете иметь имя переменной, которая начинается с число (т.е. $2013nrand%gross
недействительно).
Я бы также настоятельно предложил использовать запись доступа к массиву в ваших вводах для просто вещей.
Если вы сделали каждый вход так:
<input type="number" name="year_brand_gross[<?php echo $date_string; ?>]" placeholder="Gross Sales % for <?php echo $date_string; ?>" />
Тогда имена year_brand_gross[2013]
и таким автоматически заполнят список как массив в $_POST['year_brand_gross']
, устраняя необходимость в петлю через вход POST.
Вместо этого вы могли бы установить это в переменной, как этот
if(!empty($_POST['year_brand_gross']) {
$year_array = $_POST['year_brand_gross'];
}
Для PHP < 5.3.0 вы можете использовать альтернативный метод для генерации год строки:
$current_date = new DateTime();
for ($i = 1; $i <=4; $i++) {
$current_date->modify('-1 year');
$date_string = $current_date->format('Y');
// other code here
}
Обратите внимание, что, как показано , это изменит значение $current_date
с каждым итератоном, который отличается от первого решения.
динамический стол? Вы имеете в виду строки, созданные на основе выбранных радиостанций? –