У меня есть сеанс, который я использую для хранения элементов в форме, которая накапливается пользователем до тех пор, пока пользователь не захочет перейти к проверке. Это немного похоже на корзину, где элементы можно добавлять из формы.
Логическая разбивка кода:
- Page нагрузки, сессия начинается
- Если $ _SESSION [ 'набор'] не установлен, то установите его в TRUE.
- Показать остальную страницу и форму.
- Пользователь нажимает кнопку «Добавить другой элемент».
- Данные страницы отправляются самому себе
- Проверка страниц, которые установлены $ _SESSION ['set'] = Истина и $ _POST ['add_item'].
- Страница создает переменные сеанса в массиве и добавляет опубликованные значения к этим сеансам. приращения Page
- $ _SESSION [ «tariff_count»], если еще необходимо добавить
Проблема заключается в том, что мой код не ведет себя, как это должно быть. Когда я нажимаю кнопку «Добавить новый тариф», первый раз, когда он не попадает в мою функцию if. Это нужно немедленно поймать. Однако, когда я иду и снова нажимаю кнопку, он, наконец, работает и добавляет элемент в мою сессию.
Вот код:
//start a session to remember tariff items
session_start();
//testing the session array
print_r($_SESSION);
//destroy session if this character is found in URL string
$des = $_GET['d'];
if($des == 1)
{
session_destroy();
}
//checks to see if session data has been set
//if a session variable count is set then
if ($_SESSION['set'] == TRUE)
{
//perform a check to ensure the page has been called by the form button and not been accidently refreshed
if(isset($_POST['add_tariff']))
{
//if user clicks Add another tariff button then increase tariff count by one
//temp variable set to the current count of items added
$count = $_SESSION['tariff_count'];
$_SESSION['tariff_name'][$count] = $_POST['tariff_name'];
$_SESSION['tariff_net'][$count] = $_POST['tariff_net'];
$_SESSION['tariff_inclusive'][$count] = $_POST['tariff_inclusive'];
$_SESSION['tariff_length'][$count] = $_POST['tariff_length'];
$_SESSION['tariff_data'][$count] = $_POST['tariff_data'];
//increment tariff count if more data needs to be added to the sessions later.
$_SESSION['tariff_count']++;
}
}
//if no session data set then start new session data
else
{
echo "session set";
$_SESSION['set'] = TRUE;
$_SESSION['tariff_count'] = 0;
}
код, кажется, жульничество моих массивов данных Sesssion. Все мои добавленные элементы в сеансе отображаются в таблице.
Однако, если моя таблица показывает шесть элементов, если я делаю print_r сеанса, она показывает только 4 элемента в массиве? Я проверил его, чтобы убедиться, что я не перепечатываю те же экземпляры в массиве.
Здесь находится print_r массива, который показывает шесть строк, но в этом массиве всего четыре строки?
[tariff_count] => 5 [tariff_name] => Array (
[0] => STREAM1TARIFF [1] => STREAM1TARIFF [2] => CSS [3] => CSS [4] => CSS
)
У меня есть снимок экрана, а также, чтобы показать эту странную проблему
Примечание Я вторит из «Истинное значение = 6», но в print_r сессии это только 5 , поэтому в моем коде отсутствует один экземпляр (n-1).
Вот мой код, который печатает все экземпляры в массивах сеансов, у меня есть чувство проблемы в несоответствии вызвано "< =" сравнение?
if(isset($_SESSION['tariff_count']))
{
for ($i = 0; $i <= $count; $i++)
{
echo "<tr>";
echo "<td>".$_SESSION['tariff_name'][$i]."</td>";
echo "<td>".$_SESSION['tariff_net'][$i]."</td>";
echo "<td>".$_SESSION['tariff_inclusive'][$i]."</td>";
echo "<td>".$_SESSION['tariff_length'][$i]."</td>";
echo "<td>".$_SESSION['tariff_data'][$i]."</td>";
echo "</tr>";
}
}
Вставить бен РНР страницы - http://pastebin.com/petkrEck
Любые идеи, почему мое заявление Если не поймать событие, когда пользователь нажимает клавишу «Добавить другой тариф» кнопку в первый раз, когда она нажата, но затем обнаруживает это потом?
Спасибо за ваше время
С Рождеством!
Пожалуйста, вы можете также показать HTML формы и любые Javascript, связанные с тем, как он получает представленный? – DaveRandom
@DaveRandom - ссылка pastebin http://pastebin.com/petkrEck – kaleeway
@loosebruce: Это не тот ответ, который вы ищете, но ваш массив имеет нулевой индекс. Если вы внимательно посмотрите, часть, когда вы разместили «[тариф_касс.] => 5' (из вашего print_r), на самом деле в массиве есть 5 элементов (0, 1, 2, 3, 4). – netcoder