Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 18.01.2012
Сообщений: 96

Запаминать состояние чекбокса

23.04.2012, 00:55. Показов 2432. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, подскажите как написать чекбокс, а именно чтоб при перезагрузке страницы он был нажат но не просто нажат. На странице предполагается несколько, чекбоксов например выбираем 2 из 4-х страница перезагружается и нажатыми остаются те что были нажаты.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.04.2012, 00:55
Ответы с готовыми решениями:

Считать состояние чекбокса
Здравствуйте. Подскажите как считать состояние чекбокса и радио кнопок, что бы с зависимости от состояния выводились разные сообщения....

Как определить состояние чекбокса?
Как определить стоит флажок или нет в коде vba ?

Вывести в StatusBar состояние чекбокса
Решил поиграться с данной компонентой. Вот код procedure TForm2.CheckBox1Click(Sender: TObject); begin if CheckBox1.Checked =...

9
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
23.04.2012, 07:28
simonphoenix, это можно реализовать так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
    
    // Небольшая функция, которая выделит необходимые чекбоксы
    function checked( $value )
    {
        $checkboxes = $_POST['checkboxes']; // Массив выделенных чекбоксов
        
        if( in_array( $value, (array)$checkboxes ) )
        {
            return "checked";
        }
        else
        {
            return false;
        }
    }
?>
<form action="" method="post">
    <label><input type="checkbox" name="checkboxes[]" value="1" <?=checked(1)?> /> Первый чекбокс</label><br />
    <label><input type="checkbox" name="checkboxes[]" value="2" <?=checked(2)?> /> Второй чекбокс</label><br />
    <label><input type="checkbox" name="checkboxes[]" value="3" <?=checked(3)?> /> Третий чекбокс</label><br />
    <label><input type="checkbox" name="checkboxes[]" value="4" <?=checked(4)?> /> Четвёртый чекбокс</label><br />
    <input type="submit" value="Отправить чекбоксы" />
</form>
Как всё это работает:
- Есть чекбоксы, у которые имена являются одним массивом (в нашем случае "checkboxes[]"), который при нажатии на кнопку "Отправить чекбоксы" передаётся php-скрипту:
HTML5
1
2
3
4
<label><input type="checkbox" name="checkboxes[]" value="1" /> Первый чекбокс</label><br />
<label><input type="checkbox" name="checkboxes[]" value="2" /> Второй чекбокс</label><br />
<label><input type="checkbox" name="checkboxes[]" value="3" /> Третий чекбокс</label><br />
<label><input type="checkbox" name="checkboxes[]" value="4" /> Четвёртый чекбокс</label><br />
- Есть функция:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Небольшая функция, которая выделит необходимые чекбоксы
function checked( $value )
{
    $checkboxes = $_POST['checkboxes']; // Массив выделенных чекбоксов
    
    if( in_array( $value, (array)$checkboxes ) )
    {
        return "checked";
    }
    else
    {
        return false;
    }
}
Она работает так: если в массиве выделенных чекбоксов есть данный чекбокс, она возвращает "checked" и чекбокс выделяется.
- Вызываем эту функцию так:
PHP
1
<?=checked(*)?>
Где знак "*" - это значение value данного чекбокса
1
0 / 0 / 0
Регистрация: 18.01.2012
Сообщений: 96
23.04.2012, 09:27  [ТС]
А как ето вможно адаптировать к моему коду
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
 
function sub_func($r, $aSub) {
  global $db;
  if (count($aSub) > 0) {
    $sql = '( ' . implode(' ) UNION ( ', $aSub) . ' )';
  } else {
    // Здесь запрос, если не выбрана ни одна галочка.
  }
  
  if ($result = mysql_query($sql, $db)) {
    while ($row = mysql_fetch_array($result)) {
      if ($row["ostatok"] > 0) {
        print "<table width='900' border='1'>
          <tr>
             <td>таблица1111</td>     
            <td width='100'>" . $row["shirina"] . "</td>
            <td width='100'>" . $row["profil"] . "</td>
            <td width='100'>" . $row["diametr"] . "</td>
            <td width='100'>" . $row["indnag"] . "</td>
            <td width='150'>" . $row["indskor"] . "</td>
            <td width='150'>" . $row["ostatok"] . "</td>
            <td width='100'>" . $row["cena"] . "</td>
            <td width='100'>hhh" . $row["id"] . "</td>
             <td width='100'>" . ($row["ostatok"] * $row["cena"]) . "</td>
             <td >mmm" . $r["md"] . "</a></td>   
          </tr>
        </table>";
      } else {
        print '';
      }
    }
  }
}
 
echo '<form method="post" action="">';
// здесь идет код для выпадающих списков 
так как  action у меня пуст то при выборе параметра из выпадающего списка страница перезагружается выводя нужную информацию из базы. Вот тут то мне и нужно чтоб чекбоксы при етой перезагрузке не обнулялись, как их сюда вставить незнаю
 
 
 
}
 {
}  
 
                     
echo '<p> ТАБЛИЦА 1 <input type="checkbox" name="bf_goodrich" value=""  >';
echo '<p> ТАБЛИЦА 2 <input type="checkbox" name="barum" value="" >';
echo '<p> таблица 3 <input type="checkbox" name="amtel" value="" >';
 /* echo ' <input type="submit" name="button" value="Поехали">'; */
 
echo "</form>";
 
$aName = array('nazv_auto' => 'shirina', 'nazv_model' => 'profil', 'nazv_year' => 'diametr', 'nazv_sezon' => 'sezon');
// Теперь создаем пустой массив для хранения данных формирующих запрос (имя поля = значение).
$aSQL = array();
// Проходим цикл ассоциативного массива имен и добавляем элемент в массив $aSQL, если список выбран.
foreach ($aName as $select => $field) {
  if (!empty($_POST[$select])) $aSQL[] = ' `' . $field . '` = "' . mysql_real_escape_string($_POST[$select]) . '" ';
}
 
$aName = array('bf_goodrich', 'barum', 'amtel');
$aUnion = array();
foreach ($aName as $checkbox) {
  if (isset($_POST[$checkbox])) {
    $aUnion[] = ' SELECT * FROM `' . $checkbox . '`  WHERE ' . implode('AND', $aSQL) . ' GROUP BY `model` ';
  }
}
 
if (count($aUnion) > 0) {
   $sql = '( ' . implode(' ) UNION ( ', $aUnion) . ' )';
} else {
    $sql = 'SELECT * FROM `bf_goodrich` GROUP BY `model`';
}
 
// Дальше.
$aSub = array();
$aSQL[] = ' `md` = "' . $r['md'] . '" ';
foreach ($aName as $checkbox) {
  if (isset($_POST[$checkbox])) {
    $aSub[] = ' SELECT * FROM `' . $checkbox . '`  WHERE ' . implode('AND', $aSQL);
  }
}
 
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
    printf("<table width='900' border='1'>
      <tr>
        <td colspan='9'>  Шины %s ...  Модель %s</td>
      </tr>
      <tr>
        <td colspan='2'>фото</td>
        <td colspan='7' rowspan='2'>текст</td>
      </tr>
      <tr>
        <td>%s</td>
        <td>md=%s</td>
      </tr>
      <tr>
        <td  width='100'>%s</td>
        <td width='100'>%s</td>
        <td width='100'>%s</td>
        <td width='150'>Инд.нагр</td>
        <td width='150'>Инд.скор</td>
        <td width='100'>Остаток</td>
        <td width='100'></td>
        <td width='100'></td>
        <td>%s</td>
      </tr>
    </table>",$row["brand"], $row["model"], $row["sezon"], $row["md"] , $row["shirina"], $row["profil"], $row["diametr"], $row["md"]);
    sub_func($row, $aSub);
    echo ('<br>');
}
 
?>
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
23.04.2012, 10:46
Вот так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
 
