451

Re: Выпадающий список

Пока не получяется с сами запросами ошибок много.    Подскажите с простым вариантом без чекбоксов, код только со списками, у меня не получяется сформировать запрос тоесть на два условия если выбран параметр в списке то вывести только с одной таблицы, с етим нормально но если не выбран ни один параметр из списка то вывести все параметры из всех таблиц,

function sub_func($r, $aSQL) {
  global $db; // Эта строка необходима.
  $aSQL[] = ' `md` = "' . $r['md'] . '" '; // Добавляем условие выборки.
  if (count($aSub) > 0) {
    $sql = '( ' . implode(' ) UNION ( ', $aSub) . ' )  ';
  } else {
  $sql = '(
    SELECT * FROM `achilles`  WHERE ' . implode('AND', $aSQL) . ' 
  ) 
   UNION (
    SELECT * FROM `aeolus`  WHERE ' . implode('AND', $aSQL) . '
  ) 
   UNION (
    SELECT * FROM `amtel`  WHERE ' . implode('AND', $aSQL) . '
  )
   UNION (
    SELECT * FROM `autoguard`  WHERE ' . implode('AND', $aSQL) . '
  )
   UNION (
    SELECT * FROM `barum`  WHERE ' . implode('AND', $aSQL) . '
  )
  
   
   
   ';
  }
  
  if ($result = mysql_query($sql, $db)) {
    while ($row = mysql_fetch_array($result)) {
      if ($row["ostatok"] > 0) {
        print "<table width='700' class='smaltable'>
  <tr>
    <td width='70' align='center'><font color= '#1A7EDF'>" . $row["shirina"] . "</font></td>
    <td width='80' align='center'><font color= '#1A7EDF'>" . $row["profil"] . "</font></td>
    <td width='80' align='center'><font color= '#1A7EDF'>" . $row["diametr"] . "</font></td>
    <td width='120' align='center'><font color= '#1A7EDF'>" . $row["indnag"] . "</font></td>
    <td width='100' align='center'><font color= '#1A7EDF'>" . $row["indskor"] . "</font></td>
    <td width='70' align='center'><font color= '#1A7EDF'>" . $row["ostatok"] . "</font></td>
    <td width='100' align='center'><font color= '#FF0000'>" . $row["cena"] . "</font></td>
    <td align='center'><font color= '#1A7EDF'>Заказать</font></td>
  </tr>
</table>";
      } else {
        print '';
      }
    }
  }
}

/* <td width='100'>hhh" . $row["id"] . "</td>
             <td width='100'>" . ($row["ostatok"] * $row["cena"]) . "</td>
             <td >" . $r["md"] . "</a></td> */

include ("blocks/spisok.php");

$aName = array('nazv_auto' => 'shirina', 'nazv_model' => 'profil', 'nazv_year' => 'diametr', 'nazv_sezon' => 'sezon', 'nazv_sezon' => 'sezon');
// Теперь создаем пустой массив для хранения данных формирующих запрос (имя поля = значение).
$aSQL = array();
// Проходим цикл ассоциативного массива имен и добавляем элемент в массив $aSQL, если список выбран.
foreach ($aName as $select => $field) {
  if (!empty($_POST[$select])) $aSQL[] = ' `' . $field . '` = "' . mysql_real_escape_string($_POST[$select]) . '" ';
}
// Если в массиве $aSQL есть хоть один элемент, то формируем запрос.
if (count($aSQL) > 0) {
 
   
  
  $sql = '(
    SELECT * FROM `barum`   GROUP BY `model`
  ) ';
  

  
} else { // Если в массиве ничего нет, значит ни один список из массива $aName не выбран и формируем запрос выбирающий все данные, например.
 $sql = '(
    SELECT * FROM `achilles`  WHERE ' . implode('AND', $aSQL) . '   
  ) 
   UNION (
    SELECT * FROM `aeolus`   WHERE ' . implode('AND', $aSQL) . '
  ) 
   UNION (
    SELECT * FROM `amtel`  WHERE ' . implode('AND', $aSQL) . ' 
  )
   UNION (
    SELECT * FROM `autoguard`   WHERE ' . implode('AND', $aSQL) . '
  )
   UNION (
    SELECT * FROM `barum`  WHERE ' . implode('AND', $aSQL) . ' 
  )
   
   
   
   ';
  }

 
?>

