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

Форум MySQL

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

 

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

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

тема: Выбор нескольких значений
 
 автор: Vova   (17.07.2006 в 13:29)   письмо автору
 
 

Имеется код, который выбирает из предоставленного списка значения

  <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> 

Т.е. я выбираю AL - у меня из базы выбираются значения AL, если HB и AL одновременно - то HB и AL.
Обработка


<?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']).")";
    }
?> 

Но у меня в обработке видимо какая-то ошибка, т.к. выдает белую страницу. Не пойму, где тут ошибка...

   
 
 автор: cheops   (17.07.2006 в 13:38)   письмо автору
 
   для: Vova   (17.07.2006 в 13:29)
 

А у в if-блок идёт заход? Поставьте проверку
<?php
    
echo "out<br>";
    if(!isset(
$_POST['pit']) && $_POST['pit']!='none')  
    { 
      echo 
"in<br>";
      foreach(
$_POST['pit'] as $key $value
      { 
         
$_POST['pit'][$key] = "'$value'"
      } 
      
$tmp1 " and pit IN (".implode(",",$_POST['pit']).")"
    } 
?>

Что выводится?

   
 
 автор: Vova   (17.07.2006 в 14:01)   письмо автору
 
   для: cheops   (17.07.2006 в 13:38)
 

Выводится белый экран
Если ставлю

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

То ищется только по одному выбранному значению. Но мне надо, чтобы искалось по выбранным нескольким значениям.

   
 
 автор: cheops   (17.07.2006 в 14:47)   письмо автору
 
   для: Vova   (17.07.2006 в 14:01)
 

Т.е. погодите, а "out" выводит?

   
 
 автор: Vova   (17.07.2006 в 14:51)   письмо автору
 
   для: cheops   (17.07.2006 в 14:47)
 

Чистый белый экран, ничего нету. Может где-то прописать в начале, что за ошибка, чтобы ошибка выводилась?

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

У вас только этот пример с MySQL не работает или белый экран появлется при обращении к любым mysql-функциям?

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

Если вместо того фрагмента ставлю этот

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

То всё работает. Получается, что только этот фрагмент не работает...
В том фрагменте ошибка какая-то...

Другие функции работают

   
 
 автор: Trianon   (17.07.2006 в 15:10)   письмо автору
 
   для: Vova   (17.07.2006 в 14:57)
 

Может здесь не and , а or нужен?
(c соответствующим левым умалчиваемым значением where)

   
 
 автор: Vova   (17.07.2006 в 15:11)   письмо автору
 
   для: Vova   (17.07.2006 в 14:57)
 

Хотя, решил проверить такой код

 <?php

  $array 
= array('lastname''email''phone');
  
$comma_separated implode(","$array);

  print 
$comma_separated// lastname,email,phone

?>

Тоже вывелся пустой экран

А не с этим кодом всё нормально ....

   
 
 автор: Vova   (17.07.2006 в 15:19)   письмо автору
 
   для: Vova   (17.07.2006 в 15:11)
 

Выяснил, что что-то не так с этой строчкой

foreach($_POST['pit'] as $key = $value)

Если её заремить, то ошибок нет, а если она присутствует, то белый экран

   
 
 автор: Vova   (17.07.2006 в 15:33)   письмо автору
 
   для: Vova   (17.07.2006 в 15:19)
 

И вот ещё, если вместо = поставить =>

foreach($_POST['pit'] as $key => $value)

то белый экран не выдаёт, но не ищет при выборе ни по какому значению.

   
 
 автор: Vova   (26.07.2006 в 14:04)   письмо автору
 
   для: Vova   (17.07.2006 в 15:33)
 

Всем спасибо, ошибка найдена и исправлена. Всё работает )). Ищёт при выделении нескольких значений. Действительно, всё оказалось в строчке

foreach($_POST['pit'] as $key = $value)

   
 
 автор: Vova   (26.07.2006 в 14:38)   письмо автору
 
   для: Vova   (26.07.2006 в 14:04)
 

Единственное что, это то, что при выборе нескольких значений после поиска они не остаются выделенными в форме multiple. Можно ли как-то сделать, чтобы они остались бы выделенными, как и до нажатия на Поиск? И поэтому значение

echo "".$_POST['pit']."";

что я хочу вывести на экран выдаёт array, а не выделенные мною ....

   
 
 автор: cheops   (26.07.2006 в 16:02)   письмо автору
 
   для: Vova   (26.07.2006 в 14:38)
 

Да можно, вы как форму формируете?

   
 
 автор: Vova   (26.07.2006 в 18:51)   письмо автору
 
   для: cheops   (26.07.2006 в 16:02)
 

Так создается форма мульти

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

<?
$sql 
"SELECT * FROM products GROUP BY pit";
$r_sql mysql_query($sql);
while (
$res mysql_fetch_array($r_sql))
{
?>
<option value='<?= $res['pit'];?>'<?php if ($_POST['pit']==$res['pit']) echo "selected"?>><?= $res['pit']; ?> </option>

<? ?>
</select>


Обработка такая



<?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']).")";
    }
?>  


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

echo "Даты:</b> <span style='color: red;'><b>".$value."</b></span>";

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

   
 
 автор: Vova   (28.07.2006 в 14:56)   письмо автору
 
   для: Vova   (26.07.2006 в 18:51)
 

Так как можно сделать, чтобы выделенные значения оставались и после поиска ?

   
 
 автор: cheops   (28.07.2006 в 22:16)   письмо автору
 
   для: Vova   (26.07.2006 в 18:51)
 

Да у вас в принциее всё должно запоминаться, только пробел поставьте, чтобы у вас слово selected не вливалось со значением атрибута value
<option value='<?= $res['pit'];?><?php if ($_POST['pit']==$res['pit']) echo "selected"?>><?= $res['pit']; ?> </option>

   
 
 автор: Vova   (07.08.2006 в 14:04)   письмо автору
 
   для: cheops   (28.07.2006 в 22:16)
 

Поставил пробел, но ничего всё равно не запоминается.

   
 
 автор: Vova   (08.08.2006 в 12:25)   письмо автору
 
   для: Vova   (07.08.2006 в 14:04)
 

ВОт, немного переделанный код, но всё равно значения не запоминаются

<select multiple size='7' class="input" type=text name=pit[]>
     
        <?
$sql 
"SELECT * FROM products GROUP BY pit";
$r_sql mysql_query($sql);
while (
$res mysql_fetch_array($r_sql))
{
?>
        <option value='<?= $res['pit'];?>'<?php if ($_POST['pit']==$res['pit']) echo "selected"?>>
        <?= $res['pit']; ?>
        </option>
        <? ?>
      </select>

   
Rambler's Top100
вверх

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