在显示时防止重复名称或重新输入名称

时间:2014-09-14 07:22:03

标签: php mysql sql

编辑:可以查询吗?我有2张桌子。

tithing table
tithings.MarrID = FK to Marriage table
tithings.Tithing_ID PK

tithingspayment table
tithingspayment.TP_ID = PK
tithingspayment.Tithing_ID = FK to tithings table "Tithing_ID"
Paid_Amount 
Paid_Month_Year = Date

Marr_ID | Tithing_ID | TP_ID | Tithing_ID | Paid_Amount | Paid_Month_Year | TP_ID | Tithing_ID | Paid_Amount | Paid_Month_Year | 
  1     |     2      |   5   |     2      |     10.00   |    Jan-2014     |   3   |      2     |     10.00   |     Feb-2014    |

对不起长码;我想问的是,我不想在我的表格中显示相同的名字:

<?php

$con=mysqli_connect("localhost","root","","RMS");

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; }; 
$start_from = ($page-1) * 30; 

$sql = "SELECT * 
FROM tithings
INNER JOIN marriage ON tithings.Marr_ID = marriage.MarrID
INNER JOIN tithings_payment ON tithings_payment.Tithing_ID = tithings.Tithing_ID WHERE YEAR( STR_TO_DATE( Dateregistered,  '%Y' ) ) <= $year LIMIT $start_from, 30"; 
$result = mysqli_query($con,$sql);






echo "<div class='datagrid'><table>
<thead><tr>
<th>Family Name</th>
<th>Jan</th>
<th>Feb</th>
<th>Mar</th>
<th>Apr</th>
<th>May</th>
<th>June</th>
<th>July</th>
<th>Aug</th>
<th>Sep</th>
<th>Oct</th>
<th>Nov</th>
<th>Dec</th>
<th>Operations</th>
</tr></thead>";

while($row = mysqli_fetch_array($result))
  {

$id = $row['Tithing_ID'];
echo "<tbody><tr>";
$MonthRegistered = date("F", strtotime($row['Dateregistered']));
$YearRegistered = date("Y", strtotime($row['Dateregistered']));

$PaidMonthYear = $row['Paid_Month_Year'];
$PaidAmount = $row['Paid_Amount'];


$January = date("Y-m", strtotime($row['Paid_Month_Year']));
if($January == "$year-01")
{$January = $row['Paid_Amount'];}
else{$January = 0;}

$February = date("Y-m", strtotime($row['Paid_Month_Year']));
if($February == "$year-02")
{$February = $row['Paid_Amount'];}
else{$February = 0;}

$March = date("Y-m", strtotime($row['Paid_Month_Year']));
if($March == "$year-03")
{$March = $row['Paid_Amount'];}
else{$March = 0;}

$April = date("Y-m", strtotime($row['Paid_Month_Year']));
if($April == "$year-04")
{$April = $row['Paid_Amount'];}
else{$April = 0;}

$May = date("Y-m", strtotime($row['Paid_Month_Year']));
if($May == "$year-05")
{$May = $row['Paid_Amount'];}
else{$May = 0;}

$June = date("Y-m", strtotime($row['Paid_Month_Year']));
if($June == "$year-06")
{$June = $row['Paid_Amount'];}
else{$June = 0;}

$July = date("Y-m", strtotime($row['Paid_Month_Year']));
if($July == "$year-07")
{$July = $row['Paid_Amount'];}
else{$July = 0;}

$August = date("Y-m", strtotime($row['Paid_Month_Year']));
if($August == "$year-08")
{$August = $row['Paid_Amount'];}
else{$August = 0;}

$September = date("Y-m", strtotime($row['Paid_Month_Year']));
if($September == "$year-09")
{$September = $row['Paid_Amount'];}
else{$September = 0;}

$October = date("Y-m", strtotime($row['Paid_Month_Year']));
if($October == "$year-10")
{$October = $row['Paid_Amount'];}
else{$October = 0;}

$November = date("Y-m", strtotime($row['Paid_Month_Year']));
if($November == "$year-11")
{$November = $row['Paid_Amount'];}
else{$November = 0;}

$December = date("Y-m", strtotime($row['Paid_Month_Year']));
if($December == "$year-12")
{$December = $row['Paid_Amount'];}
else{$December = 0;}

if ($YearRegistered <= $year)
{$FamilyHead = $row['FName_Groom']. ", " . $row['LName_Groom'];

$operation = "<td class=operations>" . "<a class='detail' href='../record_detail.php?id=$id'>Details</a>&nbsp;&nbsp;|&nbsp;&nbsp<a class='pay' href='payment.php?id=$id'>Pay</a>&nbsp;&nbsp;|&nbsp;&nbsp<a class='edit' href='../record_edit.php?id=$id'>Edit</a></td>";
}else{
$FamilyHead = "<style>
tbody{
display:none;
}
</style>";
$operation = "";
}


echo "<td>" . $FamilyHead ."</td>";
echo "<td>" . $January . "</td>";
echo "<td>" . $February . "</td>";
echo "<td>" . $March ."</td>";
echo "<td>" . $April . "</td>";
echo "<td>" . $May . "</td>";
echo "<td>" . $June . "</td>";
echo "<td>" . $July ."</td>";
echo "<td>" . $August . "</td>";
echo "<td>" . $September . "</td>";
echo "<td>" . $October ."</td>";
echo "<td>" . $November . "</td>";
echo "<td>" . $December . "</td>";
echo $operation;

  }