выбивает ошибку

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\autoshina\index.php on line 142

452

Re: Выпадающий список

if (count($aUnion) > 0) {
  $count_sql = '( ' . implode(' ) UNION ( ', $aUnion) . ' ) ';
  $count = mysql_numrows(mysql_query($count_sql)) or die('error! Записей не найдено!');

  // Здесь надо формировать листалку.
  $pages_count = ceil($count / $perpage); // Количество страниц
  if ($page > $pages_count) $page = $pages_count;
  $start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД

  // И теперь добавьте переменную для формирования запроса выбирающего данные с учетом листалки.
  $sql = '( ' . implode(' ) UNION ( ', $aUnion) . ' ) LIMIT ' . $start_pos . ', ' . $perpage;
} else if ( count($aSQL) <= 0) {...

if (count($aUnion) > 0) { - Это означает, что выбрана одна или более галочек. Поэтому пока сделайте, чтобы работала эта часть скрипта, то есть, если выбраны галочки.

453

Re: Выпадающий список

так в том то и дело что мы тогда не смогли прописать условие чтоб при первой загрузке была выбрана 1 или более галочек, тоесть страница в первый раз грузится с пустыми чекбоксами и списками. Наверное потому и выбивает ошибки, тоесть с самими запросами еще не все в порядке. Вы раньше написали мне небольшой код чтоб при первой загрузке был выбран чекбокс, да действительно галочка на нем стоит но- при етом он не нажат само действие нажатия не произошло. По етой причине и ошибки с листалкой.

454

Re: Выпадающий список

Где формируется запрос на выборку данных при первой загрузке страницы?

455

Re: Выпадающий список

Вот все три запроса, должно в идеале быть 4 но они не получились, да и ети не коректно работают.

if (count($aUnion) > 0) { $sql = '( ' . implode(' ) UNION ( ', $aUnion) . ' ) LIMIT ' . $start_pos . ', ' . $perpage;
} else if ( count($aSQL) <= 0) {$sql = '(
  
    SELECT * FROM `achilles`  GROUP BY model limit '.$start_pos.', '.$perpage.' 
  )';
}
 else {
$sql = '(
  
    SELECT * FROM `achilles`  WHERE ' . implode('AND', $aSQL) . ' GROUP BY model limit '.$start_pos.', '.$perpage.' 
  ) UNION (
  
    SELECT * FROM `aeolus`  WHERE ' . implode('AND', $aSQL) . 'GROUP BY model limit '.$start_pos.', '.$perpage.' 
  ) 

Почему четыре ( 1 чекбокс > 0; список >0
                            2 чекбокс < 0; список <0
                            3 чекбокс > 0; список <0
                            4 чекбокс < 0; список >0)

При первой загрузке страницы нигде ничего не выбрано значит ето 4 условие и по нему доожно выводить все из всех таблиц оно не получилось у меня, а с остальными тоже проблема, если список пустой а в чекбоксе чтото есть ето 3 условие то выводятся таблицы заглавления а под ними ничего не выводится здесь с функцией что строки дописывает проблема. Работает только один вариант если есть чтото в чекбоксе и в списке то по нему все нормально выводится

456

Re: Выпадающий список

павелsimon сказал:

Работает только один вариант если есть чтото в чекбоксе и в списке то по нему все нормально выводится

Работает это условие?
if (count($aUnion) > 0) {

Если работает именно оно, то можно его уточнить, чтобы оно срабатывало только при выборе списков и галочек одновременно.
if (count($aUnion) > 0 && count($aSQL) > 0) {

Проверьте работает так или нет и пропишите ниже остальные условия.

457 (изменено: павелsimon, 2012-05-05 16:15:11)

Re: Выпадающий список

есть проблема с функцией.

function sub_func($r, $aSQL, $aName) {
    
    

    $aSQL[] = ' `md` = "' . $r['md'] . '" ';
$aSQL[] = ' `brand` = "' . $r['brand'] . '" ';
    global $db;
    $aSub = array();
    $aSQL[] = ' `md` = "' . $r['md'] . '" ';
    foreach ($aName as $checkbox) {
      if (isset($_POST[$checkbox])) {
       $aSub[] = ' SELECT * FROM `' . $checkbox . '`  WHERE ' . implode('AND', $aSQL) ;
      }
    }

  if (count($aSub) > 0) {
    $sql = '( ' . implode(' ) UNION ( ', $aSub) . ' )  ';
  } else {
  $sql = '(
    SELECT * FROM `achilles`  WHERE ' . implode('AND', $aSQL) . ' 
  ) 
   UNION (
    SELECT * FROM `aeolus`  WHERE ' . implode('AND', $aSQL) . '
  ) 
   UNION (
    SELECT * FROM `amtel`  WHERE ' . implode('AND', $aSQL) . '
  )
   UNION (
    SELECT * FROM `autoguard`  WHERE ' . implode('AND', $aSQL) . '
  )
   UNION (
    SELECT * FROM `barum`  WHERE ' . implode('AND', $aSQL) . '
  )
   
   
   
   ';
  }
  
  if ($result = mysql_query($sql, $db)) {
    while ($row = mysql_fetch_array($result)) {
      if ($row["ostatok"] > 0) {
        print "<table width='700' class='smaltable'>
  <tr>
    <td width='70' align='center'><font color= '#1A7EDF'>" . $row["shirina"] . "</font></td>
    <td width='80' align='center'><font color= '#1A7EDF'>" . $row["profil"] . "</font></td>
    <td width='80' align='center'><font color= '#1A7EDF'>" . $row["diametr"] . "</font></td>
    <td width='120' align='center'><font color= '#1A7EDF'>" . $row["indnag"] . "</font></td>
    <td width='100' align='center'><font color= '#1A7EDF'>" . $row["indskor"] . "</font></td>
    <td width='70' align='center'><font color= '#1A7EDF'>" . $row["ostatok"] . "</font></td>
    <td width='100' align='center'><font color= '#FF0000'>" . $row["cena"] . "</font></td>
    <td align='center'><font color= '#1A7EDF'>Заказать</font></td>
  </tr>
</table>";
      } else {
        print '';
      }
    }
  }
}

она должна дописывать строки под таблицей заглавления. Вот при етом условии

if (count($aUnion) > 0) { $sql = '( ' . implode(' ) UNION ( ', $aUnion) . ' )  ';

я вывожу таблицы заглавления так подцепляя в конце саму функцию но при етом строки не выводятся

 print "<table width='900' border='1'>
      <tr>
        <td colspan='9'>  Шины " . $row["brand"] . " ...  Модель " . $row["model"] . "</td>
      </tr>
      <tr>
        <td colspan='2'>фото</td>
        <td colspan='7' rowspan='2'>текст</td>
      </tr>
      <tr>
        <td>" . $row["sezon"] . "</td>
        <td>" . $row["tip"] . "</td>
      </tr>
      <tr>
        <td  width='100'>" . $row["shirina"] . "</td>
        <td width='100'>Профиль</td>
        <td width='100'>Диаметр</td>
        <td width='150'>Инд.нагр</td>
        <td width='150'>Инд.скор</td>
        <td width='100'>Остаток</td>
        <td width='100'>Цена за 1</td>
        
        <td>Заказать</td>
      </tr>
      <tr>
      </tr>
    </table>" ;
    sub_func($row, $aSQL, $aName, $aUnion);
    print "<br><br>";
    
    }

приходится выводить старым способом, но он действует только для одной таблицы не учитывая остальные

$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'>Ширина</td>
    <td width='100'>Профиль</td>
    <td width='100'>Диаметр</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["id"]);   


                $result2 = mysql_query("select * from aeolus  WHERE  md='" . $row['md'] . "'  ",$db);

while ($row2 = mysql_fetch_array($result2)) {

    if ($row2["ostatok"] > 0) 

    {
        printf ("<table width=900' border='1'>

          <tr>
             <td>таблица1111</td>     
            <td width='100'>%s</td>
            <td width='100'>%s</td>
            <td width='100'>%s</td>
            <td width='100'>%s</td>
            <td width='150'>%s</td>
            <td width='150'>%s</td>
            <td width='100'>%s</td>
            <td width='100'>%s</td>
             <td width='100'>" . ($row2["ostatok"] * $row2["cena"]) . "</td>
             <td >%s</a></td>   
          </tr>
                     </table>", $row2["shirina"], $row2["profil"], $row2["diametr"], $row2["indnag"], $row2["indskor"], 
                     $row2["ostatok"], $row2["cena"], $row2["id"], $row["md"]);
    } else {
        print '';
    }
}

echo ('<br>');
}

458

Re: Выпадающий список

Да кстати ето работает при условии

else if ( count($aSQL) <= 0) {$sql = '(
  
    SELECT * FROM `aeolus`   GROUP BY model 
  )';

459

Re: Выпадающий список

А если все таблицы слить в одну как вы мне тогда советовали, и зделать для них одно поле с названием например (BR) c цифрами по которым все бренды будут отличятся то тогда может и с кодом легче будет?

460

Re: Выпадающий список

У функций разное количество параметров. Такого быть не может.
sub_func($r, $aSQL, $aName)
sub_func($row, $aSQL, $aName, $aUnion);

павелsimon сказал:

А если все таблицы слить в одну как вы мне тогда советовали, и зделать для них одно поле с названием например (BR) c цифрами по которым все бренды будут отличятся то тогда может и с кодом легче будет?

Да, будет легче, потому что не понадобится объединение таблиц.

461 (изменено: павелsimon, 2012-05-05 19:19:18)

Re: Выпадающий список

Да там в функции с параметрами ето просто опечатка

sub_func($r, $aSQL, $aName)
sub_func($row, $aSQL, $aName, $aUnion);

  когда ставлю всюду одинаковые параметры не коректно работает.

Хорошо тогда я соеденю в базе все таблицы в таблицу (proba) а отличятся они будут по параметру (br) например в одной таблице есть бренд amtel br=1 и  barum br=2

