大家好我试图创建一个交易历史记录,从而获得数据库中的详细信息。
当用户拥有并有效订阅时,详细信息显示完美,但是当吊exp过期时没有显示任何内容并且只显示1行。
我想在历史中显示所有活动或过期的交易。这是我的代码。
Active = 1 expired = 0仅供您参考
<?php
$query = "SELECT * FROM `subscriptions` WHERE `username` = '$username'";
$result = mysqli_query($con, $query) or die(mysqli_error($con));
while ($row = mysqli_fetch_array($result))
{
if ($row['active'] == 1)
{
$status = "Active";
$transid = $row['txn_id'];
$transdate = date('F j, Y',strtotime($row['date']));
$subid = $row['id'];
$payment = $row['payment'];
}
else
{
$status = "Expired";
$transid = $row['txn_id'];
$transdate = date('F j, Y',strtotime($row['date']));
$subid = $row['id'];
$payment = $row['payment'];
}
}
?>
我使用if和else来显示状态是活跃还是过期。
我的HTML代码
<div class="table-responsive">
<table class="table table-striped table-vcenter">
<thead>
<tr>
<th class="text-center">ID</th>
<th class="text-center">PRODUCT</th>
<th class="text-center">STATUS</th>
<th class="text-center">DATE</th>
<th class="text-center">PAYMENT</th>
<th class="text-center">TRANSACTION ID</th>
</tr>
</thead>
<?php
echo'
<tbody class="text-center">
<tr>
<td>'.$subid.'</td>
<td>'.$package.'</td>
<td>'.$status.'</td>
<td>'.$transdate.'</td>
<td>'.$payment.'</td>
<td>'.$transid.'</td>
</tr>
</tbody>';
?>
</table>
</div>
这里有一些上限,例如我想要显示这个订阅仍然有效或不是因为显然这是一个历史
active subscription 问题是,如果用户订阅过期,则不会显示在历史记录中,只显示最后一个
到期时答案 0 :(得分:1)
我的版本:)
<强> PHP 强>
$query = "SELECT * FROM `subscriptions` WHERE `username` = ?";
$queryStmt = $con->prepare( $query );
if ( $queryStmt )
{
$queryStmt->bind_param( "s", $username ); // <-- This prevents SQL injection and may be handy for executing the query several time more efficiently
$queryStmt->execute();
$queryStmt->bind_result( $active, $transid, $date, $subid, $payment, $package ); // <-- the order must match the order of the fields in the $query
$rows = []; // <-- load here the content fo the DB rows
while( $queryStmt->fetch() )
{
// Transform needed variables
$status = ( $active == 1 ) ? "Active" : "Expired";
$transdate = date( 'F j, Y', strtotime( $date ) );
$rows[] = compact( 'satus', 'transid', 'transdate', 'subid', 'payment', 'package' );
}
$queryStmt->close();
}
<强> HTML 强>
<div class="table-responsive">
<table class="table table-striped table-vcenter">
<thead>
<tr>
<th class="text-center">ID</th>
<th class="text-center">PRODUCT</th>
<th class="text-center">STATUS</th>
<th class="text-center">DATE</th>
<th class="text-center">PAYMENT</th>
<th class="text-center">TRANSACTION ID</th>
</tr>
</thead>
<tbody class="text-center">
<?php foreach( $rows as $row ) : ?>
<tr>
<td><?php echo $row['subid'] ?></td>
<td><?php echo $row['package'] ?></td>
<td><?php echo $row['status'] ?></td>
<td><?php echo $row['transdate'] ?></td>
<td><?php echo $row['payment'] ?></td>
<td><?php echo $row['transid'] ?></td>
</tr>
<?php endforeach; ?>
</tbody>
?>
</table>
</div>
答案 1 :(得分:0)
您最初可以将数据库值设置为array
PHP代码
<?php
$query = "SELECT * FROM subscriptions sub LEFT JOIN package pack ON (pack.id=sub.package) WHERE sub.username = '$username'";
$result = mysqli_query($con, $query) or die(mysqli_error($con));
$tableArray = array();
$counter = 0;
while ($row = mysqli_fetch_array($result))
{
$tableArray[$counter]['status'] = $row['active'] == 1 ? 'Active' : 'Expired';
$tableArray[$counter]['transid'] = $row['txn_id'];
$tableArray[$counter]['transdate'] = date('F j, Y',strtotime($row['date']));
$tableArray[$counter]['subid'] = $row['id'];
$tableArray[$counter]['payment'] = $row['payment'];
$counter++;
}
?>
现在将此数组访问到html部分&amp;通过foreach
<强> HTML 强>
<div class="table-responsive">
<table class="table table-striped table-vcenter">
<thead>
<tr>
<th class="text-center">ID</th>
<th class="text-center">PRODUCT</th>
<th class="text-center">STATUS</th>
<th class="text-center">DATE</th>
<th class="text-center">PAYMENT</th>
<th class="text-center">TRANSACTION ID</th>
</tr>
</thead>
<tbody class="text-center">
<?php foreach($tableArray as $row) {?>
<tr>
<td> <?php echo $row['id'] ?></td>
<td><?php echo $row['package'] ?></td>
<td><?php echo $row['status'] ?></td>
<td><?php echo $row['transdate'] ?></td>
<td><?php echo $row['payment'] ?></td>
<td><?php echo $row['transid'] ?></td>
</tr>
<?php } ?>
</tbody>
?>
</table>
</div>
在HTML中,$row['package']
将是未定义的,您需要从数据库中获取它,如果这是数据库中的字段。你的问题没有这个领域。请同时包含它