1

while{ while{}} ループがある場合、MYSQL データベースのすべてのデータが表示されないことに気付きました...

これがPHPです(これは動作するコードです...)

<?php
$conn = mysql_connect("localhost","xfiddlec_user","public");
mysql_select_db("xfiddlec_max");
mysql_set_charset("UTF8", $conn);
?>

<script>
 $(function() 
 {
    var icons = 
    {
        header: "ui-icon-circle-arrow-e",
        activeHeader: "ui-icon-circle-arrow-s"
    };
    $( "#dam" ).accordion({
        icons: icons,
        heightStyle: "content",
        collapsible: true
    });
 });
</script>
<?php
        $construct ="SELECT * FROM Noutati";

        $constructaug ="SELECT * from Noutati WHERE MONTH(DataIntroducere) = 8 AND YEAR(DataIntroducere) = YEAR(CURDATE())";
        $run = mysql_query($construct) or die(mysql_error());
        $runaug = mysql_query($constructaug) or die(mysql_error());
        $foundnum = mysql_num_rows($run);
        $foundnumaug = mysql_num_rows($runaug);

    if ($foundnum==0)
    {
        echo "Nu avem noutăți!";
    }
    else
    {
        echo"<div id='dam'>";


        while($runrows = mysql_fetch_assoc($runaug) )
        {

            echo"
            <h3>August 2013</h3>
            <div><br>";
                while($runrows = mysql_fetch_assoc($runaug))
                {
                    $Luna = $runrows ['Luna'];
                    $Ziua = $runrows ['Ziua'];
                    $Mesaj = $runrows ['Mesaj'];
                    echo "
                    <table class='noutatitabel'>
                        <tr>
                            <td class='faramargini'>
                                <div class='data'>
                                    <div class='luna'>$Luna</div>
                                    <div class='ziua'>$Ziua</div>
                                </div>
                            </td>
                            <td class='albastru'>$Mesaj
                            </td>
                        </tr>
                    </table><br>";                      
                }
            echo"
            <br><hr><br></div>";
        }


        echo"</div>";
    }

?>

データベースには 6 行が含まれています。

上記のコードを実行すると、アコーディオン メニューが表示されますが、そのデータベースの 2 行のみが表示され (特定の月 - 1 行目は表示されません)、問題がどこにあるのかわかりません。最初の while ループを削除すると、クエリは 3 行を表示します。私はこれのためのフィドルも持っており、ここで見つけることができます。

私は何か間違ったことをした?これに遭遇したことがありますか?どうすればこの問題を解決できますか?

ありがとうございました。

4

5 に答える 5

2

なぜこの 2 つのループがあるのでしょうか。どちらも同じ mysql 結果リソースを使用しているため、互いに干渉しています。

私はあなたがこのようなことをしたいと思います:

if(mysql_num_rows($runaug) > 0 )
    {

        echo"
        <h3>August 2013</h3>
        <div><br>";
            while($runrows = mysql_fetch_assoc($runaug))
            {
于 2013-08-29T10:22:10.190 に答える
1

while を1 つだけ使用するようにコードを変更します。

else 
{
    echo"<div id='dam'>";

    if($foundnumaug)
      echo"<h3>August 2013</h3><div><br>";

      while($runrows = mysql_fetch_assoc($runaug) )
      {
          $Luna = $runrows ['Luna'];
          $Ziua = $runrows ['Ziua'];
          $Mesaj = $runrows ['Mesaj'];
          echo "
          <table class='noutatitabel'>
            <tr>
              <td class='faramargini'>
                <div class='data'>
                  <div class='luna'>$Luna</div>
                  <div class='ziua'>$Ziua</div>
                </div>
              </td>
              <td class='albastru'>$Mesaj
              </td>
            </tr>
          </table><br>";            
      }

      echo"<br><hr><br></div>";
    }

    echo"</div>";
}

問題の理由は、最初のwhileが最初の行をフェッチし、内部データ ポインターを次の行に移動することです。2 番目のwhileは、残りのすべての行をフェッチします。

于 2013-08-29T10:24:50.677 に答える
0

まず、改善された mysql 拡張機能を使用する必要があります。mysqli

その後、同じループを正確にしたくないと確信しているので、それらを修正してください。おそらくそこでデータが失われています。

于 2013-08-29T10:22:16.893 に答える