Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 1381 Просмотров
*

Mick_20

  • Завсегдатай
  • 1029
  • 13 / 0
  • Что тут писать?
Вывод из таблиц
« : 28.03.2014, 11:18:45 »
Имеются две таблицы:
names
nid - id записи
name - наименование

files
fid - id файла
file - название
descr - описание
nid - id записи из таблицы names

Нужно вывести информацию как на скриншоте.


Запрос написал а сам вывод сделать не могу... помогите пожалуйста.

Код: php
$query = $db->getQuery(true);
$query->select('n.id, n.name')
->from('#__portfolio_works_names AS n')
->leftJoin('#__portfolio_works_files AS f ON f.nid = n.id')
->where("n.user_id = {$userid}");
$list = $db->setQuery($query)->loadObjectList();

foreach($list as $work)
{
?
}
   
Мой сайт про корабли
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Вывод из таблиц
« Ответ #1 : 28.03.2014, 12:11:00 »
ну.. и выводите дальше $work->id , work->name, только вы из второй таблицы файлов ничего не выбрали по моему в select надо добавить f.* или f.file..А n.id у вас точно есть выше вы писали что у вас nid в таблице names?
интернет-блог: http://websiteprog.ru
*

Mick_20

  • Завсегдатай
  • 1029
  • 13 / 0
  • Что тут писать?
Re: Вывод из таблиц
« Ответ #2 : 28.03.2014, 12:40:35 »
ну.. и выводите дальше $work->id , work->name, только вы из второй таблицы файлов ничего не выбрали по моему в select надо добавить f.* или f.file..А n.id у вас точно есть выше вы писали что у вас nid в таблице names?
nid есть в таблице. n.id.

Понятно что выводить $work->id и т.п.   Это если просто списком. А таблицами отдельными где для группы файлов одно name я не знаю как.
Мой сайт про корабли
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Вывод из таблиц
« Ответ #3 : 28.03.2014, 13:21:23 »
Ну тут много вариантов, используйте функции php для работы с массивами http://www.php.net/manual/ru/ref.array.php . Я бы например сделал так:
Код: php
$names = array_unique(array_column($list,'name'));
foreach($names as $name)
{
   echo $name.'<hr />';
   $keys = array_keys($list,$name);
   foreach ($keys as $key)
   {
       $file= $list[$key];
       echo $file->file.'<br />';
   }
}
« Последнее редактирование: 28.03.2014, 13:24:53 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

Mick_20

  • Завсегдатай
  • 1029
  • 13 / 0
  • Что тут писать?
Re: Вывод из таблиц
« Ответ #4 : 28.03.2014, 13:32:10 »
Вот только до чего додумался:

Код: php
foreach($list as $work) 
{
$t = $work->title;
$f = "<td>".$work->file_name."</td><td>".$work->descr."</td>";


$out = "<table><tr><td colspan='2'>{$t}</td></tr><tr>{$f}</tr></table><br />";
echo $out;

}

Выводит не так как надо:

Открытый урок по Информатике (презентация + сценарий)
my_article1.doc   | План открытого урока по Информатике.

Открытый урок по Информатике (презентация + сценарий)
my_article2.pptx| Презентация к открытому уроку по Информатике.

Сценарий классного часа
work1-2.doc   План классного часа


Нужно так:

Открытый урок по Информатике (презентация + сценарий)
my_article1.doc   | План открытого урока по Информатике.
my_article2.pptx| Презентация к открытому уроку по Информатике.

Сценарий классного часа
work1-2.doc   План классного часа
Мой сайт про корабли
*

Mick_20

  • Завсегдатай
  • 1029
  • 13 / 0
  • Что тут писать?
Re: Вывод из таблиц
« Ответ #5 : 28.03.2014, 13:37:58 »
Сделал так:

Код: php
$query = $db->getQuery(true);
$query->select('n.id, n.title, f.file_name, f.descr')
->from('#__portfolio_works_names AS n')
->leftJoin('#__portfolio_works_files AS f ON f.nid = n.id')
->where("n.user_id = {$userid}");
$list = $db->setQuery($query)->loadObjectList();

$titles = array_unique(array_column($list,'title'));
foreach($titles as $title)
{
   echo $title.'<hr />';
   $keys = array_keys($list,$title);
   foreach ($keys as $key)
   {
       $file= $list[$key];
       echo $file->file_name.'<br />';
   }
}


Пишет ошибку: Fatal error: Call to undefined function array_column() in /uspeh.tspu.ru/portfolio/add_work.php on line 67 Fatal error: Access to undeclared static property: JLoader::$classes in /uspeh.tspu.ru/libraries/loader.php on line 195

На эту строку: $titles = array_unique(array_column($list,'title'));   
name я заменил в таблице на title
Мой сайт про корабли
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Вывод из таблиц
« Ответ #6 : 28.03.2014, 13:52:01 »
а array_column только в php 5.5 появился.. тогда придется циклом перебрать тайтлы:
Код: php
foreach ($list as $work)
  titles[] = $work->name;
$titles = array_unique(titles);
ну и дальше все остальное..
интернет-блог: http://websiteprog.ru
*

Mick_20

  • Завсегдатай
  • 1029
  • 13 / 0
  • Что тут писать?
Re: Вывод из таблиц
« Ответ #7 : 29.03.2014, 18:51:24 »
Не получается вывести файлы(
Выводит только $work->name;

Код: php
foreach ($list as $work)
  $titles[] = $work->name;
$titles = array_unique($titles);
foreach($titles as $title)
{
   echo $title.'<hr />';
  
   $keys = array_keys($list,$title);
   foreach ($keys as $key)
   {
       $file= $list[$key];
       echo $file->file_name.'<br />';
   }
}
Мой сайт про корабли
*

winstrool

  • Давно я тут
  • 820
  • 51 / 2
  • Свободен для работы
Re: Вывод из таблиц
« Ответ #8 : 30.03.2014, 00:50:04 »
не забывайте про безопасность кода:
Код: php
$query = $db->getQuery(true);
$query->select('n.id, n.name')
->from('#__portfolio_works_names AS n')
->leftJoin('#__portfolio_works_files AS f ON f.nid = n.id')
->where("n.user_id = {$userid}");
$list = $db->setQuery($query)->loadObjectList();

foreach($list as $work)
{
?
}
при такой вариации, скрипт подвержен sql-injection, юзайте функцию intval()   
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: Вывод из таблиц
« Ответ #9 : 30.03.2014, 02:21:48 »
Что там за массив обьектов в $list получается могу только догадываться, но попробуй так
Код: php
foreach ($list as $work){
echo $work->name;
$files = array_filter($list,
function($el) use ($work->id) {
return (int)$el->nid === (int)$work->id;
}
);
if($files)
foreach($files as $file)
echo $file->file_name;
}
Не проверял. Если ошибки синтаксиса где, сам поправишь. PHP не ниже 5.3
« Последнее редактирование: 30.03.2014, 02:32:02 от passer »
*

Mick_20

  • Завсегдатай
  • 1029
  • 13 / 0
  • Что тут писать?
Re: Вывод из таблиц
« Ответ #10 : 30.03.2014, 18:14:02 »
так ничего и не получилось :(
пришлось делать с подзапрос в запросе...
Мой сайт про корабли
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

PHP вывод и замена значения из БД

Автор CityCat

Ответов: 11
Просмотров: 798
Последний ответ 29.07.2021, 15:53:58
от CityCat
Вывод img взависимости от url?

Автор warlocksp

Ответов: 2
Просмотров: 946
Последний ответ 25.04.2021, 14:50:32
от warlocksp
Вывод данных соглано таблицы Excel

Автор warlocksp

Ответов: 56
Просмотров: 2680
Последний ответ 28.02.2019, 23:56:23
от warlocksp
Вывод описание по картинки?

Автор warlocksp

Ответов: 7
Просмотров: 978
Последний ответ 11.01.2019, 18:05:43
от xpank
Вывод цены в зависимости от времени и дня недели

Автор baskethome

Ответов: 6
Просмотров: 1752
Последний ответ 13.02.2015, 13:51:43
от Arkadiy