501

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

Ошибка.
if (isset($_POST [$row'brand']))  {

502

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

Спасибо исправил

if (isset($_POST[$row['brand']]))

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

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

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

503

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

Где формируется запрос, если не нажаты галочки?

504

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

если ничего не нажато то выбираются все строки из всей базы

else { $sql = '
  
    SELECT DISTINCT brand, model FROM `baza` ORDER BY `brand` ';  
}

505

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

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

если ничего не нажато то выбираются все строки из всей базы

Сформируйте там запрос на выборку данных, как-будто нажата галочка. Условие прописывается в WHERE `field` = "что-то".

506

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

Не получяется

else { $sql = '
  
    SELECT DISTINCT brand, model FROM `baza` WHERE `field` = "ACHILLES" ORDER BY `brand` ';  
}

галочка стоит в чекбоксе ACHILLES но віводится ошибка 

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

507

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

field - это имя поля по которому надо найти ACHILLES. Запросы проверяйте в phpMyAdmin.

508

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

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

 $sql = '
  
    SELECT  *  FROM `baza` WHERE `brand` = "ACHILLES" GROUP BY model  ORDER BY cena DESC   ';

509

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

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

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

Без примера не могу понять.

510

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

Предположим мы имеем таблицу с 9 строками первое поле имеет записи в столбик (model1,model1,model1,model2,model2,model2,model3,model3,model3) но у каждой разная цена
если составить запрос

$sql = '
  
    SELECT  *  FROM `baza` WHERE `brand` = "ACHILLES"  GROUP BY model ORDER BY cena DESC   ';

то в результате выведутся строки (каждая первая из своей модели и в порядке убывания но сортировка по убыванию произошла между етими 3 строками). И получяется что остальные строки не учитываются, а у меня например 1 строка model1 = 900, model1= 1200 но вторая строка не учлась. Если убрать  GROUP BY model то выведутся дубликаты, они не нужны так как из строк нужно сформировать таблицы заглавления которые не должны повторятся

511

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

Надо делать подзапрос. Запрос находящийся внутри сортирует все строки по полю cena и уже затем происходит группировка записей по полю model.

$sql = 'SELECT  *  FROM (
  SELECT  *  FROM `baza` WHERE `brand` = "ACHILLES" ORDER BY `cena` DESC
) AS `t`GROUP BY `model`';

512

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

Немного не так выводится. Вот точное расположение полей в базе
model                     cena
Desert Hawk H/T     509
Desert Hawk H/T     1200
PLATINUM                     330
PLATINUM              580
WINTER 101              600
WINTER 101              20
WINTER 101              500
WINTER 101              580
WINTER 101              1400
WINTER 101              566
WINTER 101              500
WINTER 101              500
WINTER 101              500
при данном запросе

$sql = 'SELECT  *  FROM (
  SELECT  *  FROM `baza` WHERE `brand` = "ACHILLES" ORDER BY `cena` DESC
) AS `t`GROUP BY `model`';

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

Desert Hawk H/T   цена 1200
PLATINUM              цена 580
WINTER 101          цена 1400

а надо чтоб выводилось по убыванию
WINTER 101          цена 1400
Desert Hawk H/T   цена 1200
PLATINUM              цена 580

513

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

Так должно работать.

$sql = 'SELECT  *  FROM (
  SELECT  *  FROM `baza` WHERE `brand` = "ACHILLES" ORDER BY `cena` DESC
) AS `t` GROUP BY `model` ORDER BY `cena` DESC';

514

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

Да работает, обясните пожалуйста что за параметр `t`вместо него ставлю `model` или `brand`работает также  и почему всюду ети скобки `` без них тоже работает

515

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

До тех пор, пока вы не запомнили наизусть все зарезервированные слова, необходимо имена таблиц и полей в запросах заключать в косые кавычки, например: `table_name`. Для правильного синтаксиса запросов, косые кавычки обязательны.

Мы делаем запрос внутри запроса и чтобы он работал необходимо запросу находящемуся внутри присвоить имя, как будто это таблица, чтобы запрос находящийся вовне, мог к нему обратиться, как к обычной таблице. Имя присваивается с помощью конструкции AS и называется алиасом. Какое имя дать алиасу - это значения не имеет. Документация по подзапросам.

516

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

Спасибо за разяснение!

517 (изменено: павелsimon, 2012-05-11 09:02:01)

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

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

 <?php
 
 function sub_func($row, $aSQL, $aName) {
    global $db;

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

  // Здесь запросі с условиями
  
 if ($result = mysql_query($sql, $db)) {
    while ($row = mysql_fetch_array($result)) {
      if ($row["ostatok"] > 0) {
       
         print "<table width='750' 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= '#098a12'><b>" . $row["cena"] . "</b></font></td>
    <td align='center'><a href='view_form.php?id=" . $row["id"] . "'>заказать</a></td>
  </tr>
</table>";
      } else {
        print "";
      }
    }
  }
} 
// Здесь запросы с условиями 
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {     
    print "
<table width='750' border='1'>
  <tr>
    <td>" . $row["model"] . "</td>
  </tr>
</table>"
 sub_func($row, $aSQL, $aName, $aUnion);
    print "<br><br>";
    }
    ?> 

В условии функции

sub_func($row, $aSQL, $aName)