function sub_func($r, $aSub) {
  
  // Функция для выделения чекбоксов
  function Checked( $checkbox )
  {
      if( isset( $_POST[$checkbox] ) )
      {
          return "checked";
      }
      else
      {
          return false;
      }
  }
  
  global $db;
  if (count($aSub) > 0) {
    $sql = '( ' . implode(' ) UNION ( ', $aSub) . ' )';
  } else {
    // Здесь запрос, если не выбрана ни одна галочка.
  }
  
  if ($result = mysql_query($sql, $db)) {
    while ($row = mysql_fetch_array($result)) {
      if ($row["ostatok"] > 0) {
        print "<table width='900' border='1'>
          <tr>
             <td>таблица1111</td>     
            <td width='100'>" . $row["shirina"] . "</td>
            <td width='100'>" . $row["profil"] . "</td>
            <td width='100'>" . $row["diametr"] . "</td>
            <td width='100'>" . $row["indnag"] . "</td>
            <td width='150'>" . $row["indskor"] . "</td>
            <td width='150'>" . $row["ostatok"] . "</td>
            <td width='100'>" . $row["cena"] . "</td>
            <td width='100'>hhh" . $row["id"] . "</td>
             <td width='100'>" . ($row["ostatok"] * $row["cena"]) . "</td>
             <td >mmm" . $r["md"] . "</a></td>   
          </tr>
        </table>";
      } else {
        print '';
      }
    }
  }
}
 
echo '<form method="post" action="">';
// здесь идет код для выпадающих списков 
так как  action у меня пуст то при выборе параметра из выпадающего списка страница перезагружается выводя нужную информацию из базы. Вот тут то мне и нужно чтоб чекбоксы при етой перезагрузке не обнулялись, как их сюда вставить незнаю
 
 
 
}
 {
}  
 
                     
echo '<p> ТАБЛИЦА 1 <input type="checkbox" name="bf_goodrich" value="" '.Checked("bf_goodrich").'  >';
echo '<p> ТАБЛИЦА 2 <input type="checkbox" name="barum" value="" '.Checked("barum").' >';
echo '<p> таблица 3 <input type="checkbox" name="amtel" value="" '.Checked("amtel").' >';
 /* echo ' <input type="submit" name="button" value="Поехали">'; */
 
echo "</form>";
 
$aName = array('nazv_auto' => 'shirina', 'nazv_model' => 'profil', 'nazv_year' => 'diametr', 'nazv_sezon' => 'sezon');
// Теперь создаем пустой массив для хранения данных формирующих запрос (имя поля = значение).
$aSQL = array();
// Проходим цикл ассоциативного массива имен и добавляем элемент в массив $aSQL, если список выбран.
foreach ($aName as $select => $field) {
  if (!empty($_POST[$select])) $aSQL[] = ' `' . $field . '` = "' . mysql_real_escape_string($_POST[$select]) . '" ';
}
 
$aName = array('bf_goodrich', 'barum', 'amtel');
$aUnion = array();
foreach ($aName as $checkbox) {
  if (isset($_POST[$checkbox])) {
    $aUnion[] = ' SELECT * FROM `' . $checkbox . '`  WHERE ' . implode('AND', $aSQL) . ' GROUP BY `model` ';
  }
}
 
if (count($aUnion) > 0) {
   $sql = '( ' . implode(' ) UNION ( ', $aUnion) . ' )';
} else {
    $sql = 'SELECT * FROM `bf_goodrich` GROUP BY `model`';
}
 
// Дальше.
$aSub = array();
$aSQL[] = ' `md` = "' . $r['md'] . '" ';
foreach ($aName as $checkbox) {
  if (isset($_POST[$checkbox])) {
    $aSub[] = ' SELECT * FROM `' . $checkbox . '`  WHERE ' . implode('AND', $aSQL);
  }
}
 
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
    printf("<table width='900' border='1'>
      <tr>
        <td colspan='9'>  Шины %s ...  Модель %s</td>
      </tr>
      <tr>
        <td colspan='2'>фото</td>
        <td colspan='7' rowspan='2'>текст</td>
      </tr>
      <tr>
        <td>%s</td>
        <td>md=%s</td>
      </tr>
      <tr>
        <td  width='100'>%s</td>
        <td width='100'>%s</td>
        <td width='100'>%s</td>
        <td width='150'>Инд.нагр</td>
        <td width='150'>Инд.скор</td>
        <td width='100'>Остаток</td>
        <td width='100'></td>
        <td width='100'></td>
        <td>%s</td>
      </tr>
    </table>",$row["brand"], $row["model"], $row["sezon"], $row["md"] , $row["shirina"], $row["profil"], $row["diametr"], $row["md"]);
    sub_func($row, $aSub);
    echo ('<br>');
}
 
