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

Форум MySQL

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

 

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

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

тема: данные из двойного динамический список в базе данных
 
 автор: ronin   (04.07.2007 в 13:30)   письмо автору
 
 

Здравствуйте!
на этом форуме взял скрипт каталога:

<?php
  
  
require_once("configuration.php");

   
# echo "<form action=3.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 
"country:<br><select name=id_catalog onchange='show(this.form.id_catalog)'>";
    echo 
"<option value=0>choose a country</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></td>
<td  >state:"
;
  }

  
  
$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>";
      }
    }
  }

он привязан к двум таблицам. у меня все работает, но я пытаюсь при выборе id_catalog и id_product закинуть их в другую таблицу

 $query = "insert into users( country,state ) values
( '".$id_catalog."', '".id_product ."'  )";

при этом данные $id_catalog заносятся, а id_product нет - пусто.

   
 
 автор: Faraon   (04.07.2007 в 13:40)   письмо автору
 
   для: ronin   (04.07.2007 в 13:30)
 

Да потомучто у Вас id_product не переменная,
поставьте впереди $

   
 
 автор: ronin   (04.07.2007 в 13:52)   письмо автору
 
   для: Faraon   (04.07.2007 в 13:40)
 

Нет не работает, в скрипте переменная имееться, извиняюсь за невнимание при размещение инфы на сайте!

   
 
 автор: Faraon   (04.07.2007 в 14:09)   письмо автору
 
   для: ronin   (04.07.2007 в 13:52)
 

Я имею ввиду не в скрипте а в SQL-запросе

$query = "insert into users(country,state) values 
('".$id_catalog."', '".$id_product."')"; 

   
 
 автор: ronin   (04.07.2007 в 15:14)   письмо автору
 
   для: Faraon   (04.07.2007 в 14:09)
 

я понял с самого начала про SQL запрос!

$query = "insert into users(country,state) values  
('".$id_catalog."', '".$id_product."')";  

не работает.
т.е в базу заноситься $id_catalog, а $id_product - не заносится.

   
 
 автор: Faraon   (04.07.2007 в 15:38)   письмо автору
 
   для: ronin   (04.07.2007 в 15:14)
 

Надо смотреть полностью скрипт, и то место где вы хотите вставить данные в другую таблицу.
Приведите полный пример что Вы делаете. Вполне вероятно что в том месте переменная $id_pruduct не определена

   
 
 автор: ronin   (04.07.2007 в 16:11)   письмо автору
 
   для: Faraon   (04.07.2007 в 15:38)
 

все таки я думаю причина в динамическом списке

if (isset($_POST["id_product"]))
{
$query = "insert into users(country,state) values   
('".$id_catalog."', '".$id_product."')";   
}
 else {
 echo ('нет переменной);
       }

страница обработчик "не видит" переменной $id_product из динамического списка, а $id_catalog - "видит"!
Там где динамический список выводиться, он же является формой из которой закидываются данные в БД . Переменная $id_catalog является также названием первого селекта, а название второго селекта: name=product$catalog[id_catalog] , может тут собака зарыта?

   
 
 автор: Faraon   (04.07.2007 в 16:21)   письмо автору
 
   для: ronin   (04.07.2007 в 16:11)
 

Ну правильно, у Вас же переменная $id_product не определена! У Вас есть только массив $_POST[id_product]
надо ее определить:
if (isset($_POST["id_product"])) 

$id_product=$_POST["id_product"];
$query = "insert into users(country,state) values    
('".$id_catalog."', '".$id_product."')";    

 else { 
 echo ('нет переменной); 
       }

   
 
 автор: ronin   (04.07.2007 в 16:53)   письмо автору
 
   для: Faraon   (04.07.2007 в 16:21)
 

переменные у меня определяются в самом начале(это самой саюой подразумевается! как тогда работает первая переменная?!), я пробывал и вашим способом - не видит скрипт переменную, на этой странице , она не поступает, причинана где-то в динамическом списке!!!

   
 
 автор: Faraon   (04.07.2007 в 17:35)   письмо автору
 
   для: ronin   (04.07.2007 в 16:53)
 

А если вывести echo $id_product, что нибудь то будет?

   
 
 автор: ronin   (04.07.2007 в 17:55)   письмо автору
 
   для: Faraon   (04.07.2007 в 17:35)
 


echo "Country: $id_catalog<br/>";
echo "State: $id_product<br/>";

echo "Country: $id_catalog<br/>"; выводит - то что нужно и то что попадает в базу.
echo "State: $id_product<br/>"; - пусто, и в БД тоже:)
В то же время в форме все ок! т.е выводится первый список я выбираю позицию($id_catalog) - и открывается второй($id_product), я выбираю позицию. при сабмите первая позиция закидывается,а вторая нет:)

   
 
 автор: ronin   (04.07.2007 в 19:13)   письмо автору
 
   для: ronin   (04.07.2007 в 17:55)
 

!!

   
 
 автор: Trianon   (05.07.2007 в 10:11)   письмо автору
 
   для: ronin   (04.07.2007 в 16:53)
 

переменные у меня определяются в самом начале(это самой саюой подразумевается!

Такие вещи не подразумеваются сами собой!

Если Вы используете некоторую переменную, будьте любезны показать, что Вы её определяете перед этим.

   
 
 автор: ronin   (05.07.2007 в 10:38)   письмо автору
 
   для: Trianon   (05.07.2007 в 10:11)
 


$id_catalog=((!isset($_POST["id_catalog"]))?"":$_POST["id_catalog"]);
  $id_product=((!isset($_POST["id_product"]))?"":$_POST["id_product"]);

Странное дело - если в форме поменять имя второго селекта name=product$catalog[id_catalog] на такой вариант: name=id_product работает частично: т.е. если id_catalog = 3 переменная id_product - работает, если другие номера id_catalog - то id_product = 0.
при этом я добавил:

echo "<option value=0>choose a state</option>"; 

в второй селект

echo " <select id=$catalog[id_catalog] style=\"display:none\" name=id_product>";
        echo "<option value=0>choose a state</option>";

без этой строчки вместо нуля в id_product номера, которые несоответствуют какими они должны быть. При этом форма, где все это выводится работает корректно.

   
 
 автор: Trianon   (05.07.2007 в 11:35)   письмо автору
 
   для: ronin   (05.07.2007 в 10:38)
 

.

   
Rambler's Top100
вверх

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