如何显示不匹配的mysql结果

时间:2013-04-13 13:28:22

标签: php mysql

我正在尝试创建学费收费系统

我在phpmyadmin中创建两个表,一个是入场,第二个是费用

1.admission 当我在入学表格中填写所有细节时,我创建入学php表格

2.fees 我在费用页面中创建了同样的东西

入学表中的

包含在我们学校学习的所有学生信息

和费用表中支付当月费用的学生的所有信息

但现在我想要学生费用报告谁有薪,谁没有支付费用

此代码仅显示付费学生报告

但我希望结果是付费和谁没有报酬我怎么能这样做

请帮我解决这个问题

<?php
    $con = mysql_connect("localhost","root","");
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("student", $con);

    echo "<div id='non-printable'><table class='sortable' border='1' cellpadding='10'>";
    echo "<tr> <th>No</th> <th>Name</th><th>Date</th><th>GRN</th> <th>Reference</th><th>Class</th><th>Roll No</th><th>Fees</th></tr>";

    // get results1 from database
    $result1 = mysql_query("SELECT fees.id,fees.name,fees.date,fees.grn,fees.reference,fees.class,fees.rollno,fees.fees, admission.mothername "." FROM fees, admission ". " WHERE fees.name = admission.name AND fees.date BETWEEN '2013-04-01' AND '2013-04-14' AND fees.class='6' order by class ASC");
    while($row = mysql_fetch_array($result1))
    {
        // echo out the contents of each row into a table
        echo "<tr>";
        echo '<td>' . $row['id'] . '</td>';
        echo '<td>' . $row['name'] . '</td>';
        echo '<td>' . $row['date'] . '</td>';
        echo '<td>' . $row['grn'] . '</td>';
        echo '<td>' . $row['reference'] . '</td>';
        echo '<td>' . $row['class'] . '</td>';
        echo '<td>' . $row['rollno'] . '</td>';
        echo '<td>' . $row['fees'] . '</td>';
        echo '<td>' . $row['mothername'] . '</td>';
        echo "</tr>"; 

        //Increment the value of the Total_total variable
        //by the salary value of one row till the while loop finishes
        $Total_fees=$Total_fees+$row['fees'];
    }

    echo "<tr>";
    echo '<td>Total</td>';
    echo '<td></td>';
    echo '<td></td>';
    echo '<td></td>';
    echo '<td></td>';
    echo '<td></td>';
    echo '<td></td>';
    echo '<td>' . $Total_fees .'</td>';
    echo "</tr>";  

    // close table>
    echo "</table>";


    mysql_close($con);
?>

2 个答案:

答案 0 :(得分:0)

$result1 = mysql_query("SELECT fees.id, fees.name, fees.date, fees.grn, 
   fees.reference, fees.class, fees.rollno, fees.fees, admission.mothername ".
      "FROM admission LEFT JOIN fees ON fees.name = admission.name". 
    "WHERE fees.date BETWEEN '2013-04-01' AND '2013-04-14' AND fees.class='6' 
    order by class ASC");

使用左连接,这样您就可以获得所有的许可表行和相应的行 费用表。这样你就可以得到费用表的空白数据。

答案 1 :(得分:0)

UPDATED

<?php
    echo "<div id='non-printable'><table class='sortable' border='1' cellpadding='10'>";
    echo "<tr> <th>No</th> <th>Name</th><th>Date</th><th>GRN</th> <th>Reference</th><th>Class</th><th>Roll No</th><th>Fees</th></tr>";

    $dbserver = 'localhost'; 
    $dblogin  = 'root';
    $dbpassword = '';  
    $dbname = 'student';

    //opening connection
    $mysqli = new mysqli($dbserver, $dblogin, $dbpassword, $dbname);
    if (mysqli_connect_errno()) 
    {
        printf("Connection failed: %s\n", mysqli_connect_error());
        exit();
    }

    //opening connection
    $result = $mysqli->query("SELECT `name`, `mothername` FROM `admission` WHERE `class` = '6' ORDER BY `name` ASC") or die($mysqli->error.__LINE__);
    while($student = $result->fetch_assoc())
    {
        $subresult = $mysqli->query("SELECT * FROM `fees` WHERE `name` = '".$student['name']."' AND `date` BETWEEN '2013-04-01' AND '2013-04-14'") or die($mysqli->error.__LINE__);
        if($row = $subresult->fetch_assoc())
        {
            echo "<tr>";
            echo '<td>Student</td>';
            echo '<td>' . $row['id'] . '</td>';
            echo '<td>' . $row['name'] . '</td>';
            echo '<td>' . $row['date'] . '</td>';
            echo '<td>' . $row['grn'] . '</td>';
            echo '<td>' . $row['reference'] . '</td>';
            echo '<td>' . $row['class'] . '</td>';
            echo '<td>' . $row['rollno'] . '</td>';
            echo '<td>' . $row['fees'] . '</td>';
            echo '<td>' . $student['mothername'] . '</td>';
            echo "</tr>"; 

        }
        else
        {
            echo "<tr>";
            echo '<td>' . $student['name'] . '</td>';
            echo '<td> didn\'t pay any fee.</td>';
            echo "</tr>";
        }
    }
            echo '</table>';

mysqli_close($mysqli); 
?>