【问题标题】:Get data from table with CakePHP 2使用 CakePHP 2 从表中获取数据
【发布时间】:2016-08-17 11:49:34
【问题描述】:

我有什么:

我有一个名为 Sales 的表和 3 个名为 SellerBuyerPrice 的列。

在控制器中,我有一个 function myview() 我在其中执行此 SQL 查询:

SELECT SUM(price) AS total, seller_name, buyer_name
FROM sales
GROUP BY seller_name, buyer_name

功能:

public function myview() {
$this->set('mysales', $this->Sales->find('all', 
  array(
     'fields' => array('SUM(price) AS total','seller_name','buyer_name'),
     'group' => array('seller_name','buyer_name')
  )
));
    }

我在 myview.ctp 中显示结果:

<table>
    <tr>
        <th>Seller</th> 
        <th>Buyer</th> 
        <th>Total</th>
        <th>PDF</th>
    </tr>

<?php

    foreach ($mysales as $thesales)
    {
    ?>
    <tr>       
        <td><?php echo $thesales['Sales']['seller_name']; ?></td> 
        <td><?php echo $thesales['Sales']['buyer_name']; ?></td> 
        <td><?php echo $thesales[0]['total']; ?></td>
        <td><input type="button" onclick="location.href='myview_pdf';" value="PDF"/></td>
    </tr>
</table>

<?php
    }
        echo $this->Js->writeBuffer();
?>

PDF 按钮将您带到另一个名为 myview_pdf 的视图,它显示(目前)一个空白 PDF。

我想要什么:

当您单击 PDF 按钮时,它会“识别”我单击按钮所在行的“卖家名称”和“买家名称”,因此我可以执行以下 SQL 查询:

SELECT price, seller_name, buyer_name
FROM sales
GROUP BY seller_name, buyer_name

并将结果显示到myview_pdf.ctp

问题:

我正在苦苦挣扎:我怎么知道我点击了哪一行,我如何从该行中获取数据,我在哪里编写 SQL 查询,我如何将查询结果传递到 myview_pdf.ctp...

感谢您的帮助!

【问题讨论】:

    标签: php html sql cakephp


    【解决方案1】:

    您需要先将其设为链接而不是按钮,然后将卖家和买家名称作为查询字符串传递。

    <td>
     <!-- <input type="button" onclick="location.href='myview_pdf';" value="PDF"/> --> <!-- Remove this -->
     <?php echo $this->Html->link("PDF", array(
        "controller" => "<controller name>",
        "action"     => "myview_pdf",
        "?" => array(
           "seller_name" => $thesales['Sales']['seller_name'];,
           "buyer_name" => $thesales['Sales']['buyer_name'];,
        )
     )); ?>
    

    然后在您的控制器中,您可以从查询字符串中访问卖家和买家名称:

    public function myview_pdf() {
         $seller_name = $this->request->query("seller_name");
         $buyer_name  = $this->request->query("buyer_name");
         /* Other code */
    }
    

    【讨论】:

    • 你又是我的英雄!因此,如果理解正确,现在我只需要在 myview_pdf.ctp 中执行 "" 吗?因为当我这样做时,我有一个“未定义的变量”错误。很抱歉这个愚蠢的问题,很抱歉回复晚了,我不得不解决一些关于 pdf 的问题
    • 我发现问题出在哪里:在 myview_pdf() 我必须写 $this->set('seller_name', $this->request->query("seller_name"));而不是 $seller_name = blablabla。但是现在我如何使用卖家名称的值来执行类似“SELECT * FROM sales WHERE Seller_name = //我们收到的卖家名称的值//”之类的查询? @ObjectManipulator
    • 您是否建议您在视图中编写该查询?恐怕这不是正确的做法。您的查询应该在模型或控制器中。它永远不应该出现在视图中。我猜你可能正在使用一些 Pdf Helper。尝试改用组件。
    • 控制器中没有。这就是我要在控制器中做的事情: $this->set('seller_name0', $this->request->query("seller_name")); $this->set('buyer_name0', $this->request->query("buyer_name")); $this->set('mysales', $this->Sales->find('all', array('fields' => array('something1','something2',something3'), 'conditions' => array ('seller_name' => $seller_name0, 'buyer_name' => $buyer_name0) )));
    • 我想显示卖家#1 与买家#1 所做的每笔销售,我认为问题在于我之前评论中的条件(抱歉,如果它不可读)@ObjectManipulator
    猜你喜欢
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多