Хотя цикл и mysql_fetch_assoc по одному запросу? - PullRequest
2 голосов
/ 28 февраля 2011

У меня есть веб-страница, которая выполняет запрос MySQL к таблице. У меня есть это, чтобы отразить это в таблице, и это работает как следует, пример:

$query = mysql_query("SELECT * FROM table");

while($row = mysql_fetch_array($query){
   // my table and db stuff echos out here
}

Теперь, используя тот же запрос mysql $ query Я пытаюсь повторить его снова на той же странице, используя тот же запрос внизу, но моя проблема в том, что он не работает.

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

Могу ли я сделать while() и mysql_fetch_assoc только один раз для одного запроса?

UPDATE

Извините, я все еще не понимаю должным образом.

Вот мой код; кто-нибудь может отредактировать это для меня?

(Я не мог поместить теги php в код, чтобы отделить HTML от кода PHP. Приносим извинения за неудобства).

$q = mysql_query("SELECT * FROM table");

<h1> Vote for your favourite extension </h1>

<form method="post" action="<?php echo basename(__file__); ?>">
<table>
<tbody>
    <tr class="odd">
        <td colspan="3" class="cellfeat" style="text-align: center;">Vote for your favourite extension</td>
    </tr>
        <?php
        if(!$q){
            // query failed etc

        } else { // query ok so display form
            while($row = mysql_fetch_array($q)){
                echo '<tr class="odd">';
                echo '<td class="cellfeat"><img src="images/statimages/extensions.gif" alt="Extension Vote Image" /></td>';
                echo '<td class="cellfeat">'.$row['checkbox'].'</td>';
                echo '<td class="cellfeat"><input type="checkbox" name="'.$row['id'].'" value="'.$row['id'].'" /></td>';
                echo '</tr>';
            }
        }
        ?>
</tbody>
</table>
<input type="submit" class="submitcontact" value="Vote" />
</form>

<h1>Extension Statistics</h1>

<table>
    <tbody>
    <tr class="odd">
        <td colspan="3" class="cellfeat" style="text-align: center;">Voting Statistics</td>
    </tr>
            while($row = mysql_fetch_array($q)){
                echo '<tr class="odd">';
                echo '<td class="cellfeat"><img src="images/statimages/extensions.gif" alt="Extension Vote Image" /></td>';
                echo '<td class="cellfeat">'.$row['checkbox'].'</td>';
                echo '<td class="cellfeat">'.$row['count'].'</td>';
                echo '</tr>';
            }
        ?>
    </tbody>
</table>

Ответы [ 2 ]

9 голосов
/ 28 февраля 2011

Единственный правильный путь:
сначала соберите ваши данные в массив

$data = array();
while($row = mysql_fetch_array($query){
   $data[] = $row;
}

затем вызов шаблона
и используйте ваши данные столько раз, сколько пожелаете:

<table>
<? foreach ($data as $row): ?>
<tr>
<td><?=$row['id']?></td>
<td><?=$row['name']?></td>
<? endforeach ?>
</table?>
3 голосов
/ 28 февраля 2011

Если я понимаю, вам нужно использовать эту функцию

http://php.net/manual/en/function.mysql-data-seek.php

для перемещения указателя

...