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

Форум PHP

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

 

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

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

тема: Неясен листинг 6.43 из "PHP Народные советы" (Двойной выпадающий список)?
 
 автор: Dinya_1   (26.03.2009 в 19:10)   письмо автору
 
 

твуйте, подскажите пожалуйста. 
В в ниже преведенном листинге есть 
"SELECT * FROM catalogs" и "SELECT * FROM products" 
также есть "id_catalog", "id_product" 
и  $catalog[name],  "$product[name]".

Проблема в том что я запутался в в этих catalogs - catalog; 
products -product
Если catalogs и products - это названия таблици, 
а name - поле таблицы, то что же тогда catalog и product (без "s")

<?php
  
// Устанавливаем соединение с базой данных
  
require_once("config.php");

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

  
// Формируем первый выпадающий список
  
$query "SELECT * FROM catalogs
            ORDER BY name"
;
  
$cat mysql_query($query);
  if(!
$cat) exit(mysql_error());
  
// Если имеется хотя бы одна запись,
  // формируем выпадающий список
  
if(mysql_num_rows($cat) > 0)
  {
    echo 
"<select name=id_catalog
           onchange='show(this.form.id_catalog)'>"
;
    echo 
"<option value=0>Не имеет значения</option>";
    while(
$catalog mysql_fetch_array($cat))
    {
      if(
$_POST['id_catalog'] == $catalog['id_catalog'])
      {
        
$selected "selected";
      }
      else 
$selected "";
      echo 
"<option value=$catalog[id_catalog] $selected>
                    
$catalog[name]</option>";

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

  
// Формируем второй выпадающий список
  
$query "SELECT * FROM catalogs";
  
$cat mysql_query($query);
  if(!
$cat) exit(mysql_error());
  
// Если имеется хотя бы одна запись,
  // формируем выпадающий список
  
if(mysql_num_rows($cat) > 0)
  {
    while(
$catalog mysql_fetch_array($cat))
    {
      
// Формируем скрытые списки
      
$query "SELECT * FROM products
                WHERE id_catalog = 
$catalog[id_catalog]
                ORDER BY name"
;
      
$prd mysql_query($query);
      if(!
$prd) exit(mysql_error());
      
// Если для текущего элемента каталога имеется хотя бы
      // одна товарная позиция, формируем выпадающий список
      
if(mysql_num_rows($prd) > 0)
      {
        echo 
"<select id=$catalog[id_catalog]
           style=\"display:none\" name=product
$catalog[id_catalog]>";
        while(
$product mysql_fetch_array($prd))
        {
          if(
$_POST['id_product'] == $product['id_product'])
          {
            
$selected "selected";
          }
          else 
$selected "";
          echo 
"<option value=$product[id_product] $selected>
                        
$product[name]</option>";
        }
        echo 
"</select>";
      }
    }
  }
  echo 
"</br><input type=submit name=send value=Отправить>";

  
// Конец HTML-формы
  
echo "</form>";
?>


  Ответить  
 
 автор: Dinya_1   (28.03.2009 в 21:38)   письмо автору
 
   для: Dinya_1   (26.03.2009 в 19:10)
 

Странно, даже в коде с книги, может опечатка....?
показывает ошибку

Notice: Undefined index: id_catalog in w:\home\localhost....
You have an error in your SQL syntax near 'ORDER BY name' at line 3


<?
// Формируем скрытые списки 
      
$query "SELECT * FROM products 
                WHERE id_catalog = 
$catalog[id_catalog] 
                ORDER BY name"
;
 
?>

  Ответить  
 
 автор: Trianon   (28.03.2009 в 21:42)   письмо автору
 
   для: Dinya_1   (28.03.2009 в 21:38)
 

приводите сообщения об ошибках полностью.

  Ответить  
 
 автор: Dinya_1   (28.03.2009 в 21:48)   письмо автору
 
   для: Trianon   (28.03.2009 в 21:42)
 

Notice: Undefined index: id_catalog in w:\home\localhost\\www\site\forma1.php on line 214
You have an error in your SQL syntax near 'ORDER BY name' at line 3


На 214 строке начинаетсе :


<?//Формируем скрытые списки
"..WHERE id_catalog = $catalog[id_catalog]
                ORDER BY name"
;
?>

Поля в таблице следующие

id
title
name

  Ответить  
 
 автор: Trianon   (28.03.2009 в 22:11)   письмо автору
 
   для: Dinya_1   (28.03.2009 в 21:48)
 

убедитесь что в строках таблицы catalogs заполнено поле id_catalog

  Ответить  
 
 автор: Dinya_1   (28.03.2009 в 22:30)   письмо автору
 
   для: Trianon   (28.03.2009 в 22:11)
 

Теперь такое:
Unknown column 'id_catalog' in 'where clause'

в поле id_catalog у меня стоит № категории соответствующая id таблицы catalogs....
и в поле id_product стоит № соответствующий категории id catalogs

или что должно быть написанно в поле id_catalog ?

  Ответить  
 
 автор: Trianon   (28.03.2009 в 22:31)   письмо автору
 
   для: Dinya_1   (28.03.2009 в 22:30)
 

что значит "теперь"?

  Ответить  
 
 автор: Dinya_1   (28.03.2009 в 22:34)   письмо автору
 
   для: Trianon   (28.03.2009 в 22:31)
 

я переименовал поле title в поле id_catalog
Вопрос прост: Что должно быть написанно в поле id_catalog, цифры или названия буквами?

P/s: не ужели нельзя было в книге перед каждой темой описывать порядок таблицы с названиями полей из которых делается данный SELECT....

  Ответить  
Rambler's Top100
вверх

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