Подскажите по GET в php)
?abr=mama,papa,ded,baba
На странице нужно проверить
— если $_GET["abr"] содержит "mama" то выводим блок "мама"
— если $_GET["abr"] содержит "papa" то выводим блок "папа"
etc.
Как правильно проверять?)
Если передавать по отдельности (?mama=1&papa=1.....) то так понимаю)
Или направьте на пример,. я видать гошу не правильно спрашиваю, показывает то что и без него знаю)
ps: передаваться могут не все значения! может передаваться только ?abr=papa,baba
вот тут нужно проверить, что получили и в соответствии вывести блоки…
// выводим блок мама }
Я вроде сделал, но чуть иначе, вначале разбил полученную строку на элементы и после проверил с помощью функции in_array
Не знаю правильно или нет но работает — мне главное чтоб работало максимально быстро...
Пока тему оставляю открытую, может кто подскажет чего умного, вариантов всегда более одного)
// выводим блок мама }
Sonat, проверил, чет у меня так не пашет...
snooker, спасибо — так пашет)
Будут ложные срабатывания, например при "paramama".
Ведь строку-то формирует не юзер абы как, эти abr наверняка ограничены и все известны и на стадии написания кода можно не писать пересекающихся вариантов типа "paramama"
ЗЫ. Как по мне чем меньше кода тем проще )
Известны, всего 16 (возможно прибавиться), и пересечения уже есть)строку-то формирует не юзер абы как, эти abr наверняка ограничены и все известны и на стадии написания
Можно убрать пересечения, но разбить строку всего один раз не проблема)
… а вот проверка вывода мне не сильно нравится) каждый раз скрипт пробегает по 16 блокам и проверяет 16 строк на вхождение искомого)) даже если мы запросили всего 1 блок) но без проверки мы не узнаем какой именно из них…
Вернее я название знаю и визуально вижу часть кода которую нужно вывести, но php слепой)) пока все не пощупает не поверит))
Вопрос: Стоит ли как то делать подсчет переданных "слов" и искать блоки пока кол-во блоков не сравняется с кол-вом слов?)))
Типа чтоб лишнее не проверять если уже все блоки найдены)
Во первых, почему обязательно GET, а не POST??abr=mama,papa,ded,baba
— если $_GET["abr"] содержит "mama" то выводим блок "мама"
— если $_GET["abr"] содержит "papa" то выводим блок "папа"
Во вторых, передаете методом POST массив $a = array('mama'=>1, 'papa'=>0, 'baba'=1, 'dada'=>0);
В приемнике: $a = cmsCore::request('a', 'array', '');
И затем
if(!$a['mama']){...}
if(!$a['papa']){...}
и никаких сложностей с распарсиванием…
так получилось) у меня запрос отсылает js скрипт и возвращает результаты — GET мне проще сформировать) в POST нужны формы… тем более что сам запрос визуально не видно какой он))Во первых, почему обязательно GET, а не POST?
С эти сложнее так как по такой схеме заранее все элементы присутствуют как в запросе, так и до него (есть нюансы)Во вторых, передаете методом POST массив $a = array('mama'=>1, 'papa'=>0, 'baba'=1, 'dada'=>0);
С GET я могу передать только 1 элемент, и код до запроса будет содержать только 1 элемент (особенность поделки) А чем компактней, тем лучше)
Если при данной реализации GET запроса (вернее самой проверки элементов при таком запросе) не создается бОльшая "нагрузка" то GET идеально подходит для моей задачи…
Как то так.
И в js тоже можно использовать POST между прочим. Используйте метод ajax() из jquery — он и отсылает данные скрипту на сервер и принимает потом результат работы этого скрипта…
Известны, всего 16 (возможно прибавиться), и пересечения уже есть)строку-то формирует не юзер абы как, эти abr наверняка ограничены и все известны и на стадии написания
Можно убрать пересечения, но разбить строку всего один раз не проблема)
… а вот проверка вывода мне не сильно нравится) каждый раз скрипт пробегает по 16 блокам и проверяет 16 строк на вхождение искомого)) даже если мы запросили всего 1 блок) но без проверки мы не узнаем какой именно из них…
Вернее я название знаю и визуально вижу часть кода которую нужно вывести, но php слепой)) пока все не пощупает не поверит))
Вопрос: Стоит ли как то делать подсчет переданных "слов" и искать блоки пока кол-во блоков не сравняется с кол-вом слов?)))
Типа чтоб лишнее не проверять если уже все блоки найдены)
Так просто пройтись по массиву $abr, не будет лишних проверок.
foreach ($abr as $blok){ echo "<br>Блок ".$blok; }
Обязательно рассмотрю вариант с POST, но даже GET работает "идеально"
ps: с помощью параметров в GET можно формировать необходимую статистику в метрике)