简体   繁体   中英

PHP - Nested while loop with SQL query

How to make nested SQL loop with SQL queries? It returns only 1 row from table diskuze and all rows from table odpovedi. Thanks

  • Table diskuze : (ID_diskuze(PK), autor_diskuze, predmet_diskuze, text_diskuze, datum_cas_diskuze)

  • Table odpovedi : (ID_diskuze(PK-FK), hloubka_odpovedi, autor_odpovedi, text_odpovedi, datum_cas_odpovedi)

PHP:

<?php $sql = "SELECT ID_diskuze, autor_diskuze, predmet_diskuze, text_diskuze, datum_cas_diskuze
                     FROM diskuze";
$result = mysql_query($sql);

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

    $ID_diskuze = $row['ID_diskuze'];
    $autor_diskuze = $row['autor_diskuze'];
    $predmet_diskuze = $row['predmet_diskuze'];
    $text_diskuze = $row['text_diskuze'];
    $datum_cas_diskuze = $row['datum_cas_diskuze']; ?>

    <p>
        <span style="color:rgb(204,0,0); font-weight:bold; font-size: 20px">OD: <?php echo $autor_diskuze ?></span>
        <span style="color:rgb(0,0,0); font-size: 16px"> (<?php echo $datum_cas_diskuze ?>)</span><br/>
        <span style="color:rgb(0,0,204); font-weight:bold; font-size: 16px">TITULEK: <?php echo $predmet_diskuze ?></span><br/>
        <span style="font-weight:bold;">NAPSAL: </span><?php echo $text_diskuze ?>
    </p>


    <?php $sql = "SELECT hloubka_odpovedi, autor_odpovedi, text_odpovedi, datum_cas_odpovedi
                       FROM odpovedi
                       WHERE ID_diskuze = $ID_diskuze
                       ORDER BY hloubka_odpovedi ASC";

    $result = mysql_query($sql);

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

        $hloubka_odpovedi = $row['hloubka_odpovedi'];
        $autor_odpovedi = $row['autor_odpovedi'];
        $text_odpovedi = $row['text_odpovedi'];
        $datum_cas_odpovedi = $row['datum_cas_odpovedi'];
        $odpovidajici = $autor_odpovedi . " " . $datum_cas_odpovedi . " - " . $text_odpovedi; ?>

        <p>
            <span style="font-weight:bold;">REAKCE:</span> <?php echo $odpovidajici ?>
        </p>
        <?php
    }
}

?> 

I believe you don't need a loop here and convert your both part query using a JOIN like

SELECT o.hloubka_odpovedi, o.autor_odpovedi, o.text_odpovedi, o.datum_cas_odpovedi,
i.ID_diskuze, i.autor_diskuze, i.predmet_diskuze, i.text_diskuze, i.datum_cas_diskuze
                FROM odpovedi o JOIN diskuze i
                ON o.ID_diskuze = i.ID_diskuze
                ORDER BY o.hloubka_odpovedi;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM