php - 捐赠名单 - 代码问题?代码有问题
问题描述
当人们在页面中多次捐款时,它只显示他们最近的捐款,而不是他们的总捐款(在捐款列表中)。例如,如果我现在捐 5 美元,以后再捐 10 美元,它只会显示 10 美元而不是 5 美元。这是网站:gesher-jds.org/giving-tuesday
我如何解决它?
<div class="donors_info">
<div class="totalenteries"></div>
<?php
$valueid = 2727;
//Get donors based on forms IDs (can be single or multiple forms)
if(function_exists('give_get_payments')) {
$args = array(
'give_forms' => $valueid,
'number' => -1,
);
$donations = give_get_payments( $args );
echo "<table id='dtab'>";
echo "<thead>";
echo "<th align='center'>" . 'Name' . "</th>";
echo "<th align='center'>" . 'Amount' . "</th>";
echo "</thead>";
echo "<tbody>";
$donors = array();
foreach($donations as $donation) {
//Now get donor information from this donation ("customer" aka "donor")
$customer_id = give_get_payment_customer_id( $donation->ID );
$customers = new Give_Customer( $customer_id );
$nameis = $customers->name;
if (in_array($nameis, $donors)) {} else {
$amt = get_post_meta($donation->ID,'_give_payment_total',true) + 0;
echo "<tr class='select'>";
echo "<td align='left'>" . $nameis . "</td>";
echo "<td align='center'>" . $purchaseis = "$" . $amt . "</td>";
echo "</tr>";
$donors[] = $nameis;
}
}
echo "</tbody>";
echo "</table>";
}
?>
</div>
解决方案
$amt = get_post_meta($donation->ID,'_give_payment_total',true)
“true”仅返回指定元键的第一个值,“false”将为您提供元值数组。您可以使用 foreach 迭代返回的数组。
https://developer.wordpress.org/reference/functions/get_post_meta/
编辑:
是的,您需要将其更改为 false,然后您将获得一组值。现在你只得到一个值。
然后迭代数组:
$amt = get_post_meta($donation->ID,'_give_payment_total',false);
foreach ($amt as as $key => $value) {
echo "<tr class='select'>";
echo "<td align='left'>" . $nameis . "</td>";
echo "<td align='center'>" . $purchaseis = "$" . $value . "</td>";
echo "</tr>";
}
代码未经检查,但这是要走的路。关于foreach的一些信息:
https://www.php.net/manual/de/control-structures.foreach.php
编辑 2:如果您想在一行中显示所有捐款:
<div class="donors_info">
<div class="totalenteries"></div>
<?php
$valueid = 2727;
//Get donors based on forms IDs (can be single or multiple forms)
if(function_exists('give_get_payments')) {
$args = array(
'give_forms' => $valueid,
'number' => -1,
);
$donations = give_get_payments( $args );
echo "<table id='dtab'>";
echo "<thead>";
echo "<th align='center'>" . 'Name' . "</th>";
echo "<th align='center'>" . 'Amount' . "</th>";
echo "</thead>";
echo "<tbody>";
$donors = array();
$dtmp=array(); //tmp array
foreach($donations as $donation) {
//Now get donor information from this donation ("customer" aka "donor")
$customer_id = give_get_payment_customer_id( $donation->ID );
$customers = new Give_Customer( $customer_id );
$nameis = $customers->name;
$amt = get_post_meta($donation->ID,'_give_payment_total',false);
$donationAll = 0;
foreach ($amt as $key => $value) {
$donationAll = $donationAll + $value;
}
//Write a tmp array with name as key and donation as value
if(array_key_exists($nameis,$dtmp)) {
//name already exists -> add donation value
$dtmp[$nameis] = $dtmp[$nameis] + $donationAll;
} else {
//name is not in the array -> new array: key name -> donation
$dtmp[$nameis] = $donationAll;
}
$donors[] = $nameis;
}
foreach ($dtmp as $key => $value) {
//iterate the tmp array
echo "<tr class='select'>";
echo "<td align='left'>" . $key . "</td>";
echo "<td align='center'>" . $purchaseis = "$" . $value . "</td>";
echo "</tr>";
}
echo "</tbody>";
echo "</table>";
}
?>
</div>
代码未选中。
问候汤姆
推荐阅读
- java - YAML 映射键读取不正确
- python - CNN Pytorch 错误:输入类型(torch.cuda.ByteTensor)和权重类型(torch.cuda.FloatTensor)应该相同
- javascript - Ag-Grid 行组渲染错误
- function - Julia 模块调用用户定义函数
- javascript - VisualVM v1.4.4 中的 OQL - 获取类的字段名称
- swift - 我将如何动态添加适量的单元格并在其中显示视频
- python - (vowpal wabbit) 处理新上下文的上下文强盗
- java - Spring boot Mybatis 多数据源
- mysql - 如何在 MySQL 中加入 3 个表?
- c# - 在 MVC 控制器中刷新 PartialView