226

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

Здравствуйте подскажите еще такой момент вот полный код выпадающих списков

<?php
echo '<form method="post" action="">';
$auto = "<select * name='nazv_auto' size='1' onchange=\"this.form.submit();\">;
        <option value='vse'>Ширина</option>";
          $query = mysql_query("SELECT * FROM auto ORDER BY id_auto");
              $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."";
 if (!empty($_POST['nazv_auto']) ); {

     
     $model = "-<select * name='nazv_model' size='1' onchange=\"this.form.submit();\">;
                <option value='vse'>Профиль</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.""."";
}
 if (!empty($_POST['nazv_auto']) && !empty($_POST['nazv_model'])); {

 $year = "-<select nazv_year name='nazv_year' size='1'  onchange=\"this.form.submit();\">;
                <option value='vse'>Диаметр</option>";
                $query = mysql_query("SELECT  nazv_year FROM year
WHERE id_model='" . addslashes($_POST['nazv_model']) . "' and id_year='" . addslashes($_POST['nazv_auto']) . "'     ORDER BY id_year");
                $result = mysql_fetch_array($query);
                 do
                {
                    $year .= "<option value='".$result['nazv_year']."'";
                    if (!empty($_POST['nazv_year']) && $_POST['nazv_year'] == $result['nazv_year']) {
                        $year .= ' selected="selected"';
                    }
                    $year .= ">".$result['nazv_year']."</option>";
                }
                while($result = mysql_fetch_array($query));
$year .= "</select>";
echo $year.""."";

echo '<p> Зима <input type="checkbox" name="sezon" value="Зимние" >';
echo '<p> Лето <input type="checkbox" name="sezon" value="Летние" >';
echo '<p> Всесезон <input type="checkbox" name="sezon" value="Всесезонные" >';

}
 if (!empty($_POST['nazv_auto']) && !empty($_POST['nazv_model']) && !empty($_POST['nazv_year'])); {
}                       


$result = mysql_query("select id, model, sezon from bf_goodrich ",$db);
$row = mysql_fetch_array($result);
     
do {

printf("<table width='900' border='1'>
  <tr>
    <td colspan='9'>  Модель %s</td>
  </tr>
  <tr>
    <td colspan='2'>фото</td>
    <td colspan='7' rowspan='2'>текст</td>
  </tr>
  <tr>
    <td>%s</td>
    <td>%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>Заказать</td>
  </tr>
</table>",$row["model"],$row["sezon"], $row["id"]);


                 $result2 = mysql_query("select * from bf_goodrich where md='" . $row['id'] . "' && shirina=175  ",$db);
                 $row2 = mysql_fetch_array($result2);
                      do {
                        printf ("<table width=900' border='1'>
  
                          <tr>
                                   
                            <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 >%s</a></td>
                          </tr>
                                     </table>", $row2["shirina"], $row2["profil"], $row2["diametr"], $row2["indnag"],                                       $row2["indskor"], 
                                     $row2["ostatok"], $row2["cena"], $row2["md"]);
                                      

}
             while ($row2 = mysql_fetch_array($result2));
             echo ('<br><br>');
}

              while ($row = mysql_fetch_array($result));

в нем у меня конфликт получяется а именно в строке,

$result2 = mysql_query("select * from bf_goodrich where md='" . $row['id'] . "' && shirina=175  ",$db);

  где вместо shirina=175   я ставлю,

 shirina= '" . addslashes($_POST['nazv_auto']) . "' &&  profil= '" . addslashes($_POST['nazv_model']) . "'  &&  diametr= '" . addslashes($_POST['nazv_year']) . "'

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

$result2 = mysql_query("select * from bf_goodrich where md='" . $row['id'] . "' && shirina=175  ",$db);

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

227

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

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

228

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

Я не пойму как это проверять в  phpMyAdmin я пишу код потом в браузере смотрю что отображается, можно както еще?

229

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

У вас есть запрос:

select * from bf_goodrich where md='1' && shirina=175

Проверьте в phpMyAdmin он вообще возвращает данные или нет. Если возвращает, то используйте его в скрипте не добавляя переменных. Если в скрипте все заработает, то добавляйте переменные.

230

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

Добрый вечер, подскажите какой атрибут прописать в выпадающем списке

echo '<form method="post" action="">';
$auto = "<select * name='nazv_auto' size='1' onchange=\"this.form.submit();\">;
        <option value='195'>Ширина</option>";
          $query = mysql_query("SELECT * FROM auto ORDER BY id_auto");
              $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."";

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

231 (изменено: павелsimon, 2012-04-13 07:15:41)

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

Доброе утро еще вопрос как оставить радиокнопку нажатой при перезагрузке

у меня 4 кнопки информация меняется  в зависимости от выбора в выпадающем списке мне нужно чтоб кнопка которую я нажал оставалась нажатой при изминении информации в списках,  а также какой параметр нужно прописать тоесть я понял как прописывать условия через if, я только незнаю как описать если в выпадающем списке ничего не выбрано?

232

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

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

какой атрибут прописать в выпадающем списке

Используйте параметр selected.
<option selected="selected"></option>

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

как оставить радиокнопку нажатой при перезагрузке

Параметр checked="checked".

233 (изменено: павелsimon, 2012-04-14 03:12:58)

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

Добрый вечер прописал

echo '<p> Все <input type="radio" name="sezon" value="все"  checked="checked">';
echo '<p> Летние <input type="radio" name="sezon" value="Летние"  checked="checked">';
echo '<p> Зимние <input type="radio" name="sezon" value="Зимние"   checked="checked">';
echo '<p> Всесезонные <input type="radio" name="sezon" value="Всесезонные"  checked="checked">';

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


да и

<option selected="selected"></option>

в моем коде

echo '<form method="post" action="">';
$auto = "<select * name='nazv_auto' size='1' onchange=\"this.form.submit();\">;
        <option value='Все'  selected='selected'>195</option>";
          $query = mysql_query("SELECT * FROM auto ORDER BY id_auto  DESC");
              $result = mysql_fetch_array($query);

  не действует

234 (изменено: павелsimon, 2012-04-14 03:38:01)

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

мой код без изминений

<?php
echo '<form method="post" action="">';
$auto = "<select * name='nazv_auto' size='1' 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."";

пробывал дописать selected="selected"  но не действует

235

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

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

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

Потому что она последняя в списке кнопок. Радиокнопка может быть выбрана только одна из группы, на то она и сделана. Ставить checked="checked" для кнопок одной группы (имеющих одинаковый параметр name) - не имеет смысла.

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

пробывал дописать selected="selected"  но не действует

У вас там уже прописано условие для selected="selected".
if (!empty($_POST['nazv_auto']) && $_POST['nazv_auto'] == $result['nazv_auto']) {
  $auto .= 'selected="selected" ';
}
Только один тег <option> может иметь параметр selected.

Поправьте ошибку:
$auto = "<select * name='nazv_auto' size='1' onchange=\"this.form.submit();\">;

236

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

Да там прописано

if (!empty($_POST['nazv_auto']) && $_POST['nazv_auto'] == $result['nazv_auto']) {
  $auto .= 'selected="selected" ';
}

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

237

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

$query = mysql_query("SELECT * FROM auto ORDER BY id_auto  DESC"); // После этой строки добавляем объявление переменной $bFirst.
$bFirst = true;
...

// Далее.
if (!empty($_POST['nazv_auto']) && $_POST['nazv_auto'] == $result['nazv_auto']) {
  $auto .= 'selected="selected" ';
} else if (!isset($_POST['nazv_auto']) && $bFirst) { // И это условие
  $auto .= 'selected="selected" ';
  $bFirst = false;
}

238 (изменено: павелsimon, 2012-04-16 22:49:14)

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

Доброй ночи, не вышло. У нас с вами такое взаимодействие как у слепого с глухим, (не в обиду сказано), просто все какбы методом тыка получяется.    Может я изначально неверно формирую сам вывод таблиц. Впринцыпе зависимые списки функционируют нормально.  Но вот вывести информацию не получяется коректно.   Подскажите вот в базе у меня есть таблица, (я бы выложил картинку но не нашел как ее здесь вставлять) 
id  model       shirina  md
1   Activan     20         1
2   Acnivan    30         1
3   G-FORGE  30         2
4   G-FORGE  40         2

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

$result = mysql_query ("SELECT  *
FROM bf_goodrich GROUP BY `md`",$db);
$row = mysql_fetch_array($result);

 
 while ($row = mysql_fetch_array($result))
 {


printf("<table width='900' border='1'>
  <tr>
    <td colspan='9'>  Шины ...  Модель %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["model"], $row["sezon"], $row["md"] , $row["id"]);   


                $result2 = mysql_query("select * from bf_goodrich  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>');
}

можно это както оптимальнее писать или нет?

239

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

$result = mysql_query ("SELECT  *
FROM bf_goodrich GROUP BY `md`",$db);
$row = mysql_fetch_array($result); // Эта строка не нужна, потому что ниже идет цикл while.
while ($row = mysql_fetch_array($result)) {

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

можно это както оптимальнее писать или нет?

Можно сделать для второго запроса отдельную функцию.

240

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

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

241

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

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

242

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

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

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

Это упростит чтение кода, потому что не надо будет заводить переменные $result2 и т. д.

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

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

Не могу понять проблему.

243

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

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

244

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

Понимаю. Тогда давайте постепенно разбираться.

Вам надо найти и записать это число 195 в переменную.

if (!empty($_POST['nazv_auto']) && $_POST['nazv_auto'] == $result['nazv_auto']) {
  // Здесь условие, когда выбрано значение в списке.
  $auto .= 'selected="selected" ';
} else if (!isset($_POST['nazv_auto']) && $bFirst) {
  // Здесь мы попадаем в условие, когда ничего не выбрано и нам надо самим имитировать этот выбор.
  $auto .= 'selected="selected" ';
  // В переменной $row['md'] (не уверен, что в ней) мы получим значение по которому сможем сформировать следующий запрос.
  $bFirst = false;
}

245 (изменено: павелsimon, 2012-04-18 05:33:10)

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

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

Все    Все    Все
Все    Все    цыфра
Все    цыфра    цыфра
цыфра    цыфра    цыфра
цыфра    Все    Все
цыфра    цыфра    Все
цыфра    Все    цыфра
Все    цыфра    Все

на для каждой условие составить даже не условие а правильно их записать, как?


я написал так,

$result = mysql_query ("SELECT   *
FROM bf_goodrich ",$db);
if (!empty($_POST['nazv_auto']) && !empty($_POST['nazv_model']) && !empty($_POST['nazv_year'])  && !empty($_POST['sezon']))  {
$result = mysql_query ("SELECT   *
FROM bf_goodrich   WHERE shirina= '" . addslashes($_POST['nazv_auto']) . "' && profil= '" . addslashes($_POST['nazv_model']) . "'  
&& diametr= '" . addslashes($_POST['nazv_year']) . "' && sezon= '" . addslashes($_POST['sezon']) . "'  ",$db);
}

else if (!empty($_POST['nazv_auto']) && !empty($_POST['nazv_model']) && !empty($_POST['sezon']) ) {
$result = mysql_query ("SELECT   *
FROM bf_goodrich   WHERE shirina= '" . addslashes($_POST['nazv_auto']) . "' && profil= '" . addslashes($_POST['nazv_model']) . "'
&&  sezon = '" . addslashes($_POST['sezon']) . "' && sezon= '" . addslashes($_POST['sezon']) . "' ",$db);

}

else if (!empty($_POST['nazv_auto']) && !empty($_POST['sezon']) ) {
$result = mysql_query ("SELECT   *
FROM bf_goodrich   WHERE shirina= '" . addslashes($_POST['nazv_auto']) . "' && sezon= '" . addslashes($_POST['sezon']) . "'   ",$db);
}

246

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

Нужна ваша помощь по созданию функции, где вы писали что это избавит от написания второго запроса, я написал чтото на подобии для ввода и вывода с параметром (Все)

$result = mysql_query ("SELECT   *
FROM bf_goodrich ",$db);
if (!empty($_POST['nazv_auto']) && !empty($_POST['nazv_model']) && !empty($_POST['nazv_year']) )  {
$result = mysql_query ("SELECT   *
FROM bf_goodrich   WHERE shirina= '" . addslashes($_POST['nazv_auto']) . "' && profil= '" . addslashes($_POST['nazv_model']) . "'  
&& diametr= '" . addslashes($_POST['nazv_year']) . "' ",$db);
} 
else if (!empty($_POST['nazv_auto']) && !empty($_POST['nazv_model'] )) {
$result = mysql_query ("SELECT   *
FROM bf_goodrich   WHERE shirina= '" . addslashes($_POST['nazv_auto']) . "' && profil= '" . addslashes($_POST['nazv_model']) . "' ",$db);

}
else if (!empty($_POST['nazv_auto']) ) {
$result = mysql_query ("SELECT   *
FROM bf_goodrich   WHERE shirina= '" . addslashes($_POST['nazv_auto']) . "'  ",$db);

}

вывожу 

 while ($row = mysql_fetch_array($result))
 {


printf("<table width='900' border='1'>
  <tr>
    <td colspan='9'>  Шины ...  Модель %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["model"], $row["sezon"], $row["md"] , $row["shirina"], $row["profil"], $row["diametr"], $row["id"]);   

а вот это нужно както в функцию переписать

 $result2 = mysql_query("select * from bf_goodrich  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 '';
    }
}

247

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

Все    Все    Все
Все    Все    цыфра
Все    цыфра    цыфра
цыфра    цыфра    цыфра
цыфра    Все    Все
цыфра    цыфра    Все
цыфра    Все    цыфра
Все    цыфра    Все

Теперь представим, что первый список имеет name="nazv_auto", второй name="nazv_model" и третий name="sezon".

// Сперва создаем ассоциативный массив имен списков в паре с именами полей базы данных к которым они относятся, чтобы их можно было перебрать в цикле.
$aName = array('nazv_auto' => 'shirina', 'nazv_model' => 'profil', '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 `bf_goodrich` WHERE ' . implode('AND', $aSQL);
} else { // Если в массиве ничего нет, значит ни один список из массива $aName не выбран и формируем запрос выбирающий все данные, например.
  $sql = 'SELECT * FROM `bf_goodrich`';
}
// Дальше, как обычно делаем запрос к БД.
$result = mysql_query($sql);

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

248

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

По функции делаем так. Создаем в самом верху скрипта функцию sub_func($r) с параметром $r.

function sub_func($r) {
  global $db; // Эта строка необходима.
  $sql = 'SELECT * FROM `bf_goodrich` WHERE `md` = "' . $r['md'] . '"';
  if ($result = mysql_query($sql, $db)) {
    while ($row = mysql_fetch_array($result)) {
      if ($row["ostatok"] > 0) {
        // Обратите внимание на то, что используется print, а не printf. Советую не использовать printf без надобности,
        // а использовать конкатенацию, то есть объединение строки и переменной через точку.
        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'>" . $row["id"] . "</td>
             <td width='100'>" . ($row["ostatok"] * $row["cena"]) . "</td>
             <td >" . $r["md"] . "</a></td>   
          </tr>
        </table>";
      } else {
        print '';
      }
    }
  }
}

После функции printf() добавляем вызов собственной функции с именем sub_func($row) и параметром $row.

printf("<table width='900' border='1'>
...Здесь сокращено...
</table>",$row["model"], $row["sezon"], $row["md"] , $row["shirina"], $row["profil"], $row["diametr"], $row["id"]);
sub_func($row);

249 (изменено: павелsimon, 2012-04-18 14:30:39)

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

Добрый день. По функции работает немного не коректно тоесть по строке  <td >" . $r["md"] . "</a></td>    действительно выводит из базы все .  Если по спискам мы вывели какуюто строку с параметром ["md"] равным 2 то под таблицей нужно вывести все строки у которых есть параметр 2 но при этом совпадают все параметры со списками. Если мы выбрали в списках 195   20     45      то выпадают только те строки у которых   параметры равны этим и параметр md одинаков.   А сейчяс происходит следующее выпадает правильно но не сортируэтся по параметрам из списков только по параметру md , для того я и писал тогда двойной запрос , это можно в функции поправить?


Я так понимаю эту строку нужно поправить $sql = 'SELECT * FROM `bf_goodrich` WHERE `md` = "' . $r['md'] . '"'  ;


сейчяс мой код выглядит так

<?php

function sub_func($r) {
  global $db; // Эта строка необходима.
  $sql = 'SELECT * FROM `bf_goodrich` WHERE `md` = "' . $r['md'] . '"'  ;
  if ($result = mysql_query($sql, $db)) {
    while ($row = mysql_fetch_array($result)) {
      if ($row["ostatok"] > 0) {
        // Обратите внимание на то, что используется print, а не printf. Советую не использовать printf без надобности,
        // а использовать конкатенацию, то есть объединение строки и переменной через точку.
        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'>" . $row["id"] . "</td>
             <td width='100'>" . ($row["ostatok"] * $row["cena"]) . "</td>
             <td >" . $r["md"] . "</a></td>   
          </tr>
        </table>";
      } else {
        print '';
      }
    }
  }
}

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'onchange=\"this.form.submit();\" >;
                <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.""."";
}
{

 $year = "Диаметр <select nazv_year name='nazv_year' size='1' onchange=\"this.form.submit();\" >;
                <option value=''>Все</option>";
                $query = mysql_query("SELECT  nazv_year FROM year
WHERE id_model='" . addslashes($_POST['nazv_model']) . "' and id_year='" . addslashes($_POST['nazv_auto']) . "'  ORDER BY id_year ");
                $result = mysql_fetch_array($query);
                 do
                {
                    $year .= "<option value='".$result['nazv_year']."'";
                    if (!empty($_POST['nazv_year']) && $_POST['nazv_year'] == $result['nazv_year']) {
                        $year .= ' selected="selected"';
                    }
                    $year .= ">".$result['nazv_year']."</option>";
                }
                while($result = mysql_fetch_array($query));
$year .= "</select>";
echo $year.""."";




 $sezon = "Сезонность <select  name='nazv_sezon' size='1'  onchange=\"this.form.submit();\" >;
                
                <option value=''>Все</option>";
                $query = mysql_query("SELECT  nazv_sezon FROM sezon ");
                $result = mysql_fetch_array($query);
                 do
                {
                    $sezon .= "<option value='".$result['nazv_sezon']."'";
                    if (!empty($_POST['nazv_sezon']) && $_POST['nazv_sezon'] == $result['nazv_sezon']) {
                        $sezon .= ' selected="selected"';
                    }
                    $sezon .= ">".$result['nazv_sezon']."</option>";
                }
                while($result = mysql_fetch_array($query));
$sezon .= "</select>";
echo $sezon.""."";

}
 {
}                       

 /* 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]) . '" ';
}
// Если в массиве $aSQL есть хоть один элемент, то формируем запрос.
if (count($aSQL) > 0) {
  $sql = 'SELECT * FROM `bf_goodrich` WHERE ' . implode('AND', $aSQL);
} else { // Если в массиве ничего нет, значит ни один список из массива $aName не выбран и формируем запрос выбирающий все данные, например.
  $sql = 'SELECT * FROM `bf_goodrich`';
}
$result = mysql_query($sql);
 while ($row = mysql_fetch_array($result))
 {


printf("<table width='900' border='1'>
  <tr>
    <td colspan='9'>  Шины ...  Модель %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["model"], $row["sezon"], $row["md"] , $row["shirina"], $row["profil"], $row["diametr"], $row["id"]);
sub_func($row);  
echo ('<br>');
}

  

 ?>

250

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

Передайте функции sub_func($row, $aSQL) еще один параметр $aSQL, который у вас должен быть заполнен выше в коде. И поправьте саму функцию таким образом:

function sub_func($r, $aSQL) {
  global $db; // Эта строка необходима.
  $aSQL[] = ' `md` = "' . $r['md'] . '" '; // Добавляем условие выборки.
  $sql = 'SELECT * FROM `bf_goodrich` WHERE ' . implode('AND', $aSQL); // Формируем запрос к БД.
  if ($result = mysql_query($sql, $db)) {
    while ($row = mysql_fetch_array($result)) {
      if ($row["ostatok"] > 0) {
        // Обратите внимание на то, что используется print, а не printf. Советую не использовать printf без надобности,
        // а использовать конкатенацию, то есть объединение строки и переменной через точку.
        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'>" . $row["id"] . "</td>
             <td width='100'>" . ($row["ostatok"] * $row["cena"]) . "</td>
             <td >" . $r["md"] . "</a></td>   
          </tr>
        </table>";
      } else {
        print '';
      }
    }
  }
}