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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Зависимый СЕЛЕКТ

Сообщения:  [1-8] 

 
 автор: dedev   (12.05.2007 в 19:19)   письмо автору
 
   для: dedev   (12.05.2007 в 19:03)
 

Сделал зависимые (вроде работает).
Подскажите, как сделать это же, только без перезагрузки страницы?
Ни как не выходит

<form name="form" method="get" action="">
<?
// Открыть базу данных
$db sqlite_open("test.sdb");
// Определяем общее количество записей в таблице
$query "SELECT * FROM kat;";
$result sqlite_query($db$query);

echo(
"<SELECT name='kat' size=1>");
// Выводим сообщения
while (@$arr sqlite_fetch_array($result))

{
      if(
$_GET['kat'] == $arr['kat_id']) $selected "selected";
      else 
$selected "";
      echo(
"<OPTION value='".$arr['kat_id']."'" .$selected.">".$arr['kat_name']."</OPTION>");
}
echo(
"</SELECT>");

if (isset(
$_GET['kat']))
   {
$query "SELECT DISTINCT naprav.naprav_id, naprav.naprav_name
               FROM naprav, svod
                    WHERE svod.naprav_id = naprav.naprav_id
                        AND svod.kat_id = 
$_GET[kat]";
}
else{
// Определяем общее количество записей в таблице
$query "SELECT DISTINCT naprav.naprav_id, naprav.naprav_name
               FROM naprav, svod
                    WHERE svod.naprav_id = naprav.naprav_id
                        AND svod.kat_id = 100"
;
}
$result sqlite_query($db$query);

  if(
sqlite_num_rows($result) > 0)
  {

echo(
"<SELECT name='naprav' size=1>");
// Выводим сообщения
while (@$arr sqlite_fetch_array($result))

{
      if(
$_GET['naprav'] == $arr['naprav.naprav_id']) $selected "selected";
      else 
$selected "";
      echo(
"<OPTION value='".$arr['naprav.naprav_id']."'" .$selected.">".$arr['naprav.naprav_name']."</OPTION>"); 
  }
echo(
"</SELECT>");
  }
?>
<input type="submit" name="goo" value="выполнить">
</form>

   
 
 автор: dedev   (12.05.2007 в 19:03)   письмо автору
 
   для: dedev   (11.05.2007 в 18:42)
 

help!

   
 
 автор: dedev   (12.05.2007 в 01:03)   письмо автору
 
   для: dedev   (11.05.2007 в 18:42)
 

Пример выкладывал cheops
доработать под свои таблицы не получается, help!
знаю, где не получается, а все равно не получается

<?php
  
// Устанавливаем соединение с базой данных
 
$db sqlite_open("test.sdb");

  
// Начало HTML-формы
  
echo "<form action='' method=post>";

  
// Формируем первый выпадающий список
  
$query "SELECT * FROM kat
            ORDER BY kat_name"
;
  
$cat sqlite_query($db$query);
  if(!
$cat) exit(sqlite_error());
  
// Если имеется хотя бы одна запись
  // формируем выпадающий список
  
if(sqlite_num_rows($cat) > 0)
  {
    echo 
"<select name=id_catalog onchange='show(this.form.id_catalog)'>";

    while(
$catalog sqlite_fetch_array($cat))
    {
      if(
$_POST['id_catalog'] == $catalog['id_catalog']) $selected "selected";
      else 
$selected "";
      echo 
"<option value=$catalog[kat_id] $selected>$catalog[kat_name]</option>";

      
// Формируем массив первичных ключей каталогов
      
$array_catalog[] = $catalog['kat_id'];
    }
    echo 
"</select>";
  }

  
// Формируем второй выпадающий список
  
$query "SELECT * FROM kat";
  
$cat sqlite_query($db$query);
  if(!
$cat) exit(sqlite_error());
  
// Если имеется хотя бы одна запись
  // формируем выпадающий список
  
