Php 如何使用foreach循环?

Php 如何使用foreach循环?,php,mysql,mysqli,Php,Mysql,Mysqli,我有两张桌子 TabelAnunturi idAnunta |DataInterval |Denumire |Moderatori |Detalii 2 |text |text |text |text 2 |text |text |text |text 3 |text |text |text

我有两张桌子

TabelAnunturi

idAnunta    |DataInterval   |Denumire   |Moderatori |Detalii
2           |text           |text       |text       |text
2           |text           |text       |text       |text
3           |text           |text       |text       |text
3           |text           |text       |text       |text

我有一个查询,它从两个表中获取连接为ON的数据

以及一个脚本,用于检查查询是否有结果,如果有,则显示结果

echo "
<div class='noutati'>
    <table class='dataanunturi'>
        <tr>
            <td class='data'>{$runrows ['Data']}</td>
            <td class='subiect'>Subiect:</td>
            <td>{$runrows ['Subiect']}</td>
        </tr>
    </table>
    {$runrows ['Anunt']} ";

    while($runrowstabelanunturi = mysql_fetch_assoc($runtabelanunturi))
    {
        $DataInterval = $runrowstabelanunturi ['DataInterval'];
        $Denumire = $runrowstabelanunturi ['Denumire'];
        $Moderatori = $runrowstabelanunturi ['Moderatori'];
        $Detalii = $runrowstabelanunturi ['Detalii'];
        echo"
        <br>
        <br>
        <table class=\"anunturi\">
            <tr>
                <th class=\"dataanunturi\">Dată / Interval orar</th>
                <th class=\"denumire\">Denumire</th>
                <th class=\"moderatori\">Moderatori</th>
                <th>Detalii</th>
            </tr>";                             

            echo"
            <tr>
                <td>$DataInterval</td>
                <td>$Denumire</td>
                <td>$Moderatori</td>
                <td>$Detalii</td>
            </tr>";

        echo"
        </table>";
    }
echo"
</div>";

问题是,如果TabelAnunturi表中有多个具有相同id的行,则会为TabelAnunturi表中的每一行显示表头。如果我在表的行之间移动WHILE语句,无论查询是否有结果,都将显示表头。。。我不能使用while{{}}循环。。。我认为我必须使用foreach循环,但如何使用呢?

只将获取的数据放在while循环中

if(mysql_num_rows($runtabelanunturi) > 0) {
 echo "<table class=\"anunturi\">
        <tr>
            <th class=\"dataanunturi\">Dată / Interval orar</th>
            <th class=\"denumire\">Denumire</th>
            <th class=\"moderatori\">Moderatori</th>
            <th>Detalii</th>
        </tr>";        
while($runrowstabelanunturi = mysql_fetch_assoc($runtabelanunturi))
{
    $DataInterval = $runrowstabelanunturi ['DataInterval'];
    $Denumire = $runrowstabelanunturi ['Denumire'];
    $Moderatori = $runrowstabelanunturi ['Moderatori'];
    $Detalii = $runrowstabelanunturi ['Detalii'];
    echo"<tr>
            <td>$DataInterval</td>
            <td>$Denumire</td>
            <td>$Moderatori</td>
            <td>$Detalii</td>
        </tr>";
}
 echo"
    </table>";
}

您在每个循环中打印整个表,这就是问题所在。试试这个。希望它能起作用。

问题的答案:如何使用foreach循环

我应该在我的代码中放置一个while循环,这是一个确定的离题问题。您的echo语句将折磨您的服务器,不要重复太多html@YourCommonSense我已经编辑了这个问题。。。现在是ontopic吗?但是如果我这样做,正如我之前所说的,表的标题将显示,并且我希望它仅在有结果的情况下显示…然后首先检查获取的行数。如果你希望打印每个记录的标题,那么将其放入循环中。再次阅读问题。。。通常我不希望在没有结果的情况下显示表格,但如果有结果,则标题应仅显示一次,然后显示结果。如果我按你的方式做,不管是否有结果,标题都会显示出来…我有这个If条件。。。但是我有这个代码,上面的代码在另一个循环中,一个foreach循环,它使表头显示在另一个地方,因为查询中有可用的结果。。。很难理解explain@ionvoinescu你的问题不好。只需将答案标记为答案。
echo "
<div class='noutati'>
    <table class='dataanunturi'>
        <tr>
            <td class='data'>{$runrows ['Data']}</td>
            <td class='subiect'>Subiect:</td>
            <td>{$runrows ['Subiect']}</td>
        </tr>
    </table>
    {$runrows ['Anunt']} ";

    while($runrowstabelanunturi = mysql_fetch_assoc($runtabelanunturi))
    {
        $DataInterval = $runrowstabelanunturi ['DataInterval'];
        $Denumire = $runrowstabelanunturi ['Denumire'];
        $Moderatori = $runrowstabelanunturi ['Moderatori'];
        $Detalii = $runrowstabelanunturi ['Detalii'];
        echo"
        <br>
        <br>
        <table class=\"anunturi\">
            <tr>
                <th class=\"dataanunturi\">Dată / Interval orar</th>
                <th class=\"denumire\">Denumire</th>
                <th class=\"moderatori\">Moderatori</th>
                <th>Detalii</th>
            </tr>";                             

            echo"
            <tr>
                <td>$DataInterval</td>
                <td>$Denumire</td>
                <td>$Moderatori</td>
                <td>$Detalii</td>
            </tr>";

        echo"
        </table>";
    }
echo"
</div>";
if(mysql_num_rows($runtabelanunturi) > 0) {
 echo "<table class=\"anunturi\">
        <tr>
            <th class=\"dataanunturi\">Dată / Interval orar</th>
            <th class=\"denumire\">Denumire</th>
            <th class=\"moderatori\">Moderatori</th>
            <th>Detalii</th>
        </tr>";        
while($runrowstabelanunturi = mysql_fetch_assoc($runtabelanunturi))
{
    $DataInterval = $runrowstabelanunturi ['DataInterval'];
    $Denumire = $runrowstabelanunturi ['Denumire'];
    $Moderatori = $runrowstabelanunturi ['Moderatori'];
    $Detalii = $runrowstabelanunturi ['Detalii'];
    echo"<tr>
            <td>$DataInterval</td>
            <td>$Denumire</td>
            <td>$Moderatori</td>
            <td>$Detalii</td>
        </tr>";
}
 echo"
    </table>";
}