Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ассоциативный массив, Заполнение 
:(
    Опции темы
obscurant
Дата 15.4.2011, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 7.1.2008

Репутация: нет
Всего: нет



Здравствуйте. Не пойму как заполнить ассоциативный массив выборкой из базы MySql  :((
После выборки из базы  формируется таблица вида productFROM, option_value, Price 

Если я заполняю массив вручную

Код

$out = array(
          array('product' => 'Товар 1', 'size' => '500',
                'price' => '1000'),
          array('product' => 'Товар 2', 'size' => '700',
                'price' => '2000')



то вывод в таблицу работает нормально ($AllConnectProducts - это переданный массив $out в шаблон смарти. Соответственно productFROM - нужно соотнести с product, option_value с size и Price с price)

Код

{section name=u loop=$AllConnectProducts}  
    <tr>
      <td>
       {$AllConnectProducts[u].product}
      </td> 
      <td>
       {$AllConnectProducts[u].size}
      </td> 
      <td>
       {$AllConnectProducts[u].price}
      </td> 
    </tr>        
    {/section}

PM MAIL   Вверх
patap
Дата 15.4.2011, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



может стоит показать код где ты и как досташь данные из БД?


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
obscurant
Дата 15.4.2011, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 7.1.2008

Репутация: нет
Всего: нет



Цитата(patap @ 15.4.2011,  12:57)
может стоит показать код где ты и как досташь данные из БД?

в пхп файле 

Код

function GetConnectProducts ($productID)
{
$q = db_query('SELECT `my_connect_products`.`productFROM`,`gukl_products_opt_val_variants`.`option_value`,`gukl_products`.`Price`
FROM `my_connect_products` JOIN `gukl_product_options_values` on (`my_connect_products`.`productTO`='.(int)$productID.') &&
(`my_connect_products`.`productFROM`=`gukl_product_options_values`.`productID`) JOIN `gukl_products_opt_val_variants` on
`gukl_products_opt_val_variants`.`variantID`=`gukl_product_options_values`.`variantID` && `gukl_product_options_values`.`optionID`=3
join `gukl_products` on `my_connect_products`.`productFROM`=`gukl_products`.`productID`');
        
        
  if ( $row=db_fetch_row($q) ) 
  {            
      while ($row = db_fetch_row($q)) 
     {
        ЗДЕСЬ ЗАГВОЗДКА - нужно заполнить массив out значениями выборки
      }
   
     return $out;        
  }
return false;    
}



эта функция вызывается из шаблонизатора
Код

$AllConnectProducts = array();
AllConnectProducts = GetConnectProducts((int)$productID);
$smarty->assign("AllConnectProducts",$AllConnectProducts);


ну и собсно массив выводится в шаблоне
Код

<table>
{section name=u loop=$AllConnectProducts}  
    <tr>
      <td>
       {$AllConnectProducts[u].product}
      </td> 
      <td>
       {$AllConnectProducts[u].size}
      </td> 
      <td>
       {$AllConnectProducts[u].price}
      </td> 
    </tr>        
{/section}
</table>


Это сообщение отредактировал(а) obscurant - 15.4.2011, 13:25
PM MAIL   Вверх
patap
Дата 15.4.2011, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



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

 if ( $row=db_fetch_row($q) ) 
  {            
      while ($row = db_fetch_row($q)) 
     {
        ЗДЕСЬ ЗАГВОЗДКА - нужно заполнить массив out значениями выборки
      }
   
     return $out;        
  }


во-вторых - работает ли запрос правильно?

ну и если все правльно, и db_fetch_row() возвращает, как я предполагаю, нумерованный массив, то так должно сработать
Код

      while ($row = db_fetch_row($q)) 
     {
        array_push($out, array(
          'product' => $row[0],
          'size' => $row[1],
          'price' => $row[2]
        ));
      }




--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
obscurant
Дата 15.4.2011, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 7.1.2008

Репутация: нет
Всего: нет



про логику спасибо smile С конструкцией if ( $row=db_fetch_row($q) ) реально протупил. Просто у меня возвращалось в запросе 2 результата (он кстати правильно работает), а я думал что результат следующей итерации цикла перезаписывается на место предыдущего  smile 
Но конструкция ваша к сожалению не сработала. Сделал в функции так:
Код

while ($row = db_fetch_row($q)) 
{
  $out1[] = $row[0];
  $out2[] = $row[1];
  $out3[] = $row[2];                
}
  $out = array($out1, $out2, $out3);
        
  return $out;


и вывожу
Код

<table border="1">
    {section name=u loop=$AllConnectProducts}  
    <tr>
      <td>
       {$AllConnectProducts[0][u]}
      </td> 
      <td>
       {$AllConnectProducts[1][u]}
      </td> 
      <td>
       {$AllConnectProducts[2][u]}
      </td> 
    </tr>        
    {/section}
  </table>
 

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

$out = array($out1, $out2, $out3);
- что-то не так?
PM MAIL   Вверх
patap
Дата 15.4.2011, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



что вернет print_r($out) после этого?
Код

      while ($row = db_fetch_row($q)) 
     {
        array_push($out, array(
          'product' => $row[0],
          'size' => $row[1],
          'price' => $row[2]
        ));
      }
      print_r($out);



--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
obscurant
Дата 15.4.2011, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 7.1.2008

Репутация: нет
Всего: нет



сработала конструкция 

Код

while ($row = db_fetch_row($q)) 
     {
        $out[] = array(
          "product" => $row[0],
          "size" => $row[1],
          "price" => $row[2]
        );
      }
           
    return $out; 


все. теперь вроде нормально выводится - две строчки, как и нужно  smile Спасибо большое за помощь!

Это сообщение отредактировал(а) obscurant - 15.4.2011, 15:44
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1881 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.