|
|
|
| Всем привет. Есть форма, в которой автоматически генерируются $_POST такого типа "reg_1", "reg_2", "reg_10", "reg_5" и т.д., сколько их - неизвестно, диапазон номеров - может быть хаотичный. Это поля checkbox, т.е. галочки. Кроме этих полей, есть много других. Каким образом отобрать только "reg_(всегда цифра)"?
Заранее спасибо! | |
|
|
|
|
|
|
|
для: grafen
(29.02.2012 в 10:41)
| | у вас немного не правильная организация
reg - это должен быть массив, тогда и с обработкой функцией foreach не будет никаких проблем
покажите форму с чекбоксами | |
|
|
|
|
|
|
|
для: grafen
(29.02.2012 в 10:41)
| | А не проще в форме не reg_5 указывать, а reg[5] и тогда просто перебрать
foreach($_POST['reg'] as $key => $val){ .... }
|
Если не проще, то можно перебрать так:
<?php
foreach( $_POST as $key => $val ){
if( !preg_match( "#reg_\d+#" , $key ) ) continue;
// Здесь обработка при условии "если ключ подходит"
}
|
| |
|
|
|
|
|
|
|
для: Sfinks
(29.02.2012 в 11:02)
| | Спасибо всем, так и сделаю! | |
|
|
|
|
|
|
|
для: grafen
(29.02.2012 в 11:17)
| | как вы сделаете? | |
|
|
|
|
|
|
|
для: Valick
(29.02.2012 в 11:21)
| | Воспользуюсь foreach( $_POST as $key => $val ){ }
У меня в БД хранится список, который потом выводится и около названий нужно ставить галочки. У каждой записи свой id в базе, именно эти id мне и нужно словить.
Сделал так: в тот момент, когда обрабатываю данные, вновь вывожу список, тем временем сверяю, есть ли галочка у записи, и создаю массив (в него попадают все выбранные id). После этого разбираю получившийся массив через foreach. Уже всё работает, как надо. | |
|
|
|
|
|
|
|
для: grafen
(29.02.2012 в 11:51)
| | поймите, код
<?php
foreach( $_POST as $key => $val ){
if( !preg_match( "#reg_\d+#" , $key ) ) continue;
// Здесь обработка при условии "если ключ подходит"
}
|
попадает под определение "говнокод" я не знаю зачем его вообще посоветовал Sfinks
это примерно то же самое, что батоном гвозди забивать
я вам не в праве указывать как писать код, я лишь хочу вам и тем кто будет читать эту тему подсказать как правильно подходить к обработке форм
я вас попросил показать код формы, неужели так трудно это сделать? | |
|
|
|
|
|
|
|
для: Valick
(29.02.2012 в 12:03)
| | > попадает под определение "говнокод"
бесспорно )
>я не знаю зачем его вообще посоветовал Sfinks
Потому что бывают ситуации когда все уже сделано и нужно запустить пока хоть как-то, а потом уже переделать по человечески. А потом - потому что, например, это много на что влияет и править придется много. Кроме того некогда вникать в чужие формы, поэтому я сказал как правильно и как сделать неправильно но быстро. Только не заострил внимания на том что это не правильно. Спасибо за дополнение ))) | |
|
|
|
|
|
|
|
для: Sfinks
(29.02.2012 в 12:47)
| | И вообще, вы могли заметить, что я редко вникаю в суть проблемы и продумываю способы оптимизации, а просто реализую то что просят. Ибо не моя это забота ) Если кто-то хочет что-то оптимизировать, пусть так и просят, мол: "а вот как бы тут лучше сделать". И даже при таком подходе часто приходится потратить кучу времени, на то чтобы выпытать четкую задачу, т.к. мало кто полностью формулирует что ему нужно. Это связано с разными обстоятельствами: кто-то не знает что бывает по другому и поэтому думает что объяснил все четко, кто-то весь в своем проекте и считает очевидными вещи, которые могут читаться двусмысленно, кто-то вообще забывает что он печатает, а не говорит и думает что по интонации все понятно. И опять же, в любом случае - это не моя проблема ))) | |
|
|
|
|
|
|
|
для: Sfinks
(29.02.2012 в 13:04)
| | да это все понятно, я не против каждый отвечает так как хочет
и то что выпытывать нужно, тоже верно
просто когда я вижу что человек делает логическую ошибку в самом начале, стараюсь наставить на путь истинный, иначе она потом обрастет "костылями" и более того в аналогичной ситуации начиная другой проект, человек будет поступать так же
я не знаю как объяснить эту ситуацию "без бутылки"... поэтому приходиться в нее лезть
если каменщик неровно кладет кирпич то его никто не будет жалеть, его просто уволят и найдут другого, вот и данный подход к решению вопроса достоин увольнения... я не имею ввиду вас | |
|
|
|
|
|
|
|
для: Valick
(29.02.2012 в 13:16)
| | Не, вот когда он пяток раз об эти костыли споткнется, тогда сам сделает правильно! См.ниже )
____
PS конечно это не ко всем относится. Бывают исключения. Но как правило так =) | |
|
|
|
|
|
|
|
для: Sfinks
(29.02.2012 в 13:04)
| | А еще люди ЛЕНИВЫ. А если человек делает что-то не так, то ему придется это переделывать (рано или поздно). Но чтобы заставить его переделать это сейчас - нужно придумать кучу аргументов, примеров почему нужно делать именно так, а в особо клинических случаях найти ссылки на авторитетные источники, чтобы обосновать свое мнение и переубедить человека. Даже в конкретном примере, вы видите, что человек посмотрев на 2 варианта кода, один из которых явно проще и красивее другого, пошел по пути наименьшего сопротивления и решил не переделать то что он написал, а взять, пусть и громоздкое и некрасивое, но готовое! Ну а мне есть на что потратить силы ) Я даже своим работникам (розничная торговля) никогда не доказываю ничего. Я сказал: -Должно быть так. Например про хранение. Если кто-то считает что "да ну, ниче не случится"..... Да ради бога. Все убытки = минус из зарплаты. | |
|
|
|
|
|
|
|
для: Sfinks
(29.02.2012 в 11:02)
| | А не проще в форме не reg_5 указывать, а reg[5] и тогда просто перебрать
при нормальной логике скрипта, в форме (точнее в скрипте формирующем форму) должно быть reg[] | |
|
|
|
|
|
|
|
для: Sfinks
(29.02.2012 в 11:02)
| | Sfinks, вы бы сами стали использовать preg_match при таких обстоятельствах? | |
|
|
|
|
|
|
|
для: Valick
(29.02.2012 в 11:39)
| | см.выше. | |
|
|
|