есть условие если переменная

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

то всю таблицу не выводить. Но при етом получяется что если модель всего одна и ее остаток равен 0 она не выводится, но выводится таблица заглавления и под ней ничего.  Как будет выглядеть условие в которое нужно поместить масив из всех подстрок в которых нужно проверить остаток если во всех строках масива он равен 0 то не выводить ни под строки ни таблицу заглавления, а если есть хоть одна строка в которой переменная остаток не равна 0 то вывести таблицу заглавления и ету подтаблицу?

518

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

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

выводится таблица заглавления и под ней ничего

Какой запрос выводит заголовки таблицы?

519

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

Заголовки таблицы

else {$sql = 'SELECT  *  FROM (
  SELECT  *  FROM `baza` WHERE `brand` = "ACHILLES" ORDER BY `cena` DESC
) AS `t` GROUP BY `model` ORDER BY `cena` DESC';

520

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

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

$sql = 'SELECT  *  FROM (
  SELECT  *  FROM `baza` WHERE `brand` = "ACHILLES"
  AND `ostatok` > 0
  ORDER BY `cena` DESC
) AS `t` GROUP BY `model` ORDER BY `cena` DESC';

521

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

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

У меня еще такой вопрос. Вот запрос с выводом в нем пишу еще запрос с выборкой из другой таблицы где приравниваю переменные с таблицей baza

else {$sql = 'SELECT  *  FROM (
  SELECT  *  FROM `baza` WHERE `brand` = "ACHILLES"
  AND `ostatok` > 0
  ORDER BY `cena` DESC
) AS `t` GROUP BY `model` ORDER BY `cena` DESC';
}

$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) { 
     
 $result2 = mysql_query("select * from sezon where nazv_sezon='" . $row["sezon"] . "'    ",$db);
      $row2 = mysql_fetch_array($result2);
          
                $result3 = mysql_query("select * from sezon where nazv_tip='" . $row["tip"] . "'   ",$db);
                $row3 = mysql_fetch_array($result3); 

 print "<table width='750' height='150'  class='table22'>
  <tr>
    <td align='center' valign='bottom'>" . $row2["sezonimg"] . "</td>
<td align='center' valign='bottom'>" . $row3["tipimg"] . "</td>
 </tr>
</table>" ;

Выводятся картинки из таблицы sezon названия которых совпадают с названием модели в таблице baza
если пишу запрос вот так то ничего не выводится

$result2 = mysql_query("select * from sezon where nazv_sezon='" . $row["sezon"] . "' AND nazv_tip='" . $row["tip"] . "'    ",$db);
    $row2 = mysql_fetch_array($result2);

522

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

Смотрите как выглядит запрос к БД, который формируется с значениями переменных и проверьте этот запрос в phpMyAdmin.

523

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

Здраствуйте, возникла проблема с формой. А именно в коде

<form action="zakaz.php" method="post" name="form2"><input name="name" type="text" size="30" maxlength="30">
<?php  echo '<form method="POST" action="">';
$auto = "<select  name='nazv_auto' size='1'  selected='selected' onchange=\"this.form.submit();\" >;
        <option value=''  >Все</option>";
          $query = mysql_query("SELECT * FROM auto ORDER BY id_auto  DESC");
        
              $result = mysql_fetch_array($query);
                do
                {
                    $auto .= "<option  value='".$result['nazv_auto']."'   "; /* то что передается  */
                    if (!empty($_POST['nazv_auto']) && $_POST['nazv_auto'] == $result['nazv_auto']) {
                     $auto .= ' selected="selected"';   
                    }
                    $auto .= ">".$result['nazv_auto']."</option>";  /* то что отобразится в списке  */
                }
               while($result = mysql_fetch_array($query));
$auto.= "</select>";
echo $auto."";
 {  $model = "<select  name='nazv_model' size='1' >;
                <option value=''>Все</option>";
      $query = mysql_query("SELECT * FROM automodel
WHERE id_auto = '" . addslashes($_POST['nazv_auto']) . "' ORDER BY id_model "); /* здесь нужно принять номер названия тоесть id_auto  */
                $result = mysql_fetch_array($query);
                 do
                {
                    $model .= "<option value='".$result['nazv_model']."'";
                    if (!empty($_POST['nazv_model']) && $_POST['nazv_model'] == $result['nazv_model']) {
                        $model .= ' selected="selected"';
                    }
                    $model .= ">".$result['nazv_model']."</option>";
                }
                while($result = mysql_fetch_array($query));
$model .= "</select>";
echo $model.""."";
}?>
<input name="submit2" type="submit" value="оформить заказ"></form> 

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

onchange=\"this.form.submit();\"

Выходит что при выборе параметра в списке он нажимает кнопку отправить. А они должны работать независимо. Что здесь можно зделать?

524

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

Я вижу тег <form> внутри  другого тега <form>, что делать нельзя. Если есть возможность, то разделите формы, чтобы избежать их вложения.

525

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

Здравствуйте. У меня не получяется правильно вставить функцию во внутрь таблицы.   

 print "<table width='750' height='150'  class='table22'>
  <tr>
    
    <td>'".sub_func($row, $aSQL, $aName, $aUnion)."'</td>
  </tr>
</table>" ;
    
    print "<br><br>";
    } 

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