[Решено]Как вывести в одну строку таблицы разные поля из двух типов node, связанных Node reference.

Главные вкладки

Аватар пользователя dvorak dvorak 11 октября 2010 в 17:49

Добрый день.
Столкнулся вот с какой задачкой:

Есть два типа материала связанных по полю node reference
В двух типах материалов имеется разная информация,

но эту информацию необходимо вывести в одну общую строчку таблицы.

К примеру, в node A у нас есть информация о некой детали (дата выпуска и прочая чепуха), и есть поле node reference СТРАНА,
которое ссылается на второй тип материала node Б (в данном случае это Страна производитель).
В материале node Б есть поле с изображением флага страны.

Итого надо вывести что-то типа Деталь-Артикул-Страна производитель-Флаг (картинка)
Связь через поле СТРАНА
У меня вывод получается только в соседней строке ((( (так как это два типа материалов).
Подскажите, плиз, как выкрутиться?..
Делаю для себя и своими силами...

Комментарии

Аватар пользователя dvorak dvorak 12 октября 2010 в 12:05

Судя по всему это надо делать через PHP, в котором я не очень силен :(... Но чувствую, код очень простой...

Аватар пользователя adamant08 adamant08 12 октября 2010 в 18:18

Думаю можно написать скрип с запросом в саму базу данных - там изять нужное - и вывести в нужной форме.
Могу попробовать - но нужен скриншот таблицы.

Аватар пользователя adamant08 adamant08 12 октября 2010 в 21:10

"dvorak" wrote:
Прилагаю скриншот, хотя он, наверное, не очень информативный...

))))))))))))))
У меня просьбочка немного другого характера была ) (сделать скрин к примеру из пхпМайАдмин этой таблицы (хотелось бы увидеть названия полей))

Аватар пользователя adamant08 adamant08 13 октября 2010 в 10:00

"dvorak" wrote:
Ауч, я подумал, что это не столь важно главное принцип :))

принцип - это конечно да - но чтоб грамотно написать - желательно знать имена полей Smile
могу показать на простом примере скрипт )

Аватар пользователя dvorak dvorak 13 октября 2010 в 10:45

Можно на простом примере я разберусь, к примеру есть таблица в ней поля:
field_articul, field_name_product, field_country (это поле типа node reference)
вторая таблица
field_flag_country, field_russian_name_coyntry, field_inizialy_of_country

И вот хочу вывести в таблицу плана:
field_articul | field_name_product | field_country (это поле типа node reference) | field_flag_country

Аватар пользователя adamant08 adamant08 13 октября 2010 в 14:14

Скриптик написал - не пугайтесь если покажется большой - можно было написать все в 1 цикле - но для того чтоб разобратся в нем - думаю так будет лучше. Дело оптимизации - это уже второй вопрос)

<?php<?
// Для начала соеденимся с базой
$hostname = "localhost"; // В моем случае сайт на денвере висит 
$username = "root"; 
$password = ""; 
$dbName = "detali"; //Имя нужной базы

$table_detal = "detal"; // Имена наших таблиц
$table_flag= "flag";

$link=mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_query("SET NAMES cp1251");//скорей всего таблица создана в ЮТФ8 
                                //- но для нормального отображения в браузере
mysql_select_db($dbName) or die(mysql_error()); // я сразу ставлю 1251 чтоб не переключать там кодировку
mysql_query("SET NAMES cp1251");

$q = "SELECT * FROM $table_detal"; 
$res = mysql_query($q);//Делаем выборку данных из таблицы "деталь"

$q2 = "SELECT * FROM $table_flag";
$res2 = mysql_query($q2);//Делаем выборку данных из таблицы "флаг"

$num = mysql_num_rows($res);// Получаем количество строк
$num2 = mysql_num_rows($res2);
//В первом цикле формируем массив из нужных нам столбцов, то же делаем и во втором 
for ($i=0;$i<=$num;$i++)  
 {
    $row=mysql_fetch_array($res);
    $arr[$i]['field_articul']=$row['field_articul'];
    $arr[$i]['field_name_product']=$row['field_name_product'];
    $arr[$i]['field_countru']=$row['field_countru'];
     
 }
for ($i=0;$i<=$num2;$i++)
 {
    $row=mysql_fetch_array($res2);
    $arr2[$i]['field_flag_country']=$row['field_flag_country'];
    $arr2[$i]['field_inizialy_of_country']=$row['field_inizialy_of_country'];
    
 }
 //Теперь начинаем рисовать таблицу - Как она будет выглядеть - дело ваше 
 // Советую посмотреть справочник по ХТМЛ
 echo '<table border=1>';
 for ($i=0;$i<=$num;$i++)
 { 
    echo '<tr>';
    echo "<td>".$arr[$i]['field_articul']."</td>";
    echo "<td>".$arr[$i]['field_name_product']."</td>";
    echo "<td>".$arr[$i]['field_countru']."</td>";
    $j=0;
    //Циклом выводим в строчку АРТИКУЛЬ, ИМЯ ДЕТАЛИ, СТРАНУ
    //Далее циклом Вайл ищем совпадение инициалов из поля field_countru с field_inizialy_of_country
    //Если такие есть - выводим флаг
    while ($j<=$num2)
        { if ($arr[$i]['field_countru']==$arr2[$j]['field_inizialy_of_country'])
            {
              echo "<td>".$arr2[$j]['field_flag_country']."</td>";
              }
                      $j++;
            
        }
    echo '</tr>';
}
echo '</table>';
mysql_close($link);
?>

Аватар пользователя dvorak dvorak 14 октября 2010 в 16:57

Пока не пробовал, но обошелся, нашел модуль (очень удобный), который позволяет к Термину таксономии присобачить картинку (работает с views)