?>
0
0 / 0 / 0
Регистрация: 18.01.2012
Сообщений: 96
23.04.2012, 11:00  [ТС]
у меня выдает ошибку
PHP
1
Fatal error: Cannot redeclare checked()
Добавлено через 3 минуты
Сами чекбоксы не вывелись

Добавлено через 4 минуты
Извеняюсь код ошибки Fatal error: Call to undefined function Checked() in и чекбоксы по прежнему не выводятся
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
23.04.2012, 11:11
simonphoenix, видимо нужно вынести это функцию:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
  // Функция для выделения чекбоксов
  function Checked( $checkbox )
  {
      if( isset( $_POST[$checkbox] ) )
      {
          return "checked";
      }
      else
      {
          return false;
      }
  }
За пределы функции sub_func()
0
0 / 0 / 0
Регистрация: 18.01.2012
Сообщений: 96
23.04.2012, 11:14  [ТС]
Ито правда помогло, спасибо!!!!! буду тестировать
0
0 / 0 / 0
Регистрация: 18.01.2012
Сообщений: 96
24.04.2012, 18:45  [ТС]
Здравствуйте написал немного по другому без функции,
PHP
1
2
3
4
5
if (isset($_POST['michelin'])) {
  echo '<p>michelin<input type="checkbox" checked="checked" name="michelin" value="" >';
} else {
  echo '<p>michelin<input type="checkbox" name="michelin" value="" >';
}
подскажите как сюда или в ваш предидущий пример добавить условие автонажатия на чекбокс чтоб он был чтото вроде кнопки.

у меня на выпадающем списке есть такое условие
PHP
1
 onchange=\"this.form.submit();\"
, чтото подобное можно написать для чекбокса?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
24.04.2012, 19:00
Вставьте эту же функцию в чекбокс:
HTML5
1
<p>michelin<input type="checkbox" checked="checked" name="michelin" value="" onchange="this.form.submit();" ></p>
1
0 / 0 / 0
Регистрация: 18.01.2012
Сообщений: 96
26.04.2012, 03:26  [ТС]
Доброй ночи подскажите как в етом
PHP
1
2
3
4
5
if (isset($_POST['michelin'])) {
  echo '<p>michelin<input type="checkbox" checked="checked" name="michelin" value="" >';
} else {
  echo '<p>michelin<input type="checkbox" name="michelin" value="" >';
}
или в вашем варианте прописать параметр для чекбокса чтоб при загрузке страницы он был уже нажат но при етом и отжать его тоже можнобылобы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.04.2012, 03:26
Помогаю со студенческими работами здесь

Bootstrap 4: снятие галочки с чекбокса при выборе другого чекбокса
Здравствуйте! Как снять галочку чекбокса при выборе другого чекбокса, рассположенных в цикле? Спасибо. } elseif...

Можно ли при гибернации сохранить состояние нескольких приложений, но при этом не сохранять состояние системы?
можно сохранить состояние нескольких приложений, но при этом не сохранять состояние системы? убил логон при помощи logon workshop`a, а на...

Проверка чекбокса
Доброго времени суток! Необходимо у выбранного чекбокса у &quot;кнопки&quot; менять фон и у span менять надпись на &quot;В сравнениИ&quot; (не у...

Стилизация чекбокса
Нужно стилизовать чекбокс, вроде все сделано правильно, но почему он не работает, подскажите пожалуйста где ошибка &lt;input...

Автонажатие чекбокса
Всем привет. Помогите решить проблему, есть чекбокс if (isset($_POST) { echo '&lt;p&gt;ACHILLES &lt;input type=&quot;checkbox&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru