Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: checkbox вместо списка
 
 автор: Vova   (16.06.2006 в 12:30)   письмо автору
 
 

Имеется у меня вот такой вот select

<select class="input" type=text name=rooms>
     <option value=0 <?php if($_POST['rooms']==0) echo "selected"?>>любое
     <option value=4 <?php if($_POST['rooms']==4) echo "selected"?>>4/3
     <option value=5 <?php if($_POST['rooms']==5) echo "selected"?>>5/4
</select>

Через который ведется поиск по стобцу таблицы базы.

if(isset($_POST['search']))
{
  ?>
  <a name=table></a>
  <?php
  
// Флаг равен true, если есть хотя бы один критерий поиска
  
$is_query false;
  
// Проверяем наличие и число параметров поиска
  
  
$tmp1 $tmp2 $tmp3 $tmp3 $tmp4 $tmp5 $tmp6 $tmp7 $tmp8 =
  
$tmp9 $tmp10 $tmp11 $tmp12 $tmp13 $tmp14 $tmp15 $tmp16="";

...

if(!empty(
$_POST['rooms'])) $tmp8 " and rooms=".$_POST['rooms'];

...

$query "SELECT * FROM products
            WHERE hide='show'
            "
.$tmp11.$tmp1.$tmp2.$tmp3.$tmp4.$tmp5.$tmp6.$tmp7.$tmp8.
            
$tmp9.$tmp10.$tmp12.$tmp13.$tmp14.$tmp15.$tmp16."
            ORDER BY currency"
;

...

<
td>&nbsp;".$par['rooms']."</td>


Как можно в этом случае вместо select организовать чекбоксы?

<input name="Name" type="checkbox" value="ON">

Сооветственно, поиск идёт по чекбоксам ON, а по OFF нет.

   
 
 автор: cheops   (16.06.2006 в 15:14)   письмо автору
 
   для: Vova   (16.06.2006 в 12:30)
 

А для какой цели? Чтобы можно было сразу несколько выбрать? Тогда удобнее воспользоваться мульти-списком в котором можно выбрать несколько позиций зажимая клавишу Ctrl.

   
 
 автор: Vova   (16.06.2006 в 15:54)   письмо автору
 
   для: cheops   (16.06.2006 в 15:14)
 

Да, чтобы можно было выбирать несколько значений из списка. Если мультисписком, то тоже как это организовать в моём примере?

   
 
 автор: cheops   (17.06.2006 в 00:33)   письмо автору
 
   для: Vova   (16.06.2006 в 15:54)
 

Добавьте в тэг select атрибуты multiple size='7'
<select multiple size='7' class="input" type=text name=rooms> 
     <option value=0 <?php if($_POST['rooms']==0) echo "selected"?>>любое 
     <option value=4 <?php if($_POST['rooms']==4) echo "selected"?>>4/3 
     <option value=5 <?php if($_POST['rooms']==5) echo "selected"?>>5/4 
</select>

   
 
 автор: Vova   (18.06.2006 в 18:20)   письмо автору
 
   для: cheops   (17.06.2006 в 00:33)
 

Да, мульти появилось, но выбор по нескольким значениям не работает. Выбираю, допустим 4 и 5, а поиск идёт только по одному значению - 4.

   
 
 автор: cheops   (18.06.2006 в 22:17)   письмо автору
 
   для: Vova   (18.06.2006 в 18:20)
 

А вы как обрабатываете результаты из HTML-формы?

   
 
 автор: Vova   (19.06.2006 в 10:52)   письмо автору
 
   для: cheops   (18.06.2006 в 22:17)
 

Вот таким образом (отрывок из кода)

if(isset($_POST['search']))
{
  ?>
  <a name=table></a>
  <?php
  
// Флаг равен true, если есть хотя бы один критерий поиска
  
$is_query false;
  
// Проверяем наличие и число параметров поиска
  
  
$tmp1 $tmp2 $tmp3 $tmp3 $tmp4 $tmp5 $tmp6 $tmp7 $tmp8 =
  
$tmp9 $tmp10 $tmp11 $tmp12 $tmp13 $tmp14 $tmp15 $tmp16="";

...

if(!empty(
$_POST['rooms'])) $tmp8 " and rooms=".$_POST['rooms'];

...

$query "SELECT * FROM products
            WHERE hide='show'
            "
.$tmp11.$tmp1.$tmp2.$tmp3.$tmp4.$tmp5.$tmp6.$tmp7.$tmp8.
            
$tmp9.$tmp10.$tmp12.$tmp13.$tmp14.$tmp15.$tmp16."
            ORDER BY currency"
;

...

<
td>&nbsp;".$par['rooms']."</td

   
 
 автор: cheops   (19.06.2006 в 11:16)   письмо автору
 
   для: Vova   (19.06.2006 в 10:52)
 

Вот ещё что, имя тэга select следует сделать массивом - rooms[], тогда код обработки должен выгядеть примерно так
<form method=post>
<select multiple size='7' class="input" type=text name=rooms[]> 
     <option value=0 <?php if($_POST['rooms']==0) echo "selected"?>>любое 
     <option value=4 <?php if($_POST['rooms']==4) echo "selected"?>>4/3 
     <option value=5 <?php if($_POST['rooms']==5) echo "selected"?>>5/4 
</select>
<input type=submit value="Отправить">
</form>
<?php
  
if(!empty($_POST['rooms'])) $tmp8 " and rooms IN (".implode(",",$_POST['rooms']).")";
?>

   
 
 автор: Vova   (19.06.2006 в 14:00)   письмо автору
 
   для: cheops   (19.06.2006 в 11:16)
 

Вот мой код

  <select multiple size='7' class="input" type=text name=pit[]>
     <option value='none' <?php if($_POST['pit']=='none') echo "selected"?>>любое
     <option value='AL' <?php if($_POST['pit']=='AL') echo "selected"?>>AL
     <option value='HB' <?php if($_POST['pit']=='HB') echo "selected"?>>HB
     <option value='UAL' <?php if($_POST['pit']=='UAL') echo "selected"?>>UAL
    </select>


и обработка

   if(!isset($_POST['pit']) && $_POST['pit']!='none')
    $tmp1 = " and pit IN (".implode(",",$_POST['pit']).")";

Выбираю значение, поиск не приосходит - ищётся по любому значению.

   
 
 автор: cheops   (19.06.2006 в 19:03)   письмо автору
 
   для: Vova   (19.06.2006 в 14:00)
 

А... это же у нас строковые значения... исправьте код следующим образом
<?php
    
if(!isset($_POST['pit']) && $_POST['pit']!='none'
    {
      foreach(
$_POST['pit'] as $key $value)
      {
         
$_POST['pit'][$key] = "'$value'";
      }
      
$tmp1 " and pit IN (".implode(",",$_POST['pit']).")";
    }
?>

   
 
 автор: Vova   (19.06.2006 в 22:31)   письмо автору
 
   для: cheops   (19.06.2006 в 19:03)
 

Исправил всё в точности так - но у меня появляется белый экран. Видимо какая-то ошибка?

   
 
 автор: hell_riser   (19.06.2006 в 23:49)   письмо автору
 
   для: cheops   (19.06.2006 в 19:03)
 

>А... это же у нас строковые значения... исправьте код
>следующим образом
>
<?php
>    if(!isset($_POST['pit']) && $_POST['pit']!='none'
>    {
>      foreach(
$_POST['pit'] as $key $value)
>      {
>         
$_POST['pit'][$key] = "'$value'";
>      }
>      
$tmp1 " and pit IN
>("
.implode(",",$_POST['pit']).")";
>    }
>
?>

Чего-то я условия не пойму, по человечески получается
== Если не существует параметра $_POST['pit'] и параметр $_POST['pit'] не нулевой тогда выполняется цикл.==
Может опечатка закралась??

<?php 
    
if( isset($_POST['pit']) && $_POST['pit']!='none'//или if( !isset($_POST['pit']) || $_POST['pit']!='none') 
    

      foreach(
$_POST['pit'] as $key $value
      { 
         
$_POST['pit'][$key] = "'$value'"
      } 
      
$tmp1 " and pit IN (".implode(",",$_POST['pit']).")"
    } 
?> 

   
 
 автор: Vova   (21.06.2006 в 16:52)   письмо автору
 
   для: hell_riser   (19.06.2006 в 23:49)
 

Что первый вариант, что второй - белый экран.
Ищет только в варианте без массива

<select multiple size='7' class="input" type=text name=pit>

и

if(isset($_POST['pit']) && $_POST['pit']!='none')
     $tmp1 = " and pit='".$_POST['pit']."'";

но только одно выбранное значение. Поиск по нескольким выбранным не происходит.

   
 
 автор: Vova   (04.07.2006 в 12:59)   письмо автору
 
   для: Vova   (21.06.2006 в 16:52)
 

И всё же у меня так и не получилось поиск сразу по нескольким значениям и так и так пробовал выдаёт белый экран (видимо ошибка) либо ищет только по одному значению. Помогите, кто может )

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования