PHP while-цикл не работает с mysql_result - PullRequest
0 голосов
/ 17 июля 2011

У меня есть запрос врача:

// Primary Physician Query
$qPhysician = mysql_query("SELECT * FROM physicians ORDER BY lastName ASC, firstName ASC");
$rowPhysician = mysql_fetch_array($qPhysician);

// State Query for Physician
$idStatePhysician = $rowPhysician['idstate'];
$qStatePhysician = mysql_query("SELECT * FROM states WHERE idstate=$idStatePhysician");
$rowStatePhysician = mysql_fetch_array($qStatePhysician);

// City Query for Physician
$idCityPhysician = $rowPhysician['idcity'];
$qCityPhysician = mysql_query("SELECT * FROM cities WHERE idcities=$idCityPhysician");
$rowCityPhysician = mysql_fetch_array($qCityPhysician);

У меня есть цикл while для отображения всех строк врачей в таблице:

$num = mysql_num_rows($qPhysician);
    $i=0;
    while($i < $num)
        {
        $idphysicians = $rowPhysician['idphysicians'];
        if ($i % 2 == 0){
        echo "<tr class='even' onclick=\"DoNav('physicianUpdate.php?idphysicians=$idphysicians');\">";
        }
        else{
        echo "<tr class='odd' onclick=\"DoNav('physicianUpdate.php?idphysicians=$idphysicians');\">";
        }
        echo "<td>" . mysql_result($qPhysician,$i,"lastName") . "</td>";
        echo "<td>" . mysql_result($qPhysician,$i,"firstName") . "</td>";
        echo "<td>"; 
        if(isset($rowPhysician['idcity'])){echo mysql_result($qCityPhysician,$i,"name");} else{}
        echo "</td>";
        $i++;
        }

Моя проблема: у меня 3 строкиданные из моей таблицы врачей.Каждый из них имеет значение «idcity», отражающее idnumber из моей таблицы City.Однако в 1-й строке данных правильно отображается idcity = Name, а во 2-й и 3-й строке выдается ошибка:

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 1 on MySQL result index 7 in C:\wamp\www\iPOC\physicians.php on line 55

Кроме того, если у меня есть пустое значение для idcity в одной из строк, онотакже выдает ошибку.

Пожалуйста, помогите!Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 17 июля 2011

Проблема в том, что вы используете mysql_result() с односторонним результатом. Правильное решение - использовать вместо этого одну из функций mysql_fetch_*(), проверяя возвращаемое значение в цикле while.

while($row = mysql_fetch_array($qPhysician)) {
   ...
}
0 голосов
/ 17 июля 2011

Что-то вроде этого, вероятно, будет работать лучше:

$qCityPhysician = mysql_query("SELECT * FROM cities WHERE idcities=$idCityPhysician");
$qCityPhysicians = array();
while($row = mysql_fetch_array($qCityPhysician)) {
   $qCityPhysicians[$row['idcity']] = $row['name'];
}
$qPhysician = mysql_query("SELECT * FROM physicians ORDER BY lastName ASC, firstName ASC");
$i=0;
while($row = mysql_fetch_array($qPhysician)) {
    if ($i % 2 == 0) {
        echo "<tr>";
        echo "<td>" . $row['lastName'] . "</td>";
        echo "<td>" . $row['firstName'] . "</td>";
        echo "<td>"; 
        if(isset($row['idcity'])) {
            echo $qCityPhysicians[$row['idcity']];
        }
        echo "</td>";
        $i++;
     }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...