什一税(表)

Marr_ID(FK) | Tithing_ID (PK) | Dateregistered | Pledge | Barangay  | Address | 
      5     |        1        | Sept, 13 2014  | 15.00  | Barangay1 | Address |
      6     |        2        |  Jan, 13 2014  | 15.00  | Barangay1 | Address |

婚姻(表格)

MarrID (PK) | FName_Groom | LName_Groom | MName_Groom | 
 5          |    Name(5)  |   LName(5)  |   MName(5)  |
 6          |    Name(6)  |   LName(6)  |   MName(6)  |

Tithing_payment(表)

Tithing_P_ID(PK) | Tithing_ID(FK) | Payment_Date_Received | Paid_Amount | Paid_Month_Year |
        1        |        1       |     Sept, 13 2014     |     15.00   |   Sept,01 2014  |
        2        |        1       |     Sept, 13 2014     |     15.00   |    Oct,01 2014  |
        3        |        2       |     Sept, 13 2014     |     15.00   |    Jan,01 2014  |
        4        |        2       |     Sept, 13 2014     |     15.00   |    Feb,01 2014  |

我的查询声明

$sql = "SELECT * 
FROM tithings
INNER JOIN marriage ON tithings.Marr_ID = marriage.MarrID
INNER JOIN tithings_payment ON tithings_payment.Tithing_ID = tithings.Tithing_ID WHERE YEAR( STR_TO_DATE( Dateregistered,  '%Y' ) ) <= $year LIMIT $start_from, 30"; 

Paid_Month_Year = Month(Jan-Dec)我使用PHP if else语句

结果就是这样。

Family Name |   Jan   |   Feb   | Mar | Apr | May | June | July | Aug |   Sep   |   Oct   | Nov | Dec |
    Name(5) |    0    |    0    |  0  |  0  |  0  |   0  |   0  |  0  |  15.00  |    0    |  0  |  0  |
    Name(5) |    0    |    0    |  0  |  0  |  0  |   0  |   0  |  0  |    0    |  15.00  |  0  |  0  |
    Name(6) |  15.00  |    0    |  0  |  0  |  0  |   0  |   0  |  0  |    0    |    0    |  0  |  0  |
    Name(6) |    0    |  15.00  |  0  |  0  |  0  |   0  |   0  |  0  |    0    |    0    |  0  |  0  |

注意:我试过Distinct In查询无法正常工作。

我希望我的输出看起来像这样;

Family Name |   Jan   |   Feb   | Mar | Apr | May | June | July | Aug |   Sep   |   Oct   | Nov | Dec |
    Name(5) |    0    |    0    |  0  |  0  |  0  |   0  |   0  |  0  |  15.00  |  15.00  |  0  |  0  |
    Name(6) |  15.00  |  15.00  |  0  |  0  |  0  |   0  |   0  |  0  |    0    |    0    |  0  |  0  |

1 个答案:

答案 0 :(得分:0)

这样的东西应该有效,你必须对你在group语句中没有使用的列做些什么。在你的情况下,采用SUM是有意义的,因为有人可以在同一个月支付两次,也可以在另一个支付。

SELECT
 Family_Name,
 SUM(Jan),
 SUM(Feb)
 ....
 SUM(Dec) 
FROM
 tithings
INNER JOIN marriage ON tithings.Marr_ID = marriage.MarrID
INNER JOIN tithings_payment ON tithings_payment.Tithing_ID = tithings.Tithing_ID
WHER
 YEAR( STR_TO_DATE( Dateregistered,  '%Y' ) ) <= $year
GROUP BY
 Family_Name
LIMIT $start_from, 30