I have a view in Drupal that filters my content. It brings back 7 rows. All I want to return is the number or results returned(7). Is this possible?
I tried using the View result counter but it returns a number for each results
1
2
3
4
5
6
7
I just need the 7 part.
So in SQL I would do a select count(*)
what you can do is to activate php for the views header/footer and add the following snippet to it:
<?php
$view = views_get_current_view();
print $view->total_rows;
?>
This will print the total number of rows.
If you need the result as a field, you could use the "Views custom field" module, add a php field and run the same snippet.
Regards
Mike
If you want to get the count outside the view you can use this
$view = views_get_view('MY_VIEW_NAME');
$view->set_display('MY_DISPLAY'); // like 'block_1'
$view->render();
print sizeof($view->result);
Note : Do not use this within a view. It will be an overhead. If you are using it within view check the other answers.
If using views_get_view
in Views 3, you can use this snippet:
$view = views_get_view('MY_VIEW');
$view->set_display('MY_DISPLAY');
// Execute first
$result = $view->preview('MY_DISPLAY');
// Output result only if rows > 0
if (count($view->result) > 0) {
print $result;
}
With Views 3 you may need to do
$view->get_total_rows = TRUE;
$total_items = $view->query->pager->get_total_items();
This works well for me and deals with the pager issues. Put this function in your custom module, rename / format as needed, and call it from your views-view--*view_name_goes_here*.tpl.php files.
function get_view_rowcount(){
$view = views_get_current_view();
$page_total = count($view->result);
if(isset($view->total_rows)){
return "<strong>Displaying " . $page_total . " of " . $view->total_rows . " total rows.</strong>";
} else {
return "<strong>Displaying " . $page_total . " of " . $page_total . " total rows.</strong>";
}
}
with drupal 7 - Under the pager options you have the option to
Expose items per page
When checked, users can determine how many items per page show in a view