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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Вывод данных в выпадающий список но не все?
 
 автор: xpom   (14.10.2006 в 21:45)   письмо автору
 
 

Помогите пожалуйста с выводом данных в выпадающий список я вывожу все данные ( что и меня не устраивает) из таблицы и вывожу их так, что переменная $pl совпадает с первичным ключом таблицы и при загрузки страницы в выпадающем списке отображаются данные соответствующие переменной $pl, вот по этому скрипту:

  $resk = mysql_query("SELECT * FROM Poloj",$db);

      while ($myroww = mysql_fetch_row($resk))
      {
        print ("<option value=$myroww[0]");
        if ($pl==$myroww[0]) {

         print (" selected");
        }
        print (">$myroww[2]</option>");
      }


но мне нужно чтобы отображались не все данные, а только те данные что имеют вторичный ключ такой как и данные совпадающие с переменной $pl(те которые отображаются при загрузке страницы) Подскажите, кто знает как это можно сделать?

   
 
 автор: cheops   (14.10.2006 в 22:20)   письмо автору
 
   для: xpom   (14.10.2006 в 21:45)
 

Тогда SQL-запрос следует изменить следующим образом
"SELECT * FROM Poloj WHERE pl = $pl"

   
 
 автор: xpom   (15.10.2006 в 11:58)   письмо автору
 
   для: cheops   (14.10.2006 в 22:20)
 

В данном случае pl это название какого поля в таблице?

   
 
 автор: xpom   (15.10.2006 в 13:14)   письмо автору
 
   для: xpom   (15.10.2006 в 11:58)
 

Вот я попробывал сделать такой скрипт:

$ress = mysql_query("SELECT * FROM Poloj",$db);

      while ($mygyt = mysql_fetch_row($ress))
      {
         if ($pl==$mygyt[0]) {
           $mygyt[1]=$kt;
         }
        }

      $resk = mysql_query("SELECT * FROM Poloj WHERE Can = $kt",$db);

     while ($myroww = mysql_fetch_row($resk))
      {
        print ("<option value=$myroww[0]");
        if ($pl==$myroww[0]) {
          print (" selected");
        }
        print (">$myroww[2]</option>");
      }

но в впадающем списке ничего нет список пуст, кто знает подскажете что здесь не правильно?
Can - это внешний ключ,
первичный ключ в таблице самый первый столбик, т.е. в цикле $myroww[0]

   
 
 автор: cheops   (15.10.2006 в 13:29)   письмо автору
 
   для: xpom   (15.10.2006 в 13:14)
 

Вообще не выводятся тэги <option> или выводятся, но без названий? Попробуйте поставить проверку на правильность выполнения SQL-запроса
<?php
  $resk 
mysql_query("SELECT * FROM Poloj WHERE Can = $kt",$db);
  if(!
$resk) exit(mysql_error);
?>

   
 
 автор: xpom   (15.10.2006 в 13:49)   письмо автору
 
   для: cheops   (15.10.2006 в 13:29)
 

Выпадающий список есть, но он узкий и пустой.
Попробывал поставить этот скрипт и после выпадающего списка все остальное не отображается?

   
 
 автор: xpom   (15.10.2006 в 14:31)   письмо автору
 
   для: xpom   (15.10.2006 в 13:49)
 

Я так понял что переменная $kt не может принять значение внешнего ключа?
Подскажите как сделать чтобы переменная $kt приняла значения внешнего ключа, исходя из переменной $pl которая имеет значение первичного ключа? Это в вот этой части скрипта:

$ress = mysql_query("SELECT * FROM Poloj",$db); 

      while ($mygyt = mysql_fetch_row($ress)) 
      { 
         if ($pl==$mygyt[0]) { 
           $mygyt[1]=$kt; 
         } 
        } 

Или каким нибудь другим путем можно это сделать?

   
 
 автор: cheops   (15.10.2006 в 19:39)   письмо автору
 
   для: xpom   (15.10.2006 в 14:31)
 

Можно передать это значение например через GET-параметр
index.php?kt=50

Получить это значение в скрипте можно при помощи элемента суперглобального массива $_GET['kt'].

   
 
 автор: xpom   (15.10.2006 в 21:48)   письмо автору
 
   для: cheops   (15.10.2006 в 19:39)
 

А в этой странице больше никак не выйдет? Боюсь через GET-параметр не получится?

   
 
 автор: cheops   (16.10.2006 в 00:03)   письмо автору
 
   для: xpom   (15.10.2006 в 21:48)
 

У вас $kt откуда берётся? Просто напишите
<?php
  $kt 
7;
?>

   
 
 автор: xpom   (16.10.2006 в 18:04)   письмо автору
 
   для: cheops   (16.10.2006 в 00:03)
 

Вот у меня есть переменная $pl которая уже имеет значение первичного ключа таблицы, а мне нужно чтобы переменная $kt приняла значение внешнего ключа тех данных которые выведутся с помощь переменной $pl? Как это можно осуществить?

   
 
 автор: cheops   (16.10.2006 в 22:24)   письмо автору
 
   для: xpom   (16.10.2006 в 18:04)
 

