|
|
|
| У меня возник вопрос работы с множеством чекбоксов, например когда надо удалить сразу несколько новостей выделенных чекбоксами или записать в базу список категорий в которых состоит товар или сотрудник...вот например мне на данный момент нужно:
Есть большой список категорий вакансий, при добавлении вакансии нужно указать категорию или категории в которых будет состоять вакансия...вот как это сделать?
Вот пример кода где и стоят те самые чекбоксы...
<input name="cat" type="checkbox" value="1">
Архитектура<br>
<input name="cat" type="checkbox" value="2">
Дизайн
<br>
<input name="cat" type="checkbox" value="3">
Безопасность<br>
<input name="cat" type="checkbox" value="4">
Информационные технологии и Интернет<br>
<input name="cat" type="checkbox" value="5">
Логистика, перевозки, транспорт, склад, доставка<br>
<input name="cat" type="checkbox" value="6">
Маркетинг<br>
<input name="cat" type="checkbox" value="7">
Медицина и фармация<br>
<input name="cat" type="checkbox" value="8">
Персонал гостиниц, ресторанов, кафе, предприятий сферы обслуживания<br>
<input name="cat" type="checkbox" value="9">
Промышленное производство, оборудование<br>
<input name="cat" type="checkbox" value="10">
Реклама, СМИ, издательство, полиграфия<br>
<input name="cat" type="checkbox" value="11">
Руководители, управляющие, топ-менеджеры<br>
|
Заранее благодарен! | |
|
|
|
|
|
|
|
для: CassIO
(27.03.2008 в 06:10)
| | В вашем случае вы всегда будете получать только одно значение, а именно - последнего отмеченно чекбокса. Все потому, что вы имена одинаковые даете чекбоксам. Нужно так, например, cat1, cat2,cat3... Тогда можно определить все что угодно из полученного массива, и приемов не один. Например, определить ключи и их знаения. Для этого можно воспользоваться циклами, или же функциями работы с массивами. Все зависит от того, чего вы хотите и для чего. | |
|
|
|
|
|
|
|
для: CassIO
(27.03.2008 в 06:10)
| | Есть два варианта:
1 Если у тебя все чекбоксы известны и имеют конкретные но разные имена cat1, cat2, cat3 и т.д.
2 Если задать чекбокс в виде массива, тоесть
Архитектура<br>
<input name="ca[]t" type="checkbox" value="2">
Дизайн
<br>
<input name="cat[]" type="checkbox" value="3">
Безопасность<br>
<input name="cat[]" type="checkbox" value="4">
Информационные технологии и Интернет<br>
<input name="cat[]" type="checkbox" value="5">
Логистика, перевозки, транспорт, склад, доставка<br>
<input name="cat[]" type="checkbox" value="6">
Маркетинг<br>
<input name="cat[]" type="checkbox" value="7">
Медицина и фармация<br>
|
PHP сам вытянет все данные из чекбокса в массив | |
|
|
|
|
|
|
|
для: ONYX
(27.03.2008 в 07:22)
| | Спасибо огромное! :)
Потом сделал через implode и explode че надо :) | |
|
|
|
|
|
|
|
для: ONYX
(27.03.2008 в 07:22)
| | здравствуйте уважаемые, хорошая тема сам искал ответ на этот вопрос, для меня этот вопрос остался открытым))
подскажите пожалуйста, для примера, как после вышеприведённого кода создать кнопочку или ссылку, которая отображала бы на экране категории которые отмечены чекбоксами??? | |
|
|
|
|
|
|
|
для: knotya
(31.03.2008 в 16:50)
| | Вот я сейчас над этим работаю...как вывести названия выбранных категорий сделал, а как сделать полный списочек категорий и в них уже отмеченные чекбоксами еще пока не знаю, уже третий день бьюсь.
Мож кто уже делал такое, поможете? :) | |
|
|
|
|
|
|
|
для: CassIO
(31.03.2008 в 19:40)
| | Что значит уже отмеченные - у ранее выбранных категорий должны быть отмечены чекбоксы? Если так, то при выводе списка категорий проверяйте, например, их id со значением полученных чекбоксов, и если они равны, то этому чекбокусу указывайте атрибут checked. Вот только зачем это нужно? | |
|
|
|
|
|
|
|
для: sim5
(31.03.2008 в 20:00)
| | Допустим смотри...я подал вакансию и отметил 5 категорий к которым относится категория. Потом забыл что не добавил еще одну категорию, хочу это сделать, захожу в админку, выбираю "Редактировать вакансию". Там у меня вываливается писок категорий вида: чекбокс Архитектура
Те к которым вакансия уже относится должны быть отмеченными...т.е. с атрибутом cheked или как он там.
Всю голову изломал, как сделать не знаю, теоретически знаю а как практически нет :( | |
|
|
|
|
|
|
|
для: CassIO
(31.03.2008 в 20:09)
| | Ну если для админа, тогда да. Делайте так, как я сказал выше, только отмеченны должны бы те, которые у вас базе указаны как отмеченные или как пренадлежащие какой-то вакансии, т.е. признак по которому вы это узнаете, типа:
<input type="checkbox" value="" <? if (условие) print 'checked' ?>>
|
| |
|
|
|
|
|
|
|
для: sim5
(31.03.2008 в 21:19)
| | Не, ты маленько не так понял ))
Вот например урл:
index.php?act=cabinet&sub=vacancy_edit&id=2
Из него мы как обычно получаем id и вот как пробовал я...но маленько не так получилось :(
<?
if (session_is_registered(login) AND $type == 1) {
$id = clear($_REQUEST['id']);
if (isset($id)) {
$sql = "SELECT * FROM `work_vacansii` WHERE `v_id`='$id'";
$result = mysql_query($sql);
$data = mysql_fetch_array($result);
if (strlen($data['v_cats']) > 1) {
$cat_list = explode(",", $data['v_cats']);
$new_cat_list = array();
foreach ($cat_list as $element) {
$sql = "SELECT * FROM `work_cats`";
$result = mysql_query($sql);
while ($data = mysql_fetch_array($result)) {
if ($data['cat_id'] == $element) {
$top .= "SELECTED $element <br>";
} else {
$top .= "DESELECTED ".$data['cat_id']."<br>";
}
}
}
}
}
} else {
$errors = "Ошибка авторизации!";
$parse->get_tpl('templates/errors.tpl');
$parse->set_tpl('{errors}',$errors);
$parse->tpl_parse();
$top .=$parse->template;
}
?>
|
| |
|
|
|
|
|
|
|
для: CassIO
(31.03.2008 в 22:10)
| | В общем ночью спал и меня осенило что лучше бы операции местами поменять и вот че получилось:
<?
if (session_is_registered(login) AND $type == 1) {
$id = clear($_REQUEST['id']);
if (isset($id)) {
$sql = "SELECT * FROM `work_vacansii` WHERE `v_id`='$id'";
$result = mysql_query($sql);
$data = mysql_fetch_array($result);
if (strlen($data['v_cats']) > 1) {
$cat_list = explode(",", $data['v_cats']);
$new_cat_list = array();
$sql = "SELECT * FROM `work_cats`";
$result = mysql_query($sql);
while ($data = mysql_fetch_array($result)) {
foreach ($cat_list as $element) {
if ($data['cat_id'] == $element) {
$top .= "<input name=\"cat[]\" type=\"checkbox\" value=\"".$element."\" checked> ".$data['cat_name']."<br />";
$check = $element;
}
}
if ($check == $data['cat_id']) {
$top .="";
} else {
$top .= "<input name=\"cat[]\" type=\"checkbox\" value=\"".$data['cat_id']."\"> ".$data['cat_name']."<br />";
}
}
}
}
} else {
$errors = "Ошибка авторизации!";
$parse->get_tpl('templates/errors.tpl');
$parse->set_tpl('{errors}',$errors);
$parse->tpl_parse();
$top .=$parse->template;
}
?>
|
Все работает! А там дальше, как хоти так и вороти... | |
|
|
|
|
|
|
|
для: CassIO
(31.03.2008 в 22:10)
| | Ну слава богу, зря писал, пришлось удалить. | |
|
|
|
|
|
|
|
для: CassIO
(27.03.2008 в 06:10)
| | Впринципе если кто то найдет способ по проще или удобней, пишите :) | |
|
|
|
|
|
|
|
для: CassIO
(01.04.2008 в 10:57)
| | >Впринципе если кто то найдет способ по проще или удобней, пишите :)
чекбоксы проименуй так: cat.$id
foreach($_POST['cat'] as $id => $v)
{
$sql="DELETE FROM volume_items WHERE id='$id'";
mysql_query($sql);
} | |
|
|
|