Enot_9913
@Enot_9913
недоделанный программист

Как разобраться с сессиями и массивами в php?

Прошу не кидаться в меня тапками.. и доступно объяснить.
Я студент и учусь программировать в месте где меня этому не учат, соответственно пробелы в знаниях.
Подскажите пожалуйста, как нужно сделать, чтобы в сессию записался индекс значения в массиве? Ну или что-то в этом духе..
Объявление
$nf = $_SESSION['number_flight'];
Вывод
echo $nf;

Сейчас при выводе сессии выводится последний элемент.
5c13c4a7edb1a801357210.jpeg5c13c4b72248f266221068.jpeg
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 2
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
Разбивайте задачу на подзадачи и вам станет легче разбираться с тем как решать каждую из них.

Например вместо:
  • Записать в сессию какую кнопку нажал пользователь (на самом деле, вы хотите этого, а не то, что написали, судя по всему).

Поставить задачи так:
  • Определить как пользователь будет выбирать рейсы на HTML-странице (заметьте, здесь никаких сессий, всё в контексте исключительно HTML-страницы в браузере пользователя). Здесь вы выберете какие HTML-элементы будете использовать в форме: выпадающий список, радиобаттон или чекбоксы.
  • Понять каким образом из формы в HTML-странице формируются значения для передачи на сервер. Здесь вы разбираетесь с тем, у каких элементов где value, понимаете для чего нужен атрибут name и т.д.
  • Разобраться как данные передаются из браузера при отправке формы на сервер (в PHP). Здесь вы узнаете про то, что у формы есть атрибут action, что бывают методы GET и POST (а на самом деле, их больше, но это сейчас неважно). Потом (именно потом!) можно ещё узнать про AJAX и запросы из JavaScript без перехода на другую страницу.
  • Научиться правильно обрабатывать входящие данные POST-запроса. Здесь вы разбираетесь с суперглобальными массивами, с функциями фильтрации и валидации в PHP вроде filter_input() и подобных. (на следующих итерациях решения подобной задачи можно попробовать для разнообразия добраться до вещей типа symfony/http-foundation)
  • Разобраться, где какие данные лучше сохранять между разными запросами. Здесь вы почитаете про сессии, про базу данных и в чём их плюсы и минусы (а точнее для каких целей их используют). Возможно ещё про что-то типа Memcached/Redis, но явно не в первые разы.
  • Научиться работать с выбранных под вашу цель хранилищем данных. Здесь вы поймёте как "положить" в ваше хранилище (будь то сессия или БД) то, что вы "вынули" из запроса, который пришёл из браузера.


Все пункты "научиться", "разобраться", "понять" по большему счёту нужно будет делать по одному разу на каждую нетипичную задачу. Но если вы вместо комплексного восприятия "сделать хорошо" начнёте разбираться в том, что стоит за технологией, на которой вы пытаетесь разрабатывать - вы начнёте действительно учиться.
А такие вот вопросы "как мне сделать вот именно это" - они просто научат вас повторять код за людьми с Toster или StackOverflow без понимания, что они делают.

Так что разбирайтесь с тем, как работает веб в принципе: что такое HTML и что выполняется в браузере, что такое PHP и что выполняется на сервере, как браузер отправляет данные на сервер и т.д., и т.п.
В итоге вы должны полностью понимать принцип работы вашей страницы и пути по которым передаются данные от того момента как страница генерируется до того момента, когда вы обработали форму полученную от пользователя и выдали ему сообщение об успехе или ошибке.
Ответ написан
Комментировать
@gomer1726
Чтобы записать что то в сессию, массив сессии должен стоять первым, то есть смотри ты делаешь так
$nf = $_SESSION['number_flight'];
А чтобы что то записать в сессию нужно так
//Будем надеяться что переменная $nf что нибудь содержит
$_SESSION['number_flight'] = $nf;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы