5 posts by 2 authors in: Forums > CMS Builder
Last Post: August 24, 2016   (RSS)

Hello, All -

Is it possible to combine the output from 2 mysql_select calls?

I am trying to create a drop-down select menu which would allow people to create a link to a page (category) or record. I need to grab the results from both tables and present them as one list.

I can do this in the backend using mySQL.

SELECT CONCAT('./', permalink) AS URL, CONCAT(name,' (Page)') AS LINK from cms_pages
UNION
SELECT CONCAT('?rec=', num) AS URL, CONCAT(name,' (Record)') AS LINK from cms_records
ORDER BY LINK

However, on a normal page it is proving more troublesome!

Any suggestions?

:0S

Perch

Hi, Daryl -

I'm using this code on the a normal (front-end) page:

$allRecords = mysql_select('records'," hidden != '1' ");
$allPages = mysql_select('pages'," hidden != '1' ");
$result = array_merge_recursive($allRecords, $allPages);

It works - but my guess is it's a bit heavy. 

Also, I would like to sort the $result alphabetically. The only snag is that records have "titles" and pages have "names"!

:0/

Perch

By Daryl - August 24, 2016

Yes, it will be heavy if both tables have lots of records.

It's a bit tricky to sort a combined multi-dimensional array.
So I'd like to suggest to use mysql_select_query() function, for example:

$urlsAndLinks = mysql_select_query("SELECT CONCAT('./', permalink) AS URL, CONCAT(name,' (Page)') AS LINK from {$GLOBALS['TABLE_PREFIX']}pages
                                    UNION
                                    SELECT CONCAT('?rec=', num) AS URL, CONCAT(name,' (Record)') AS LINK from {$GLOBALS['TABLE_PREFIX']}records
                                    ORDER BY LINK");

Let me know how it goes.

Thanks,

Daryl Maximo
PHP Programmer - interactivetools.com

Ah. You see. A little (intelligent) light in dark places makes all the difference!

:0)