Как запустить оператор While внутри оператора While для извлечения значений из базы данных? - PullRequest
1 голос
/ 15 июня 2011

Вот моя функция:

        $result_display = mysql_query("SELECT * FROM Events ORDER BY TimeStamp DESC LIMIT $y, 20");
        $result_comment = mysql_query("SELECT * FROM Comments");


while($row_display = mysql_fetch_array($result_display)){
    echo "<div id='id'" . $row_display['ID'] . " class='eventdiv' data-sort='".$row_display['TimeStamp']."'>".$row_display['Title']." TIME: ".$row_display['TimeStamp']."</div>";

    while($row_comment = mysql_fetch_array($result_comment)){
        echo $row_comment['com_details'];
    }

}

Вывод HTML похож на это:

<div id='id12' class='eventdiv' data-sort='238781>Time: 238781</div>
<div id='id13' class='eventdiv' data-sort='238784>Time: 238784</div>
<div id='id14' class='eventdiv' data-sort='238785>Time: 238785</div>
<div id='id15' class='eventdiv' data-sort='238789>Time: 238789</div>
<div id='id16' class='eventdiv' data-sort='238791>Time: 238791</div>
<div id='id17' class='eventdiv' data-sort='238795>Time: 238795</div>

These are the comment details...

Но я бы хотел, чтобы вывод был таким:

<div id='id12' class='eventdiv' data-sort='238781>Time: 238781</div>

These are the comment details...

<div id='id13' class='eventdiv' data-sort='238784>Time: 238784</div>

These are the comment details...

<div id='id14' class='eventdiv' data-sort='238785>Time: 238785</div>

These are the comment details...

<div id='id15' class='eventdiv' data-sort='238789>Time: 238789</div>

These are the comment details...

<div id='id16' class='eventdiv' data-sort='238791>Time: 238791</div>

These are the comment details...

<div id='id17' class='eventdiv' data-sort='238795>Time: 238795</div>

These are the comment details...

Я думал, что, если у меня есть оператор while внутри оператора while, он будет отображаться как HTML-код выше, но это не так.

Ответы [ 3 ]

1 голос
/ 15 июня 2011

Вам нужно будет выполнить запрос для каждого элемента в первом цикле while. В настоящее время нет ничего, что связывало бы комментарии с каждым событием:

$result_comment = mysql_query("SELECT * FROM Comments WHERE [id]=$id");

1 голос
/ 15 июня 2011

После первого просмотра результатов $ result_comment вам необходимо сбросить его с помощью mysql_data_seek( $result_comment ).Итак:

while($row_display = mysql_fetch_array($result_display)){
    echo "<div id='id'" . $row_display['ID'] . " class='eventdiv' data-sort='".$row_display['TimeStamp']."'>".$row_display['Title']." TIME: ".$row_display['TimeStamp']."</div>";

    while($row_comment = mysql_fetch_array($result_comment)){
        echo $row_comment['com_details'];
    }

    mysql_data_seek( $result_comment );

}
0 голосов
/ 15 июня 2011

@ DemianBrecht, я собираюсь связать две таблицы, которые я еще не сделал.Не нужно создавать ассоциацию, чтобы получить то, что мне нужно - @ Джед, я не уверен, почему, но решение, которое вы предложили, приводит к этой ошибке:

'Wrong parameter count for mysql_data_seek()'

Я выяснил, почему это не такво время работы, вторая функция извлечения должна быть помещена внутри первого оператора while.В противном случае, он просто будет выполнен после завершения:

    $result_display = mysql_query("SELECT * FROM Events ORDER BY TimeStamp DESC LIMIT $y, 20");

while($row_display = mysql_fetch_array($result_display)){
    echo "<div id='id'" . $row_display['ID'] . " class='eventdiv' data-sort='".$row_display['TimeStamp']."'>".$row_display['Title']." TIME: ".$row_display['TimeStamp']."</div>";

    while($row_comment = mysql_fetch_array($result_comment)){

       $result_comment = mysql_query("SELECT * FROM Comments");
       echo $row_comment['com_details'];

    }

}

Достаточно просто.

...