Но при етом мне нужно оставить выбор по чекбоксам


тогда запрос с условием для вывода таблиц заглавлений в нем нужно както изменить а сами масивы помоему остануться такими же

$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('amtel', 'barum');
$aUnion = array();
foreach ($aName as $checkbox) {
  if (isset($_POST[$checkbox])) {
    $aUnion[] = ' SELECT * FROM proba  WHERE  здесь незнаю как обединить и масив из чекбоксов и списков;
  }
}

462

Re: Выпадающий список

Выбор параметров и списков остается точно таким же, а с галочками надо сделать так:

$aName = array('amtel', 'barum');
$aUnion = array();
foreach ($aName as $checkbox) {
  if (isset($_POST[$checkbox])) {
    $aUnion[] = $checkbox;
  }
}

// Теперь в массиве $aUnion будут имена тех производителей, которые были выбраны галочками.
// Проверить можно так:
print_r($aUnion);

Дальше меняем формируемый запрос.

if (count($aUnion) > 0 && count($aSQL) > 0) {
  $sql = 'SELECT * FROM `proba`
    WHERE `br` IN("' . mysql_real_escape_string(implode('","', $aUnion)) . '")
    AND ' . implode('AND', $aSQL);
}

463

Re: Выпадающий список

Да в масив выводятся имена производителей по табл  0 присваивает AMTEL или    BARUM в зависимости от того что выбрано в чекбоксе тоесть первый елемент равен 0  но при етом ничего не выводится ни таблиц заглавления ни подтаблиц  мой код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Untitled Document</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<?php 
$db = mysql_connect("localhost","alex","111");
mysql_select_db("shina",$db);
?>
<table width="100%" border="1" class="main_border">
  <tr>
    <td height="100" colspan="4" align="center"><?php include ("blocks/heder.php");?></td>
  </tr>
  
  <tr>
   
   <td colspan="3" height="40" class="menu" >
   <div class="page">
  <ul>
   <li><a href="maine.php">Главная</a></li>
    <li><a href="index.php">Купить Шины</a></li>
    <li><a href="dostavka.php">Оплата и доставка</a></li>
    <li><a href="actions.php">Акции</a></li>
    <li><a href="contacts.php">Контакты</a></li>
  </ul>
</div></td> 
    <?php include ("blocks/search.php");?>
  </tr>
  <tr>
    <td colspan="2" align="center" height="100" class="blok">Подбор шин по параметрам<?php 

 
 

function sub_func($r, $aSQL, $aName) {
    
    

    $aSQL[] = ' `md` = "' . $r['md'] . '" ';
$aSQL[] = ' `brand` = "' . $r['brand'] . '" ';
    global $db;
    $aSub = array();
    $aSQL[] = ' `md` = "' . $r['md'] . '" ';
    foreach ($aName as $checkbox) {
      if (isset($_POST[$checkbox])) {
       $aSub[] = ' SELECT * FROM `' . $checkbox . '`  WHERE ' . implode('AND', $aSQL) ;
      }
    }

  if (count($aSub) > 0) {
    $sql = '( ' . implode(' ) UNION ( ', $aSub) . ' )  ';
  } else {
  $sql = '(
    SELECT * FROM `amtel`  WHERE ' . implode('AND', $aSQL) . ' 
  ) 
   UNION (
    SELECT * FROM `barum`  WHERE ' . implode('AND', $aSQL) . '
  ) ';
  }
  
  if ($result = mysql_query($sql, $db)) {
    while ($row = mysql_fetch_array($result)) {
      if ($row["ostatok"] > 0) {
        print "<table width='700' class='smaltable'>
  <tr>
    <td width='70' align='center'><font color= '#1A7EDF'>" . $row["shirina"] . "</font></td>
    <td width='80' align='center'><font color= '#1A7EDF'>" . $row["profil"] . "</font></td>
    <td width='80' align='center'><font color= '#1A7EDF'>" . $row["diametr"] . "</font></td>
    <td width='120' align='center'><font color= '#1A7EDF'>" . $row["indnag"] . "</font></td>
    <td width='100' align='center'><font color= '#1A7EDF'>" . $row["indskor"] . "</font></td>
    <td width='70' align='center'><font color= '#1A7EDF'>" . $row["ostatok"] . "</font></td>
    <td width='100' align='center'><font color= '#FF0000'>" . $row["cena"] . "</font></td>
    <td align='center'><font color= '#1A7EDF'>Заказать</font></td>
  </tr>
</table>";
      } else {
        print '';
      }
    }
  }
}

include ("blocks/parametry.php");
 
?> </td>
    <td colspan="2"  height="100" class="blok"></td> 
  </tr>
  <tr>
  
   <td valign="top" align="right" width="150">
    

<?php 

if (isset($_POST['amtel'])) {
  echo '<p>AMTEL <input type="checkbox" checked="checked" name="amtel" value="" onchange="this.form.submit();">';
} else {
  echo '<p>AMTEL <input type="checkbox"  name="amtel" value="" onchange="this.form.submit();">';
}

if (isset($_POST['barum'])|| !isset($_POST['nazv_sezon'])) {
  echo '<p>BARUM <input type="checkbox" checked="checked" name="barum" value="" onchange="this.form.submit();" >';
} else {
  echo '<p>BARUM <input type="checkbox" name="barum" value="" onchange="this.form.submit();">';
}

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('amtel', 'barum');
$aUnion = array();
foreach ($aName as $checkbox) {
  if (isset($_POST[$checkbox])) {
    $aUnion[] = $checkbox;
  }
}




if (count($aUnion) > 0 && count($aSQL) > 0) {
  $sql = 'SELECT * FROM `proba`
    WHERE `br` IN("' . mysql_real_escape_string(implode('","', $aUnion)) . '")
    AND ' . implode('AND', $aSQL);
}
print_r($aUnion);
?>
     


    </td>
    <td colspan="2" width="200" align="center" valign="top"><h1>&nbsp;</h1>
    <?php 
    
    
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) { 
   
   
   print "<table width='700' height='150'  class='table22'>
  <tr>
    <td align='center' valign='bottom'>
    
      <table width='100%' border='0'>
        <tr>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td colspan='6'>" . $row["brand"] . "  " . $row["model"] . "</td>
        </tr>
        <tr>
          <td width='120' height='120' rowspan='4' align='center' valign='middle'>
          
          <table width='120' height='120' class='imgtable'>
            <tr>
              <td><img src='XTREMESUV-120x120.jpg' width='120' height='120'></td>
            </tr>
          </table></td>
          <td>&nbsp;</td>
          <td colspan='6' rowspan='3'>Шины такието очень хорошие</td>
        </tr>
        <tr>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
      </table></td>
  </tr>
</table>
<table width='700' class='promtable'>
  <tr>
    <td width='70' align='center'><font color= '#ffffff'>Ширина</font></td>
    <td width='80' align='center'><font color= '#ffffff'>Профиль</font></td>
    <td width='80' align='center'><font color= '#ffffff'>Диаметр</font></td>
    <td width='120' align='center'><font color= '#ffffff'>Инд-наг.</font></td>
    <td width='100' align='center'><font color= '#ffffff'>Инд-скор.</font></td>
    <td width='70' align='center'><font color= '#ffffff'>Остаток</font></td>
    <td width='100' align='center'><font color= '#ffffff'>Цена (грн.)</font></td>
    <td align='center'><font color= '#ffffff'>Заказать</font></td>
  </tr>
</table>" ;
   sub_func($r, $aSQL, $aName);
    print "<br><br>";}
   ?>
   </td>
    <?php include ("blocks/news.php");?>
  </tr>
  <tr>
    <td colspan="4"><?php include ("blocks/down.php");?></td>
  </tr>
</table>
</body>
</html>

464

Re: Выпадающий список

Надо поправить код. Я сделал ошибку.

$aName = array('amtel', 'barum');
$aUnion = array();
foreach ($aName as $checkbox) {
  if (isset($_POST[$checkbox])) {
    $aUnion[] = mysql_real_escape_string($checkbox);
  }
}

if (count($aUnion) > 0 && count($aSQL) > 0) {
  $sql = 'SELECT * FROM `proba`
    WHERE `br` IN("' . implode('","', $aUnion) . '")
    AND ' . implode('AND', $aSQL);
}

Очевидно, что функцию sub_func надо переписать.

<?php

function sub_func($r, $aSQL, $aName) {
    global $db;

    $aSub = array();
    $aSQL[] = ' `brand` = "' . $r['brand'] . '" ';
    $aSQL[] = ' `md` = "' . $r['md'] . '" ';
    foreach ($aName as $checkbox) {
      if (isset($_POST[$checkbox])) {
       $aSub[] = mysql_real_escape_string($checkbox);
      }
    }

  if (count($aSub) > 0) {
    $sql = 'SELECT * FROM `proba`
      WHERE `br` IN("' . implode('","', $aSub) . '")
      AND ' . implode('AND', $aSQL);
  } else {
    $sql = 'SELECT * FROM `proba`
      WHERE ' . implode('AND', $aSQL);
  }
  
  if ($result = mysql_query($sql, $db)) {
    while ($row = mysql_fetch_array($result)) {
      if ($row["ostatok"] > 0) {
        print "<table width='700' class='smaltable'>
  <tr>
    <td width='70' align='center'><font color= '#1A7EDF'>" . $row["shirina"] . "</font></td>
    <td width='80' align='center'><font color= '#1A7EDF'>" . $row["profil"] . "</font></td>
    <td width='80' align='center'><font color= '#1A7EDF'>" . $row["diametr"] . "</font></td>
    <td width='120' align='center'><font color= '#1A7EDF'>" . $row["indnag"] . "</font></td>
    <td width='100' align='center'><font color= '#1A7EDF'>" . $row["indskor"] . "</font></td>
    <td width='70' align='center'><font color= '#1A7EDF'>" . $row["ostatok"] . "</font></td>
    <td width='100' align='center'><font color= '#FF0000'>" . $row["cena"] . "</font></td>
    <td align='center'><font color= '#1A7EDF'>Заказать</font></td>
  </tr>
</table>";
      } else {
        print '';
      }
    }
  }
}

Вы для разнообразия хоть одну строку кода бы написали самостоятельно. Скоро я перестану отвечать на ваши вопросы.

465

Re: Выпадающий список

В данный момент функция вообще отключена, не выводятся сами таблицы заглавления
функцию поправил

function sub_func($r, $aSQL, $aName) {

    global $db;
    $aSub = array();
    $aSQL[] = ' `br` = "' . $r['br'] . '" ';
    foreach ($aName as $checkbox) {
      if (isset($_POST[$checkbox])) {
       $aSub[] = ' SELECT * FROM proba  WHERE ' . implode('AND', $aSQL) ;
      }
    }

  if (count($aSub) > 0) {
    $sql = '( ' . implode(' ) UNION ( ', $aSub) . ' )  ';
  } else {
  $sql = '(
    SELECT * FROM `amtel`  WHERE ' . implode('AND', $aSQL) . ' 
  ) 
   UNION (
    SELECT * FROM `barum`  WHERE ' . implode('AND', $aSQL) . '
  ) ';
  }
  
  if ($result = mysql_query($sql, $db)) {
    while ($row = mysql_fetch_array($result)) {
      if ($row["ostatok"] > 0) {
        print "<table width='700' class='smaltable'>
  <tr>
    <td width='70' align='center'><font color= '#1A7EDF'>" . $row["shirina"] . "</font></td>
    <td width='80' align='center'><font color= '#1A7EDF'>" . $row["profil"] . "</font></td>
    <td width='80' align='center'><font color= '#1A7EDF'>" . $row["diametr"] . "</font></td>
    <td width='120' align='center'><font color= '#1A7EDF'>" . $row["indnag"] . "</font></td>
    <td width='100' align='center'><font color= '#1A7EDF'>" . $row["indskor"] . "</font></td>
    <td width='70' align='center'><font color= '#1A7EDF'>" . $row["ostatok"] . "</font></td>
    <td width='100' align='center'><font color= '#FF0000'>" . $row["cena"] . "</font></td>
    <td align='center'><font color= '#1A7EDF'>Заказать</font></td>
  </tr>
</table>";
      } else {
        print '';
      }
    }
  }
}

пожалуйста не переставайте отвечать на мои вопросы я сам никак не справлюсь. Пишу что знаю и стараюсь учится на вашем коде.

466

Re: Выпадающий список

Я выше показал как функция sub_func должна выглядеть.

467

Re: Выпадающий список

Да но с функцией или без нее не выводится совсем ничего

468

Re: Выпадающий список

нашел в базе поменял значения полей теперь под brand идут номера 1,2 ,  а под br идут названия amtel barum
но вот под таблицами заглавления не выводятся под таблицы

469

Re: Выпадающий список

Не понимаю что не выводится.

470

Re: Выпадающий список

if (count($aSub) > 0) {
    $sql = 'SELECT * FROM `proba`
      WHERE brand = 1';
  } else {
    $sql = 'SELECT * FROM `proba`
      WHERE ' . implode('AND', $aSQL);
  }

вот так выводятся под таблицы вот ети

if ($result = mysql_query($sql, $db)) {
    while ($row = mysql_fetch_array($result)) {
      if ($row["ostatok"] > 0) {
        print "<table width='700' class='smaltable'>
  <tr>
    <td width='70' align='center'><font color= '#1A7EDF'>" . $row["shirina"] . "</font></td>
    <td width='80' align='center'><font color= '#1A7EDF'>" . $row["profil"] . "</font></td>
    <td width='80' align='center'><font color= '#1A7EDF'>" . $row["diametr"] . "</font></td>
    <td width='120' align='center'><font color= '#1A7EDF'>" . $row["indnag"] . "</font></td>
    <td width='100' align='center'><font color= '#1A7EDF'>" . $row["indskor"] . "</font></td>
    <td width='70' align='center'><font color= '#1A7EDF'>" . $row["ostatok"] . "</font></td>
    <td width='100' align='center'><font color= '#FF0000'>" . $row["cena"] . "</font></td>
    <td align='center'><font color= '#1A7EDF'>Заказать</font></td>
  </tr>
</table>";

которые должны вывестся по условию снячяла выводится таблица заглавия у нее свой параметр brand = 1 br = amtel
под ней должны вывестся все под таблицы у которых одинаковые с ней параметры либо br, либо brand
но по такому условию в функции

 if (count($aSub) > 0) {
    $sql = 'SELECT * FROM `proba`
      WHERE `br` IN("' . implode('","', $aSub) . '")
      AND ' . implode('AND', $aSQL);
  } else {
    $sql = 'SELECT * FROM `proba`
      WHERE ' . implode('AND', $aSQL);
  }

ничего не выводится

471

Re: Выпадающий список

Как выглядит этот запрос?
$sql = 'SELECT * FROM `proba`
      WHERE `br` IN("' . implode('","', $aSub) . '")
      AND ' . implode('AND', $aSQL);

472

Re: Выпадающий список

Он выглядит также как и у вас но етот запрос ничего не выводит из базы. Я поставил brand = 1 просто чтоб убедится что функция вообще чтото выводит.

473

Re: Выпадающий список

Я имею в виду как он формируется. Какой запрос выполняется в БД.

474

Re: Выпадающий список

незнаю правильно ли я понял проверил запрос в phpmyadmin  вот что выдало

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$sql = 'SELECT * FROM `proba`
      WHERE `br` IN("' . implode('","', $aSub) . ' at line 1

475

Re: Выпадающий список

Наверное я всетаки не так понял, но с етим запросом с подключенной функцией ничего не выводится совсем