651

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

Получилось спасибо!

652

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

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

$result3 = mysql_query("select  id, razmer from baza where  razmer ='".$row["zavod"]."' 
         OR `razmer` = '" . $row["zavod1"] . "' 
         OR `razmer` = '" . $row["zavod2"] . "'
         OR `razmer` = '" . $row["zavod3"] . "'
         OR `razmer` = '" . $row["zavod4"] . "' group by razmer    ",$db);
                  if (mysql_num_rows($result3) > 0) {
                               
                 while ($row3 = mysql_fetch_array($result3)) {
                     
                  print "<table width='600'><tr><td align='left'>
                  <a  href='view_auto.php?id=" . $row3["id"] . "'><font color='#1E90FF'><b>" . $row3["razmer"] . "</font></a></td></tr></table>
                   ";
                  }}
                 else { print "нету";}

653

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

все разобрался извиняюсь не так посмотрел на код

654 (изменено: павелsimon, 2012-06-22 15:46:45)

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

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

 if ($row3["razmer"]==$row["zavod"] and $row3["razmer"]==$row["zamena1"] and...) {
                                
                 
                 while ($row3 = mysql_fetch_array($result3)) {
                     
                  print "<a  href='view_auto.php?id=" . $row3["id"] . "'><font color='#1E90FF'><b>" . $row3["razmer"] . "</font></a>

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

655

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

Замените "and" на два амперсанда "&&".

656

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

выводит сообщение "нету" по условию

$result3 = mysql_query("select  id, razmer from baza where  razmer ='".$row["zavod"]."' 
          group by razmer    ",$db);
                  if ($row3["razmer"]==$row["zavod"] && $row3["razmer"]==$row["zavod1"]) {
                 print"Заводская комплектация-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";               
                 
                 while ($row3 = mysql_fetch_array($result3)) {
                     
                  print "<a  href='view_auto.php?id=" . $row3["id"] . "'><font color='#1E90FF'><b>" . $row3["razmer"] . "</font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
                   
                  }}
                 else { print "нету";}

657

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

У вас сперва условие if ($row3... идет и только потом выбирает данные $row3 = mysql_fetch_array($result3).

658

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

$result3 = mysql_query("select * from baza where razmer='".$row["zavod"]."'",$db);

             while ($row3 = mysql_fetch_array($result3));
                
                
                
                if($row3["razmer"]== $row["zavod"] && $row3["razmer"]== $row["zavod1"]  ) {
                    
                
                  print" ".$row3["razmer"]."  ";
                
                }
                else { print "нету";
                }

выводит "нету", а если заменить "==" на "=" то тогда выводится только переменная "$row3["razmer"]== $row["zavod1"]"

659

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

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

660

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

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

     echo '<form method="POST" action="">';
$auto = "<p align='right'><b>Ширина-</b> <select  name='nazv_auto' size='1'  selected='selected' onchange=\"this.form.submit();\" >;
        <option value=''  >Все</option></p>";
          $query = mysql_query("SELECT * FROM shirina 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 = "<p align='right'><b>Профиль-</b> <select  name='nazv_model' size='1'onchange=\"this.form.submit();\" >;
                <option value=''>Все</option></p>";
      $query = mysql_query("SELECT * FROM profil
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 = "<p align='right'><b>Диаметр-</b> <select nazv_year name='nazv_year' size='1' onchange=\"this.form.submit();\" >;
                <option value=''>Все</option></p>";
                $query = mysql_query("SELECT  nazv_year FROM diametr
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 = "<p align='right'><b>Сезон-</b> <select  name='nazv_sezon' size='1'  onchange=\"this.form.submit();\" >;
                
               <option value=''>Все</option></p>";
                $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.""."";

}
 {
}  

;?>

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

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


$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 (SELECT * FROM `baza`
    WHERE `brand` IN("' . implode('","', $aUnion) . '") 
     AND ' . implode('AND', $aSQL) . ' AND `ostatok` > 0  ORDER BY `cena` DESC)AS `t` GROUP BY `model` ORDER BY `cena` DESC';
}

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

 if (!empty($_POST[$select])) $aSQL[] = ' `' . $field . '` = "' . mysql_real_escape_string($_POST[$select]) . '" ';
}

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

661

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

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

нажаты ли поля и добавить сюда проверку нажата ли кнопка

Кнопка может иметь вид.

<input type="button" value="Кнопка" onclick="javascript:button_onclick();" />

Добавляем скрытое поле.

<input type="hidden" value="no" id="hidden_button" name="hidden_button" />

Обрабатываем нажатие кнопки.

<script>
function button_onclick() {
  document.getElementById('hidden_button').value = 'yes';
  document.getElementById('form').submit(); // Здесь идентификатор формы.
}
</script>

В PHP коде проверяем скрытое поле.

if (isset($_POST['hidden_button']) && $_POST['hidden_button'] == 'yes') {
  // Кнопка нажата.
}

662

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

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

663

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

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

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

Форма отправляет значения списков, если они находятся в форме. Думаю надо в скрипте обработки уже смотреть принимать эти поля или нет.

664

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

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

<script>
function dynamicSelect(id1, id2) {
// Сперва необходимо проверить поддержку W3C DOM в браузере
 if (document.getElementById && document.getElementsByTagName) {
// Определение переменных, ссылающихся на списки
  var sel1 = document.getElementById(id1);
  var sel2 = document.getElementById(id2);
// Клонирование динамического списка
  var clone = sel2.cloneNode(true);
// Определение переменных для клонированных элементов списка
  var clonedOptions = clone.getElementsByTagName("option");
// Вызов функции собирающей вызываемый список
  refreshDynamicSelectOptions(sel1, sel2, clonedOptions);
// При изменении выбранного элемента в первом списке: // вызов функции пересобирающей вызываемый список
  sel1.onchange = function() {
  refreshDynamicSelectOptions(sel1, sel2, clonedOptions);
  }
 }
}
 
// Функция для сборки динамического списка
function refreshDynamicSelectOptions(sel1, sel2, clonedOptions) {
// Удаление всех элементов динамического списка
 while (sel2.options.length) {
  sel2.remove(0);
 }
 var pattern1 = /( |^)(select)( |$)/;
 var pattern2 = new RegExp("( |^)(" + sel1.options[sel1.selectedIndex].value + ")( |$)");
// Перебор клонированных элементов списка
 for (var i = 0; i < clonedOptions.length; i++) {
// Если название класса клонированного option эквивалентно "select" // либо эквивалентно значению option первого списка
  if (clonedOptions[i].className.match(pattern1) ||
  clonedOptions[i].className.match(pattern2)) {
// его нужно клонировать в динамически создаваемый список
   sel2.appendChild(clonedOptions[i].cloneNode(true));
  }
 }
}
// Вызов скрипта при загрузке страницы
window.onload = function() {
        dynamicSelect("gorod", "sklad");
}
</script>

php

<form action="obrabotka.php"  method="post" name="form2">
<?php 
 
   print "<select name=\"gorod\" id=\"gorod\">";
   print "<option value=\"select\">Выберите город доставки...</option>";
   while($row1 = mysql_fetch_array($res1)){
       print "<option value='{$row1['id_gorod']}'>".$row1['gorod']."</option>";
   }
   print "</select>";
print "<select name=\"sklad\" id=\"sklad\">";
   print "<option  class=\"select\" value=\"select\">Выберите склад...</option>";
   while($row2 = mysql_fetch_array($res2)){
       print "<option  class=\"{$row2['id_sklad']}\" value='{$row2['sklad']}' size=\"5\">".$row2['sklad']."</option>";
   }   
   print "</select>";?>

665

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

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

как сюда дописать еще два чтоб было 4 зависимых выпадающих списка

Не могу подсказать.

666

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

В списках стоит кнопка

$auto = "<p align='right'><b>Ширина-</b> <select  name='nazv_auto' size='1'  selected='selected' onchange=\"this.form.submit();\" >;

всюду она одинаковая,
возможно ли както отслеживать какая именно кнопка нажата. Или както проименовать каждую кнопку чтоб какждая кнопка отправляла форму на свой обработчик?

667

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

this.form.submit() - Означает, что происходит отправка основной формы, той внутри которой находится <select>. Можно создать внизу страницы скрытые формы содержащие скрытые поля в которые с помощью JavaScript вставлять данные и затем отправлять форму.

668

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

Здравствуйте. Подскажите как поставить условие. Есть 4 выпадающих списка, после выбора в них параметров сами параметры попадают в масив

$aName = array('nazv_auto' => 'auto', 'nazv_model' => 'model', 'nazv_year' => 'year', 'nazv_modif' => 'modif');

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

669

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

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

если в масиве присутствуют   все 4 параметра то идет выборка, а если хоть один параметр пустой то ничего не выводить.

Проверяйте с помощью isset(), например.

670

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

Здравствуйте. У меня не получилось с условием. Вот чясть кода віпадающих списков

 echo '<form method="POST" action="">';
$auto = "<p align='right'><b>Производитель-</b> <select  name='nazv_auto' size='1'  selected='selected' onchange=\"this.form.submit();\" >;
        <option value=''  >Все</option></p>";
          $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."";
 {

     
     $model = "<p align='right'><b>Модель-</b> <select  name='nazv_model' size='1'     onchange=\"this.form.submit();\" >;
                <option value=''>Все</option></p>";
      $query = mysql_query("SELECT * FROM automodel
WHERE nazv_auto = '" . addslashes($_POST['nazv_auto']) . "' ORDER BY nazv_auto "); /* здесь нужно принять номер названия тоесть 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.""."";
}
 {

условие если оприделены все 4 параметра из 4 списков то сформировать масив

if (isset($_POST['nazv_auto']) and isset($_POST['nazv_model']) and isset($_POST['nazv_modif'])){

$aName = array('nazv_auto' => 'auto', 'nazv_model' => 'model', 'nazv_year' => 'year', 'nazv_modif' => 'modif');
}
else ('');

если допустим определены только три или меньше то по идее масив не должен сформироватся, но все работает так какбы условия вообще нету

671

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

isset() показывает и пустые значения элементов форм. Пробуйте использовать вместе с isset() проверку пустого значения empty(), или в паре с isset() проверьте длину строки функцией strlen().

672

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

Спасибо получилось поставил проверку empty но в другом месте работает!

673

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

Здравствуйте, подскажите пожалуйста как в ссылке можно передать несколько переменных.
Есть переменные

$a= ($_POST['nazv_auto']);
$b= ($_POST['nazv_model']);
$c= ($_POST['nazv_year']);
$d= ($_POST['nazv_modif']);


 $result3 = mysql_query("select  razmer from baza where  razmer ='".$row["zavod"]."'

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

 print "&nbsp;&nbsp;<a  href='view_auto.php?razmer=" . $row3["razmer"] . "'>ссылка</a>

674

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

Параметры перечисляются в ссылке через символ амперсанда (&).
print "&nbsp;&nbsp;<a  href='view_auto.php?razmer=" . $row3["razmer"] . '&nazv_auto=' . urlencode($_POST['nazv_auto']) . "'>ссылка</a>

675

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

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

$a= ($_POST['nazv_auto']);
$b= ($_POST['nazv_model']);
$c= ($_POST['nazv_year']);
$d= ($_POST['nazv_modif']);
print "&nbsp;&nbsp;<a  href='view_auto.php?razmer=" . $row3["razmer"] . '&nazv_auto=' . urlencode($_POST['nazv_auto']) . "'><font color='#1E90FF'><b>" . $row3["razmer"] . "</b></font></a>&nbsp;&nbsp;

вот чясть кода где принимается переменная из ссылки

if (isset($_GET['$nazv_auto'])) {$nazv_auto = $_GET['$nazv_auto'];}
if (isset($_GET['razmer'])) {$razmer = $_GET['razmer'];}

$result2 = mysql_query("select * from automobil where auto='$nazv_auto'",$db);
$row2 = mysql_fetch_array($result2);
print"'".$row2['auto']."'";
$result = mysql_query("select * from baza where razmer='$razmer'",$db);
$row = mysql_fetch_array($result);

но выводится только переменная razmer а вот переменная auto гдето теряется, где здесь ошибка не пойму.