if(sqlite_num_rows($cat) > 0)
  {
    while(
$catalog sqlite_fetch_array($cat))
    {
      
// Формируем скрытые списки
      /////////////
      
$query "SELECT * FROM naprav
                WHERE naprav_id = 
$catalog[kat_id]";
      
$prd sqlite_query($db$query);
      if(!
$prd) exit(sqlite_error());
      
// Если в текущем каталоге имеется хотя бы
      // одна товарная позиция формируем выпадающий список
      
if(sqlite_num_rows($prd) > 0)
      {
        echo 
"<select id=$catalog[kat_id] style=\"display:none\" name=product$catalog[kat_id]>";
        while(
$product sqlite_fetch_array($prd))
        {
          if(
$_POST['naprav_id'] == $product['naprav_id']) $selected "selected";
          else 
$selected "";
          echo 
"<option value=$product[naprav_id] $selected>$product[naprav_name]</option>";
        }
        echo 
"</select>";
      }
    }
  }
  echo 
"</br><input type=submit name=send value=Отправить>";

  
// Конец HTML-формы
  
echo "</form>";
?>
<script language='JavaScript1.1' type='text/javascript'>
<!--
  var messageIdList = new Array(<?= implode(","$array_catalog?>);
  function show(sel)
  {
    for (i = 0; i < messageIdList.length; i++)
    {
      document.getElementById(messageIdList[i]).style.display = "none";
    }
    document.getElementById(sel.options[sel.selectedIndex].value).style.display = "block";
  }
//-->
</script>

   
 
 автор: dedev   (11.05.2007 в 20:49)   письмо автору
 
   для: Trianon   (11.05.2007 в 19:50)
 

Хотелось бы без перезагрузки страницы, средствами PHP+JavaScript
Как я уже писал, пересмотрел, наверное, большую часть примеров на форуме, а прикрутить к своей ситуации ни как, Видимо где-то, что-то упустил, :(

   
 
 автор: Trianon   (11.05.2007 в 19:50)   письмо автору
 
   для: dedev   (11.05.2007 в 19:43)
 

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

   
 
 автор: dedev   (11.05.2007 в 19:43)   письмо автору
 
   для: Trianon   (11.05.2007 в 19:18)
 

Таблицы kat и naprav -- большими не будут максимум 200 – 300 записей
Таблица svod на сегодняшний день 20000 записей в перспективе 300000 – 500000

   
 
 автор: Trianon   (11.05.2007 в 19:18)   письмо автору
 
   для: dedev   (11.05.2007 в 18:42)
 

таблицы насколько большие?

   
 
 автор: dedev   (11.05.2007 в 18:42)   письмо автору
 
 

CREATE TABLE [kat] (
[kat_id] INTEGER PRIMARY KEY NOT NULL,
[kat_name] VARCHAR(80) NULL
);

CREATE TABLE [naprav] (
[naprav_id] INTEGER PRIMARY KEY NOT NULL,
[naprav_name] VARCHAR(80) NULL
);

CREATE TABLE [svod] (
[svod_id] INTEGER PRIMARY KEY NOT NULL,
[kat_id] INTEGER NULL,
[naprav_id] INTEGER NULL,
);

Пожалуйста, помогите сделать зависимые выпадающие списки,
1. выпадающий список по табдице kat
2. зависимый выпадающий список по таблице naprav, но через таблицу svod

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

<?
// Открыть базу данных
$db sqlite_open("test.sdb");
// Определяем общее количество записей в таблице
$query "SELECT * FROM kat;";
$result sqlite_query($db$query);

echo(
"<SELECT size=1>");
// Выводим сообщения
while (@$arr sqlite_fetch_array($result))

{
    echo(
"<OPTION value=".$arr['kat_id']."'>".$arr['kat_name']."</OPTION>");

  }
echo(
"</SELECT>");


// Определяем общее количество записей в таблице
$query "SELECT DISTINCT naprav.naprav_id, naprav.naprav_name
               FROM naprav, svod
                    WHERE svod.naprav_id = naprav.naprav_id
                        AND svod.kat_id = // в этом месте должны быть данные из первого списка, не выходит"
;

$result sqlite_query($db$query);

  if(
sqlite_num_rows($result) > 0)
  {

echo(
"<SELECT size=1>");
// Выводим сообщения
while (@$arr sqlite_fetch_array($result))

{
    echo(
"<OPTION value=".$arr['naprav.naprav_id']."'>".$arr['naprav.naprav_name']."</OPTION>");
  }
echo(
"</SELECT>");
  }

?>

все примеры на форуме пересмотрел, перестроить под свои потребности не получается.

   

Сообщения:  [1-8] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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