提问人:Shamim Hossain 提问时间:12/1/2022 最后编辑:aynberShamim Hossain 更新时间:12/1/2022 访问量:36
获取本月和本年度尚未提交付款的用户数据 - PHP代码
Fetch user data who haven't submitted yet payment this month and year - PHP code
问:
我是PHP的新手。我正在创建一个项目。在这个项目中,我想获取本月和今年尚未存款/付款的用户的信息。我的代码无法正常工作。我只想显示本月和本年未存钱/付款的人的用户名。 也许需要一个 IF/else 公式,但我不知道。请帮忙。
usename 唯一 见表格
table_name=信用 插入的行,如
usename | 月 | 年 |
---|---|---|
一个 | 十一月 | 2022 |
B | 十一月 | 2022 |
B | 十二月 | 2022 |
用户 A 和 B 都是上月和上年提交付款,本月和当年用户 B 提交付款,但用户 A 不提交付款。我想向用户 A 展示我的接受输出,如下所示
usename | 月 | 年 |
---|---|---|
一个 | 十一月 | 2022 |
<form method="post" accept="" class="row g-3">
<div class="col-lg-4">
<label for="val-select2">Month <span class="text-danger">*</span></label>
<select class="js-select2 form-select form-control" id="val-select2" name="pay_month" style="width: 100%;" required>
<option value="<?php echo date("F")?>" hidden><?php echo date("F")?></option>
<option value="January">January</option>
<option value="February">February </option>
<option value="March">March</option>
<option value="April">April</option>
<option value="May">May</option>
<option value="June">June</option>
<option value="July">July</option>
<option value="August">August</option>
<option value="September">September</option>
<option value="October">October</option>
<option value="November">November</option>
<option value="December">December</option>
</select>
</div>
<div class="col-lg-4">
<label >Year<span class="text-danger">*</span></label>
<input type="text" class="form-control" name="pay_year" placeholder="year" required value="<?php echo date("Y");?>
">
</div>
<div class="col-lg-2">
<label></label>
<button class="form-control btn btn-primary" name="save" type="submit"><i class="fa fa-eye" aria-hidden="true"></i>
View</button>
</div>
</form>
<?php
if (isset($_POST['save'])) {
$sql = "SELECT * FROM credit WHERE NOT (pay_month='" . $_POST['pay_month'] . "' AND pay_year='" . $_POST['pay_year'] . "') ORDER BY username";
if($result = mysqli_query($db, $sql)){
if(mysqli_num_rows($result) > 0){
$count = 0;
while($row = mysqli_fetch_array($result)){
if(mysqli_num_rows($result) > 0)
$count ++;
echo '<tr id="'.$row["id"].'">';
echo '<td class="fw-semibold">'.$count.'
</td>';
echo '<td class="fw-semibold fs-sm text-success"> <a href="single_info.php?name='.$row["usename"].'">'.$row["username"].'</a>
</td>';
echo "</tr>";
}
mysqli_free_result($result);
} else{
echo "No data found.";
}
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($db);
}} ?>
答:
0赞
Brahim Hamdouni
12/1/2022
#1
我认为您必须更改 SQL 以查找所需时间段内的付款数量,并按付款次数为 0 的次数进行过滤。
像这样:
SELECT username, COUNT(*) AS n FROM credit
WHERE month = ? AND year = ? HAVING n=0;
(我在示例中使用了准备好的语句)
评论
select * from credit where username not in (select username from credit where month=? and year=?)