Если не сложно, приведите пример вывода данных при помощи $pl?

   
 
 автор: xpom   (17.10.2006 в 09:57)   письмо автору
 
   для: cheops   (16.10.2006 в 22:24)
 

Пример вывода данных при помощи $pl

print ("<select size='1' name='pl'>");

$resk = mysql_query("SELECT * FROM Poloj ",$db);

     while ($myrowk = mysql_fetch_row($resk))
      {
        print ("<option value=$myrowk[0]");
        if ($pl==$myrowk[0]) {
          print (" selected");
        }
        print (">$myrowk[2]</option>");
      }
      print ("</select>");

   
 
 автор: cheops   (17.10.2006 в 14:00)   письмо автору
 
   для: xpom   (17.10.2006 в 09:57)
 

$pl это я так понимаю выбранное значение? А значение $kt у вас откуда поступает?

   
 
 автор: xpom   (17.10.2006 в 20:07)   письмо автору
 
   для: cheops   (17.10.2006 в 14:00)
 

Нет $pl это не выбранное значение. Значение $pl нам уже за ранее известно, просто выбираются все данные из таблицы в выпадающий список и при загрузки страницы отображаются данные имеющие значение $pl как значение первичного ключа (опечатка в скрипте name='fli'). А значение $kt не откуда не поступает, это я хотел присвоить этой переменной $kt такое значение внешнего ключа, какое значение имеют данные отображенные переменной $pl.
Например: у нас есть категории (переменная $kt (внешний ключ)) и подкатегории (переменная $pl (первичный ключ)), нужно чтобы вывелись в выпадающий список подкатегории не все а только определенной категории?

   
 
 автор: cheops   (17.10.2006 в 21:47)   письмо автору
 
   для: xpom   (17.10.2006 в 20:07)
 

Не понятно. Вы реализуете двойной выпадающий список http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=7586 или одинарный?

   
 
 автор: xpom   (17.10.2006 в 23:12)   письмо автору
 
   для: cheops   (17.10.2006 в 21:47)
 

По этой ссылки немного не так. Там при выборе категории в одной форме берутся подкатегории этой категории и всталяются в другую форму. А нужно чтобы при выборе в одной форме подкатегории в другой форме отображались подкатегории только той категории откуда и та выбранная подкатегория? Суть ясна?

   
 
 автор: cheops   (18.10.2006 в 01:00)   письмо автору
 
   для: xpom   (17.10.2006 в 23:12)
 

Имеется ввиду что-то вроде этого?
<form name="form" method="post">  
<?php  
  $ress 
mysql_query("SELECT * FROM Poloj",$db); 
  if(!
$ress) exit(mysql_error);
  if(
mysql_num_rows($ress))
  {
    echo 
'<select name="select" onchange=\'this.form.submit()\'>';
    while (
$mygyt mysql_fetch_row($ress)) 
    { 
       if (
$_POST['select'] == $mygyt[0]) $selected "selected"
       else 
$selected "selected"
       echo 
"<option value=$mygyt[0] $selected>$mygyt[2]</option>";
    }
    echo 
"</select>";
    if(!empty(
$_POST['select']))
    {
      if(
preg_match("#^[\d]+$#",$_POST['select'])) exit("Не верный формат запроса");
      
$sub mysql_query("SELECT * FROM Poloj WHERE = $_POST[select]",$db); 
      if(!
$ress) exit(mysql_error);
      if(
mysql_num_rows($ress))
      {
        echo 
'<select name="select_sub" onchange=\'this.form.submit()\'>';
        while (
$mygyt mysql_fetch_row($ress)) 
        { 
           if (
$_POST['select_sub'] == $mygyt[0]) $selected "selected"
           else 
$selected "selected"
           echo 
"<option value=$mygyt[0] $selected>$mygyt[2]</option>";
        }
        echo 
"</select>";
      }
    }
  }  
?>  
</form>

   
 
 автор: xpom   (18.10.2006 в 18:40)   письмо автору
 
   для: cheops   (18.10.2006 в 01:00)
 

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






P.S.
Подскажите что означают некоторые действия?
onchange=\'this.form.submit()\'>' ?
!empty($_POST['select']) ?
preg_match("#^[\d]+$#",$_POST['select']) ?

   
 
 автор: cheops   (18.10.2006 в 22:54)   письмо автору
 
   для: xpom   (18.10.2006 в 18:40)
 

Следует элементу $_POST['select'] присвоить значение $pfe.
>onchange=\'this.form.submit()\'>'
Эта строка означает, что следует отправлять результаты формы сразу после того как выбрано значение из выпадающего списка.
>!empty($_POST['select']) ?
Данное выражение возвращает true, если значение $_POST['select'] не пустое, и false, если пустое или не определено.
>preg_match("#^[\d]+$#",$_POST['select']) ?
Это выражение проверяет является ли значение $_POST['select'] числом или нет.

   
 
 автор: xpom   (19.10.2006 в 17:11)   письмо автору
 
   для: cheops   (18.10.2006 в 22:54)
 

Да, элементу $_POST['select'] присвоить значение $pfe?

   
Rambler's Top100
вверх

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