orderBy Search Results

15 posts by 3 authors in: Forums > CMS Builder
Last Post: May 8, 2013   (RSS)

By s2smedia - May 7, 2013

I have a search function on my site that works great.. however, not sure how to order the results by Alphabetical order:

ex:   'orderBy'     => 'item ASC',

<?php
require_once "../../admin/lib/viewer_functions.php";

$searchOptions = array();
$searchOptions['keywords'] = @$FORM['q'];
$searchOptions['perPage'] = "10";
$searchOptions['debugSql'] = "0";

$searchTables = array();
$searchTables['products'] = array(
'viewerUrl' => 'productdetails.php',
'titleField' => 'item',
'summaryField' => 'item_description',
'field1' => 'pattern',
'field2' => 'size',
'searchFields' => array('item','item_description','pattern'),

);

list($searchRows, $searchDetails) = searchMultipleTables($searchTables, $searchOptions);


?>

any help would be appreciated! thanks!

By Steve99 - May 8, 2013

Hi,

The php function asort should do the trick: http://php.net/manual/en/function.asort.php

Hope this helps.

- Steve

By s2smedia - May 8, 2013

ok great.. problem is Im not sure exactly how to implement that into my code. :(

By Steve99 - May 8, 2013

Actually, this might work best for you. Try this:

          function compare_title_alpha($a, $b) { 
            return strnatcmp($a['yourField'], $b['yourField']); 
          } 
         
          usort($yourRecords, 'compare_title_alpha');

- Steve

By s2smedia - May 8, 2013

I added this (towards bottom), doesnt seem to be working:

<?php
require_once "../../admin/lib/viewer_functions.php";

$searchOptions = array();
$searchOptions['keywords'] = @$FORM['q'];
$searchOptions['perPage'] = "10";
$searchOptions['debugSql'] = "0";

$searchTables = array();
$searchTables['products'] = array(
'viewerUrl' => 'productdetails.php',
'titleField' => 'item',
'summaryField' => 'item_description',
'field1' => 'pattern',
'field2' => 'size',
'searchFields' => array('item','item_description','pattern'),

);

list($searchRows, $searchDetails) = searchMultipleTables($searchTables, $searchOptions);


function compare_title_alpha($a, $b) {
return strnatcmp($a['item'], $b['item']);
}

usort($searchTables, 'compare_title_alpha');

?>

By Steve99 - May 8, 2013

It looks like you should change this part:

This:
usort($searchTables, 'compare_title_alpha');

Change to this:
usort($searchRows, 'compare_title_alpha');


It works great for me. This is the basic main setup from the code output:

list($yourRecords, $yourMetaData) = getRecords(array(
          'tableName'   => 'yourTable',
));

function compare_title_alpha($a, $b) { 
 return strnatcmp($a['item'], $b['item']); 


usort($yourRecords, 'compare_title_alpha');

Let me know how you make out.

- Steve

By s2smedia - May 8, 2013

UHHGG.. now I get Undefined index: item in /home/roshotel/public_html/test/Products/search.php on line 28 Notice: Undefined index: item in /home/roshotel/public_html/test/Products/search.php on line 28 Notice:

line 28 is:    return strnatcmp($a['item'], $b['item']); 

full code:

<?php
require_once "../../admin/lib/viewer_functions.php";




$searchOptions = array();
$searchOptions['keywords'] = @$FORM['q'];
$searchOptions['perPage'] = "10";
$searchOptions['debugSql'] = "0";


$searchTables = array();
$searchTables['products'] = array(
'viewerUrl' => 'productdetails.php',
'titleField' => 'item',
'summaryField' => 'item_description',
'field1' => 'pattern',
'field2' => 'size',
'searchFields' => array('item','item_description','pattern'),

);





list($searchRows, $searchDetails) = searchMultipleTables($searchTables, $searchOptions);
function compare_title_alpha($a, $b) {
return strnatcmp($a['item'], $b['item']);
}

usort($searchRows, 'compare_title_alpha');


?>

By Steve99 - May 8, 2013

Yikes. Well "item" isn't part of $searchRows then. Is it in $searchDetails?

By s2smedia - May 8, 2013

I give up... maybe someone from Interactive Tools can figure it out..

$searchTables = array();
$searchTables['products'] = array(
'viewerUrl' => 'productdetails.php',
'titleField' => 'item',
'summaryField' => 'item_description',
'field1' => 'pattern',
'field2' => 'size',
'searchFields' => array('item','item_description','pattern'),

);