在PHP的一个循环中从不同的行进行多次抓取


Multiple Fetching from different rows in one loop in PHP

对不起,我的英语不好。

这是我在数据库中的表

 course - lecturer - time
 CSS --- John --- 8:00 AM, 2016/01/21, Sunday
 CSS --- John --- 10:00 AM, 2016/01/23, Tuesday
 CSS --- John --- 1:00 PM, 2016/01/25, Thursday
 HTML --- Ben --- 10:00 AM, 2016/01/22, Monday
 HTML --- Ben --- 8:00 AM, 2016/01/23, Tuesday

可以看到,课程和讲师是重复的,但时间在不同的行是不同的。每次我尝试从数据库和视图获取到html页面,它为每一行创建一个表,这是愚蠢的,不专业。

我希望输出是这样的:

    <table border=2>
        <tr>
            <td> course name :  </td> <td colspan=3> css </td>
        </tr>
        <tr>
            <td> lecturer :  </td> <td colspan=3> John </td>
        </tr>
        <tr>
            <td> time :  </td> <td> 8:00 AM, 2016/01/21, Sunday </td> <td> 10:00 AM, 2016/01/23, Tuesday </td> <td> 1:00 PM, 2016/01/25, Thursday </td>
        </tr>
    </table>

我试过了,但我刚刚意识到我对PHP不够好。

这是我的原始PHP代码…

$qry="SELECT * FROM courses";
$results=mysql_query($qry);
if($results)
{
if(mysql_num_rows($results) > 0)
{
while ($rows = mysql_fetch_array($results))
{
echo "<center><table width=400 border=1>
<tr><td><b> Course Name : </b></td><td>". $rows["course"]."</td></tr>
<tr><td><b> Lecturer Name : </b></td><td>". $rows["lecturer"]."</td></tr>
<tr><td><b> Time : </b></td><td>". $rows["time"]."</td></tr>
</center></table><br>";
}
}
else {echo "<center>not available</center>";}
}

你必须替换:

$qry="SELECT * FROM courses";
$results=mysql_query($qry);
if($results)
{
if(mysql_num_rows($results) > 0)
{
while ($rows = mysql_fetch_array($results))
{
echo "<center><table width=400 border=1>
<tr><td><b> Course Name : </b></td><td>". $rows["course"]."</td></tr>
<tr><td><b> Lecturer Name : </b></td><td>". $rows["lecturer"]."</td></tr>
<tr><td><b> Time : </b></td><td>". $rows["time"]."</td></tr>
</center></table><br>";
}
}
else {echo "<center>not available</center>";}
}

$qry="SELECT distinct course as c, (SELECT lecturer from courses where course=c limit 1) as l FROM courses";
$results=mysql_query($qry);
if($results)
{
if(mysql_num_rows($results) > 0)
{    
while ($rows = mysql_fetch_array($results))
{
echo "<center><table width=400 border=1>";
echo "<tr><td><b> Course Name : </b></td><td>". $rows["c"]."</td></tr>
<tr><td><b> Lecturer Name : </b></td><td>". $rows["l"]."</td></tr>
<tr><td><b> Time : </b></td>"
    $qry2="SELECT time FROM courses WHERE courses.course='".$rows['c']."' and courses.lecturer='".$rows['l']."'";
    $results2=mysql_query($qry2);
    if($results2)
    {
    while($rows2 = mysql_fetch_array($results2))
    {
    echo"<td>".$rows2['time']."</td>";
    }
    }
    echo"</tr>";
}
echo "</center></table><br>"
}
else {echo "<center>not available</center>";}
}

这个就可以了。你必须在循环外定义表,这就是为什么你要为每一行分隔表。

希望能有所帮助。

Use this  


 $qry="SELECT * FROM courses";
        $results=mysql_query($qry);
        $table = '<table width=400 border=1><thead><tr><th>Course Name</th><th>Lecturer Name</th><th>Time</th></tr></thead><tbody>';
        if($results)
        {
        if(mysql_num_rows($results) > 0)
        {
        while ($rows = mysql_fetch_array($results))
        {
         $table .= '<tr>'
                   . '<td>' .$rows["course"]. '</td>'
                   . '<td>'  .$rows["lecturer"]. '</td>'
                   . '<td>' .  $rows["time"] . '</td>'
                   . '<tr>';

        }
        }
        else {echo "<tr><td>Data not available</td></tr>";}
        }
$table .= '</tbody>'
       . '</table>';

试试这个SQL:

<?php
$qry = "SELECT DISTINCT lecturer, course, 
(SELECT GROUP_CONCAT(time) FROM lectures WHERE lecturer = L.lecturer) 
AS times FROM lectures L";
$results=mysql_query($qry);
if($results)
{
if(mysql_num_rows($results) > 0)
{
?>
<table>
<?php
while ($rows = mysql_fetch_array($results))
{
echo "<tr><td><b> Course Name : </b></td><td>". $rows["course"]."</td>
<td><b> Lecturer Name : </b></td><td>". $rows["lecturer"]."</td>
<td><b> Times : </b></td><td>". $rows["times"]."</td></tr>";
}
}
else {echo "<center>not available</center>";}
}
?>
</table>

输出:

 lecturer   course  times   
John        CSS           2015-10-15 05:14:00,2015-10-16 09:21:18,2015-10-23 07:15:15
Ben     HTML    2015-10-23 07:19:19,2015-10-30 09:17:18