[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вызов функции через чекбокс
Bolik
привет народ!

у меня тут такой вопрос:
на странице генерируются чекбоксы через цикл

$m=array(
"Alexa ",
"PR ",
"Keywords ",
"Sistrix ",
"DomPop ",
"Likes ",
);

foreach($m as $key) {
echo "<input type='checkbox' name='m[]' value=$key>$key";
}


данные передаю в обработчик через POST и там есть для каждого элемента массива своя функция. как привязать чекбокс к функции? например если выбран чекбокс "Alexa", то выполняась функция getalexa().

спасибо.
Michael
Вот так можешь сделать:
foreach($m as $key=>$val) {
echo "<input type='checkbox' name='m[$key]' value=1>$val";
}

При сабмите, в $_POST['m'] получешь массив, в котором ключи будут - твои выбранные элементы.

_____________
There never was a struggle in the soul of a good man that was not hard
Bolik
а можно написать функцию верификации чекбоксов, что-то типа

$modules=$_POST['m'];
function checkbox_verify () {
global $modules;
if (array_key_exists("Alexa",$modules))
{
return getalexa();
}
else {
echo "not exists";
}
}


?
но мне почему-то всегда возвращает "not exists". что не так?
Michael
У тебя просто "Alexa" Это не ключ, а значение массива.
А ты проверяешь как ключ --- array_key_exists.
Тебе надо in_array.

_____________
There never was a struggle in the soul of a good man that was not hard
Bolik
спасибо, так работает.
но возникла другая проблема, условие работает только с Alexa.
если пишу

function checkbox_verify () {
global $modules;
if (in_array("Alexa",$modules)):
return getalexa();
elseif (in_array("PR",$modules)):
return getpr();
else:
echo "not exists";
endif;

то возвращает not exists, если отмечен чекбокс "PR", хотя в массиве такое значение есть:


array(1) { [0]=> string(2) "PR" }
killer8080
foreach($_POST['m']  as $check){
if(in_array($check, $modules)){
$func = 'get'.strtolower($check);
function_exists($func) && $func();
}
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.