
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
![]() |
۩
Дата
|
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 81 Пользователь №: 46556 На форуме: Карма: ![]() |
Здравствуйте уважаемые специалисты. Есть такой фрагмент кода:
echo"<input name='pencil' type='radio' value='Красный карандаш' id='color1'><label for='color1'>Красный карандаш</label> Подскажите, пожалуйста, как сделать так, чтобы выбранное значение сохранялось при перезагрузке страницы, если пользователь где-то не заполнил или заполнил с ошибкой какие-то поля формы (валидация)? |
![]() |
[x]
Дата
|
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 6460 Пользователь №: 35718 На форуме: Карма: 208 ![]() |
Ну если совсем просто, то вот так
-------------------- |
![]() |
۩
Дата
|
||
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 81 Пользователь №: 46556 На форуме: Карма: ![]() |
Valick, здравствуйте.
=) Ну для вас конечно это совсем просто. Для меня же, пара моментов оказалась поначалу не совсем понятными. Но теперь уже разобрался что к чему, ваш код изучил, где-то дочитал матчасть, и теперь для меня все стало понятным. Огромное вам спасибо! Реально всегда очень благодарен всем кто не проходит мимо. Успехов! |
||
![]() |
[x]
Дата
|
||
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 6460 Пользователь №: 35718 На форуме: Карма: 208 ![]() |
Так и должно быть. Вот немного изменённый код
1) Попробуйте добавить в массив любой новый товар и его свойства. 2) Попробуйте добавить обработчик select по аналогии 3) При желании массив $itemList можно хранить в БД Будет совсем хорошо если вы из этого сделаете какой-то вывод. -------------------- |
||
![]() |
۩
Дата
|
||||||
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 81 Пользователь №: 46556 На форуме: Карма: ![]() |
А вот это уже куда более интересный вариант, расширяет возможности формы. Я вот, кстати, уже очень скоро как раз и планировал на следующем сайтике делать форму, которая будет более расширенной. Там будут выбираться и категории, и подкатегории, в том числе будет использоваться и select.
и вот как раз я и возьму ваш измененный код как за основу, и начну с ним работать. А пока изучаю его. Для меня важно разобраться в коде, увидеть и понять что и как работает, а не тупо копипастить, потому как если понимаешь, то в дальнейшем уже делаешь самостоятельно, а не возвращаешься за помощью из раза в раз по одному и тому же вопросу. Поэтому
это обязательно. Valick, вам огромнейшее спасибо, крепко жму вам руку. Обязательно вернусь в эту тему с публикацией того, что у меня получится (как только подойду к этой части), с вашего разрешения для инспекции. |
||||||
![]() |
[x]
Дата
|
||
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 6460 Пользователь №: 35718 На форуме: Карма: 208 ![]() |
Kuzma92, тут не надо далеко ходить. Единственный вывод который необходимо сделать из этого кода, это то что код не должен зависить от данных. Иными словами если при изменении/добавлении/удалении данных необходимо менять код, то это звоночек о том, что вы делаете что-то не так.
Дело в том, что весь выше написанный код - это баловство "на коленке". Для нормального программирования надо изучать ООП и вытекающие из этого технологии SOLID, DDD, TDD и тд. Лучшей книгой для начала изучения ООП по прежнему считаю [Мэтт Зандстра] – PHP 8 объекты, шаблоны и методики программирования https://vk.com/wall-200520393_323 Вот тот же код написанный на той же коленке за 20 минут, но с применением ООП Код
Пример выполнения скрипта http://kaval.beget.tech/form.php -------------------- |
||
![]() |
|||
![]() ![]() חשב את עצמו ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: Администратор ![]() Сообщений: 6963 Пользователь №: 1 На форуме: Карма: 145 ![]() |
Для нормального программирования нужно мыслить алгоритмами. Вопрос оформления вторичен. Как я бы сделал: 1. Массив имен и типов полей ввода. 2. В цикле по массиву создается обертка из html. Одновременно проверяя что пришло из $_POST. Собственно, и всё. 5 минут работы, 2 десятка строк понятного логичного кода. А если потребуется добавлять функционал, либо добавляем элементы массива, либо добавляем необходимое в обертку. -------------------- Бесплатному сыру в дырки не заглядывают...
|
||
![]() |
۩
Дата
|
||||
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 81 Пользователь №: 46556 На форуме: Карма: ![]() |
Valick, огромнейшее вам спасибо за подробный ответ и развернутый пример. Смотрю, изучаю. Для меня все это - ценная полезная информация. Реально очень всем благодарен за ответы, для меня это важно, в планах реализация многих разнообразных проектов. Так что это
придется полюбому открывать и читать :) FatCat, если вы не против, то не отказался бы посмотреть и то
буду вам очень благодарен. Для меня действительно важен каждый ответ/мнение. Никогда не игнорирую ответы, всегда черпаю с каждого ответа для себя что-то полезное. Потому что книга как бы там ни было - это теория (которая несомненно нужна!), а когда на практике по какому-либо конкретному случаю (с которым сталкиваешься) получаешь реальный код, то здесь уже наглядно ты видишь как его составляет грамотный специалист, разбираешь его, дополнительно обращаешься к матчасти (там где что-то не понимаешь), ну и по итогу полностью разбираешься в нем. Как мне кажется, это важно, по крайней мере для меня так. |
||||
![]() |
|||
![]() ![]() חשב את עצמו ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: Администратор ![]() Сообщений: 6963 Пользователь №: 1 На форуме: Карма: 145 ![]() |
Я все написал. Если что-то не понятно, спрашивайте. Вместе напишем код. Я заглядываю на форум, как правило, с мобильника из машины. Не самые удобные условия для, писания кода. -------------------- Бесплатному сыру в дырки не заглядывают...
|
||
![]() |
|||
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 6460 Пользователь №: 35718 На форуме: Карма: 208 ![]() |
Это не правильный подход. После отправки формы на сервер данные для выполнения бизнес логики нужны до их вывода. В большинстве случаев если все данные валидные, то форма вообще больше не выводится. Получение и валидация данных должна быть отдельно от представления. Собственно в процедурном варианте моего и есть описанный алгоритм 1) Массив имен и типов полей ввода + данные для таких полей как (radio, checkbox, sekect) 2) Получение и обработка данных по массиву 3) Сборка html обёртки и вывод в браузер. В ООП варианте массив уже не нужен, а сама обработка, валидация и сборка html-обёртки становится более гибкой и лояльной к расширению функционала. -------------------- |
||
![]() |
|||
![]() ![]() חשב את עצמו ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: Администратор ![]() Сообщений: 6963 Пользователь №: 1 На форуме: Карма: 145 ![]() |
Ты хочешь добавить это требование? Нет проблем. Для этого требования будет свой алгоритм. А запишешь ты его портянкой кода, разобьешь ли на функции, или на классы — это вопросы оформления для удобства последующей работы с кодом. -------------------- Бесплатному сыру в дырки не заглядывают...
|
||
![]() |
|||
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 6460 Пользователь №: 35718 На форуме: Карма: 208 ![]() |
Так думают абсолютно все программисты, ровно до тех пор пока не начианут мыслить в рамках ООП парадигмы. Вы как доктор должны понимать, что трудно объяснить разницу между например красным и серым дальтонику. Для него это всего лишь разные названия одного и того же цвета, непонятно зачем придуманные людьми. Так и с процедурным и объектно ориентированным программированием выглядит как разные название одного и того же. У программиста в отличии от дальтоника есть возможность "прозреть", для этого необходимо лишь желание учиться. -------------------- |
||
![]() |
|||
![]() ![]() חשב את עצמו ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: Администратор ![]() Сообщений: 6963 Пользователь №: 1 На форуме: Карма: 145 ![]() |
Возможно, пример неудачный. Дальтоник видит цвета, но не так, как обычный человек. Я, например, как дальтоник, не вижу подделки в копиях картин, написанных художниками дальтониками — те подделки, котооые «бьют по глазам» человеку с обычным зрением. Зато, будучи дальтоником, я ни разу из сотен раз в жизни ни ошибся с поддельными долларами, которые для человека с обычным зрением неотличимы от подлинных. Возвращаясь к программированию, если есть цель и есть инструменты достижения этой цели, моя задача выстроить последовательность применения инструментов — создать алгоритм. Хочешь сказать, что ООП позволит достигнуть цели, не имея алгоритма? -------------------- Бесплатному сыру в дырки не заглядывают...
|
||
![]() |
|||
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 6460 Пользователь №: 35718 На форуме: Карма: 208 ![]() |
Я говорю ровно то, что хочу сказать. Не надо приписывать мне чужие мысли ![]() Касательно алгоритма. ОПП позволяет быстро выявить изъяны алгоритма. Если при написании кода приходиться нарушать парадигму ООП, значит в алгоритме есть изъян. В ООП уже давно есть так называемые паттерны проектирования, это ни что иное как конкретные алгоритмы отточенные годвми и миллионами программистов. Паттерны в подавляющем большинстве абстрагированны от конкретного ЯП. ООП код легко масштабировать и переносить между проектами. -------------------- |
||
![]() |
|||||
![]() ![]() חשב את עצמו ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: Администратор ![]() Сообщений: 6963 Пользователь №: 1 На форуме: Карма: 145 ![]() |
Допускаю, что это возможно. Мне не очень понятно, что такое «изъяны алгоритма». В моем понимании, алгоритм — это траектория от точки А к точке Б. Как и в реальной жизни, например, за рулем, я могу доехать разными путями. Но либо у меня есть верный маршрут (алгоритм), и я доехал, или нет, и я заблудился. Допускаю, что ООП, ведя проторенными тропами, помогает прокладывать более надежный маршрут. За счет увеличения объемы кода и нагрузки на сервер, но надежный.
Поверишь ли, в медицине тоже. Позволяют абстрагировать лечение от конкретного больного. Прекрасно работают, когда каждые 8 часов у больного меняется врач. Но если я сам врач, и лечу сам себя — я у себя один, и в жопу эти паттерны, я потрачу вдесятеро больше времени, но я сделаю себе индивидуальный план лечения. В моем конкретном случае это 1 постоянный препарат, а не 7 препаратов каждый день, если меня лечить по протоколу. И если сайт я делаю не в продакшн, а для себя любимого, это мой любимый «хомяк», и работа в команде над большим проектом не планируется — если я и пользуюсь паттернами, то от лени, когда проще взять готовое, чем самому писать и отлаживать. -------------------- Бесплатному сыру в дырки не заглядывают...
|
||||
![]() |
![]() ![]() ![]() |