显示显示结果的计数
Posted
技术标签:
【中文标题】显示显示结果的计数【英文标题】:Show the count of Displayed results 【发布时间】:2017-05-04 09:08:42 【问题描述】:我们正在使用下面的代码根据选定的从和到日期过滤行。
我们可以成功过滤并显示结果。
php
/* to show selected date */
if (isset($_POST['post_at']) && $_POST['post_at'] != '')
$orderFromDate = $_POST['post_at'] . " 00:00:00 ";
else
$orderFromDate = '';
if (isset($_POST['post_at_to_date']) && $_POST['post_at_to_date'] != '')
$orderToDate = $_POST['post_at_to_date'] . " 23:59:59 ";
else
$orderToDate = '';
/* to show selected date end*/
function getDesignerCollection()
/* date search */
if (isset($_POST['post_at']) && $_POST['post_at'] != '')
$orderFromDate = $_POST['post_at'] . " 00:00:00 ";
else
$orderFromDate = '';
if (isset($_POST['post_at_to_date']) && $_POST['post_at_to_date'] != '')
$orderToDate = $_POST['post_at_to_date'] . " 23:59:59 ";
else
$orderToDate = '';
/* date search end*/
$accountType = $rows['type'];
if ($accountType == "admin")
if ($orderFromDate != '') $order->addFieldToFilter('created_at', array(
'gteq' => $orderFromDate
));
if ($orderToDate != '') $order->addFieldToFilter('created_at', array(
'lteq' => $orderToDate
));
表格
<form name="frmSearch" method="post" action="">
<input type="text" placeholder="From Date" id="post_at"
value="<?php
if ($orderFromDate != '')
$newPostStartDate = date('Y-m-d', strtotime($_POST['post_at']));
echo $newPostStartDate;
?>" name="post_at" />
<input type="text" placeholder="To Date" id="post_at_to_date"
value="<?php
if ($orderToDate != '')
$newPostEndDate = date('Y-m-d', strtotime($_POST['post_at_to_date']));
echo $newPostEndDate;
?>"name="post_at_to_date" />
<input type="submit" name="search" value="search" id="searchButton">
<input type="button" value="Reset" id="clear-dates">
</form>
jquery
jQuery.datepicker.setDefaults(
showOn: "button",
buttonImage: "assets/img/datepicker.png",
buttonText: "Date Picker",
buttonImageOnly: true,
dateFormat: 'yy-mm-dd'
);
$(function()
$("#post_at").datepicker();
$("#post_at_to_date").datepicker();
);
现在我们要显示选择了多少行。如果结果如上图,我们要显示“rows : 1”。我对 php 很陌生,我尝试了下面的代码,但它没有显示任何内容:
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno())
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
if ($result = mysqli_query($link, "SELECT entity_id , created_at FROM sales_flat_order ORDER BY Name"))
/* determine number of rows result set */
$row_cnt = mysqli_num_rows($result);
printf("Result set has %d rows.\n", $row_cnt);
/* close result set */
mysqli_free_result($result);
编辑
现在我们要显示显示的行数。所以我们尝试了下面的代码。它的显示如下图所示。它显示 "rows = 3"。因为它考虑了 "sales_flat_order" 表的“entity_id”列。但我想要 "rows : 9",因为您可以在图像中看到 9 行。
require_once '../../app/Mage.php';
Mage::app();
// specify the date picker date-format
$format = 'Y-m-d';
// if posted data are not empty
if(!empty($_POST['post_at']) && !empty($_POST['post_at_to_date']))
if (!empty($_POST['post_at']))
$dateFrom = DateTime::createFromFormat($format, $_POST['post_at']);
if (!empty($_POST['post_at_to_date']))
$dateTo = DateTime::createFromFormat($format, $_POST['post_at_to_date']);
// Get the resource model
$resource = Mage::getSingleton('core/resource');
// Retrieve the read connection
$read = $resource->getConnection('core_read');
// MySQL query
$query = 'SELECT entity_id, created_at, dproduct_id FROM sales_flat_order WHERE created_at BETWEEN :fromdate AND :todate ;';
// Bind MySQL parameters
$binds = array(
'fromdate' => $dateFrom->format('Y-m-d H:i:s'),
'todate' => $dateTo->format('Y-m-d H:i:s')
);
// Execute the query and store the results in $results
$results = $read->fetchAll($query,$binds);
echo "rows : ".count($results);
echo "<br>";
print_r($results);
else
echo "error you have not specified any dates";
完整代码:http://pastebin.com/hMUEusvb
【问题讨论】:
这段代码在哪里运行?它肯定会输出到您期望的页面部分吗?我注意到它不会保存数字并将其返回给 UI 层,它只是立即打印出来。呈现字符串后,在您的页面源中搜索该字符串。如果它不存在,请检查您的查询是否实际返回结果。另一种方法是使用 SQL Count()。 @ADyson 似乎我需要连接search button
来结束部分代码。我说的对吗?
如果你的意思是当点击搜索按钮时代码需要运行,那么是的。
@ADyson 我不知道该怎么做,你能用代码发布一个答案吗.....
您已经有了代码(假设它正在工作,它应该这样做)...您只需要在页面回发时使其运行。您只需将它放在应用程序中的正确位置(或从正确的位置调用它)。您的搜索按钮会发回服务器,对吗?那时它会运行一些 PHP 代码 - 可能包括问题顶部的示例?您需要同时运行最后一个示例。我无法为您执行此操作,因为我看不到您的应用程序其余部分的结构。
【参考方案1】:
您可以从您的 mysqli 查询中计算所选的 id。在您的 mysqli 查询中尝试此操作
if ($result = mysqli_query($link, "SELECT count(entity_id) as Total_count,entity_id , created_at FROM sales_flat_order ORDER BY Name"))
// Your process
【讨论】:
我试过你的代码,当我点击search
按钮时,它的显示行,但不显示how many rows
,你能帮我把search
按钮连接到end part of mycode
吗?这是必需的吗?或者我们可以只用javascript
得到结果吗
请在这里加入:chat.***.com/rooms/131215/date-search【参考方案2】:
您可以使用js计算行数。在代码末尾添加以下代码。将 selector1 替换为仅用于行的类名。在浏览器中检查您的页面,并找到一个仅在行中出现并且连续一次使用一次的类。 然后将 selector2 替换为要显示行数的类或 id。
<script>
$(document).ready(function ()
var count = 0;
//use class unique in each row.
$("selector1").each(function ()
count++;
);
//use class or id where you want to display count
$("selector2").prepend("Number of rows "+count);
);
如果你想通过 PHP 来处理它。请将代码粘贴到呈现搜索结果的位置。 您当前的代码不起作用,因为您的代码在文件 http://pastebin.com/QKMj0k2p 的第 293 行发送回响应 您可以在浏览器的网络选项卡中找到它,并在搜索提交中查看它发送请求的位置以及从那里得到的响应。如果你能找到它在哪里发回响应,那么很容易知道哪些代码正在呈现行。对解决您的问题将更有帮助。
【讨论】:
in magentosales_flat_order
计数将与图像中提供的视图中的行不匹配。结果将是 3 个订单(检查 order_id 列)。查询结果未获取已取消的。【参考方案3】:
我认为您的问题中没有出现错误。如果您只想解决此问题。您可以使用 JavaScript。你只需要知道确切的选择器。
$(document).ready( function ()
//your selector would direct li or td if there is no other li td then it works other wise you have select parent then li or td like below comment
//$(".class li").length
var count = $("li").length;
$("yourCounter").html(count);
);
【讨论】:
欢迎您的兄弟。希望你为我祈祷。祝你好运【参考方案4】:你的 PHP 代码应该是这样的
// if posted data are not empty
if(!empty($_POST['post_at']) && !empty($_POST['post_at_to_date']))
// specify the date picker date-format
$format = 'Y-m-d';
// create dates
$dateFrom = DateTime::createFromFormat($format, $_POST['post_at']);
$dateTo = DateTime::createFromFormat($format, $_POST['post_at_to_date']);
// if equal dates are applied to form
if($_POST['post_at']==$_POST['post_at_to_date'])
$dateTo->add(new DateInterval('T23H59M59S'));
// Get the resource model
$resource = Mage::getSingleton('core/resource');
// Retrieve the read connection
$read = $resource->getConnection('core_read');
// MySQL query
$query = 'SELECT `entity_id`, `created_at` FROM `sales_flat_order` WHERE `created_at` BETWEEN :fromdate AND :todate ;';
// Bind MySQL parameters
$binds = array(
'fromdate' => $dateFrom->format('Y-m-d H:i:s'),
'todate' => $dateTo->format('Y-m-d H:i:s')
);
// Execute the query and store the results in $results
$results = $read->fetchAll($query,$binds);
echo "Orders count: ".count($results);
else
echo "error you have not specified any dates";
【讨论】:
我收到错误Fatal error: Class 'Mage' not found in
line $resource = Mage::getSingleton('core/resource');
请问您安装的是什么版本的magento? @abcd
尝试在require_once 'app/Mage.php';
之前添加这个
now 错误:`致命错误:未捕获异常 'PDOException' 并带有消息'SQLSTATE [42S22]:未找到列:1054 'order 子句'中的未知列'名称''在 /var/www/ html/sbdev2/lib/Zend/Db/Statement/Pdo.php:228 堆栈跟踪:#0 /var/www/html/sbdev2/lib/Zend/Db/Statement/Pdo.php(228): PDOStatement->执行(数组)#1 /var/www/html/sbdev2/lib/Varien/Db/Statement/Pdo/Mysql.php(110):Zend_Db_Statement_Pdo->_execute(数组)#2 /var/www/html/sbdev2/app /code/core/Ze以上是关于显示显示结果的计数的主要内容,如果未能解决你的问题,请参考以下文章
Core Data 属性计数并在 TableView 中显示结果