显示显示结果的计数

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 magento sales_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

以上是关于显示显示结果的计数的主要内容,如果未能解决你的问题,请参考以下文章

sql 科学计数法显示结果 怎么处理

MATLAB中怎样将结果不以科学计数法显示?

Core Data 属性计数并在 TableView 中显示结果

Oracle 查询:如何将返回的记录限制为计数 > 1 但显示完整结果的记录?

怎么让win10自带计算器结果只显示小数而不是科学计数法

用74LS90或74LS193设计24进制加法计数器,用数码管显示其结果