[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Цикл внутри цикла
ReidG
Мозги вытекли через уши, и это печалит.
Выкладываю код тут, вдруг кто то увидит где я стормозил или продолжаю тормозить, в виду непонимания. Помогите.

<?php
// Скрипт вывода оценок студента
if (!isset($id))
{
include("exe/404.php");
}
else
{
include ('config_news.php');
$result = mysql_query("SELECT name,kurs,balls,id,faculty FROM anketa WHERE id = \"$id\" ");
$idstud = $myrow["id"];
$myrow = mysql_fetch_array($result);
echo "<h3 align='center'>ЛИЧНОЕ ДЕЛО № ".$myrow["id"]."</h3>";
echo "<p style='margin:0'><strong>Имя студента:</strong> <i>".$myrow["name"]."</i></p>";
$ff = $myrow['faculty'];
switch ($ff)
{
case "a":
$faculty = "<strong>Факультет:</strong> <em>Алхимии</em>";
break;
case "b":
$faculty = "<strong>Факультет:</strong> <em>Боевой магии</em>";
break;
case "o":
$faculty = "<strong>Факультет:</strong> <em>Оккультизма</em>";
break;
case "i":
$faculty = "<strong>Факультет:</strong> <em>Истории магии</em>";
break;
}
echo "<p style='margin:0'>".$faculty.", <i>".$myrow["kurs"]."</i> <strong>курс</strong></p>";
$name = $myrow["name"];
$resultp = mysql_query("SELECT SUM(ball) FROM a_balls WHERE name = \"$name\" ");
list($sballs) = mysql_fetch_array($resultp);
echo "<p style='margin:0'><strong>Общее количество баллов:</strong> <em>$sballs</em></p>";
echo "<center><font size=\"+1\">Текущие оценки</font></center>";

$kurs = $myrow["kurs"];

$result_t = mysql_query("SELECT DISTINCT subj,idpredm FROM a_timetable WHERE kurs = \"$kurs\" ORDER BY subj ");
$myrow_t = mysql_fetch_array($result_t);
echo "<table width=100%>";
echo "<tr>";
echo "<td width='25%' align='center' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">Лекция</td>";
echo "<td width='15%' align='center' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">Оценка</td>";
echo "<td width='60%' align='center' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">Комментарий</td>";
echo "</tr>";
echo "</table>";
do
{
$name_s = $myrow_t['subj']; // Название предмета
$id_s = $myrow_t['idpredm']; // Индификатор предмета
echo "<center><font color='#513a92'><b>$name_s</b></font></center>";


$result_a = mysql_query("SELECT lek,ball,komment FROM a_balls WHERE subj = $id_s AND idstud=$id");
$myrow_a = mysql_fetch_array($result_a);
while ($myrow_a = mysql_fetch_array($result_a));
{
echo "<table width=100%>";
echo "<tr>";
echo "<td width='25%' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">".$myrow_a['lek']."</td>";
echo "<td width='15%' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">".$myrow_a['ball']."</td>";
echo "<td width='60%' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">".$myrow_a['komment']."</td>\n";
echo "</tr>";
echo "</table>";
}

}

while ($myrow_t = mysql_fetch_array($result_t));



}
?>


Основной вопрос по поводу вложенного цикла. Предметы выводит, не выводит лекции. Печалит. Объясните в чем причина.



Спустя 14 минут, 34 секунды (16.03.2012 - 09:40) ReidG написал(а):
Посидел, подумал. Исправил немного. Теперь во втором цикле выводит только информацию только по последнему предмету.

<?php
// Скрипт вывода оценок студента
if (!isset($id))
{
include("exe/404.php");
}
else
{
include ('config_news.php');
$result = mysql_query("SELECT name,kurs,balls,id,faculty FROM anketa WHERE id = \"$id\" ");
$idstud = $myrow["id"];
$myrow = mysql_fetch_array($result);
echo "<h3 align='center'>ЛИЧНОЕ ДЕЛО № ".$myrow["id"]."</h3>";
echo "<p style='margin:0'><strong>Имя студента:</strong> <i>".$myrow["name"]."</i></p>";
$ff = $myrow['faculty'];
switch ($ff)
{
case "a":
$faculty = "<strong>Факультет:</strong> <em>Алхимии</em>";
break;
case "b":
$faculty = "<strong>Факультет:</strong> <em>Боевой магии</em>";
break;
case "o":
$faculty = "<strong>Факультет:</strong> <em>Оккультизма</em>";
break;
case "i":
$faculty = "<strong>Факультет:</strong> <em>Истории магии</em>";
break;
}
echo "<p style='margin:0'>".$faculty.", <i>".$myrow["kurs"]."</i> <strong>курс</strong></p>";
$name = $myrow["name"];
$resultp = mysql_query("SELECT SUM(ball) FROM a_balls WHERE name = \"$name\" ");
list($sballs) = mysql_fetch_array($resultp);
echo "<p style='margin:0'><strong>Общее количество баллов:</strong> <em>$sballs</em></p>";
echo "<br /><center><font size=\"+1\"><strong>Текущие оценки</strong></font></center> <br />";

$kurs = $myrow["kurs"];

$result_t = mysql_query("SELECT DISTINCT subj,idpredm FROM a_timetable WHERE kurs = \"$kurs\" ORDER BY subj ");
$myrow_t = mysql_fetch_array($result_t);
echo "<table width=100%>";
echo "<tr>";
echo "<td width='25%' align='center' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">Лекция</td>";
echo "<td width='15%' align='center' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">Оценка</td>";
echo "<td width='60%' align='center' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">Комментарий</td>";
echo "</tr>";
echo "</table>";
do
{
$name_s = $myrow_t['subj']; // Название предмета
$id_s = $myrow_t['idpredm']; // Индификатор предмета
echo "<center><font color='#513a92'><b>$name_s</b></font></center>";
$result_a = mysql_query("SELECT lek,ball,komment FROM a_balls WHERE subj = $id_s AND idstud=$id");
$myrow_a = mysql_fetch_array($result_a);
while ($myrow_a = mysql_fetch_array($result_a))
{
echo "<table width=100%>";
echo"<tr>\n
<td width='25%' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">$myrow_a[lek]</td>\n
<td width='15%' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">$myrow_a[ball]</td>\n
<td width='60%' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">$myrow_a[komment]</td>\n
</tr>\n";
echo "</table>";
}
}

while ($myrow_t = mysql_fetch_array($result_t));



}
?>

Спустя 13 минут, 18 секунд (16.03.2012 - 09:54) Visman написал(а):
Зачем?
            $myrow_a = mysql_fetch_array($result_a);
while ($myrow_a = mysql_fetch_array($result_a))

Спустя 7 минут, 13 секунд (16.03.2012 - 10:01) ReidG написал(а):
Первый цикл выводит название предметов, которые на данный момент есть в расписании. Второй - домашние работы, которые сданы по этому предмету.

Спустя 2 минуты, 54 секунды (16.03.2012 - 10:04) Visman написал(а):
В том куске кода по которому я задал вопрос нет двух циклов. Там двойная выборка из результата.

Спустя 7 минут, 54 секунды (16.03.2012 - 10:12) ReidG написал(а):
Изменил. Теперь половину предметов игнорирует.

<?php
// Скрипт вывода оценок студента
if (!isset($id))
{
include("exe/404.php");
}
else
{
include ('config_news.php');
$result = mysql_query("SELECT name,kurs,balls,id,faculty FROM anketa WHERE id = \"$id\" ");
$idstud = $myrow["id"];
$myrow = mysql_fetch_array($result);
echo "<h3 align='center'>ЛИЧНОЕ ДЕЛО № ".$myrow["id"]."</h3>";
echo "<p style='margin:0'><strong>Имя студента:</strong> <i>".$myrow["name"]."</i></p>";
$ff = $myrow['faculty'];
switch ($ff)
{
case "a":
$faculty = "<strong>Факультет:</strong> <em>Алхимии</em>";
break;
case "b":
$faculty = "<strong>Факультет:</strong> <em>Боевой магии</em>";
break;
case "o":
$faculty = "<strong>Факультет:</strong> <em>Оккультизма</em>";
break;
case "i":
$faculty = "<strong>Факультет:</strong> <em>Истории магии</em>";
break;
}
echo "<p style='margin:0'>".$faculty.", <i>".$myrow["kurs"]."</i> <strong>курс</strong></p>";
$name = $myrow["name"];
$resultp = mysql_query("SELECT SUM(ball) FROM a_balls WHERE name = \"$name\" ");
list($sballs) = mysql_fetch_array($resultp);
echo "<p style='margin:0'><strong>Общее количество баллов:</strong> <em>$sballs</em></p>";
echo "<br /><center><font size=\"+1\"><strong>Текущие оценки</strong></font></center> <br />";

$kurs = $myrow["kurs"];

$result_t = mysql_query("SELECT DISTINCT subj,idpredm FROM a_timetable WHERE kurs = \"$kurs\" ORDER BY subj ");
echo "<table width=100%>";
echo "<tr>";
echo "<td width='25%' align='center' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">Лекция</td>";
echo "<td width='15%' align='center' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">Оценка</td>";
echo "<td width='60%' align='center' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">Комментарий</td>";
echo "</tr>";
echo "</table>";
while ($myrow_t = mysql_fetch_array($result_t))
{
$name_s = $myrow_t['subj']; // Название предмета
$id_s = $myrow_t['idpredm']; // Индификатор предмета

echo "<center><font color='#513a92'><b>$name_s</b></font></center>";
$result_a = mysql_query("SELECT lek,ball,komment FROM a_balls WHERE subj = $id_s AND idstud=$id");
echo "<table width=100%>";
while ($myrow_a = mysql_fetch_array($result_a))
{
echo"<tr>\n
<td width='25%' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">$myrow_a[lek]</td>\n
<td width='15%' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">$myrow_a[ball]</td>\n
<td width='60%' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">$myrow_a[komment]</td>\n
</tr>\n";
}
echo "</table>";
}
}

?>

Спустя 2 минуты, 50 секунд (16.03.2012 - 10:15) Visman написал(а):
Пример того, что выводит сейчас и то, что должно было вывести?

Спустя 3 минуты, 12 секунд (16.03.2012 - 10:18) ReidG написал(а):
Я ссылками покажу:

http://academymagic.ru/action.php?exe=points&id=01212 - работа скрипта (этого)

http://academymagic.ru/stud.php?id=01212&k=2 - вот как бы он должен вывести всю информацию как и тут

плюс он не выводит все доступные предметы http://academymagic.ru/action.php?exe=timetable&do=2

Спустя 8 минут, 25 секунд (16.03.2012 - 10:26) Visman написал(а):
Если этот кусок убрать
            $result_a = mysql_query("SELECT lek,ball,komment FROM a_balls WHERE subj = $id_s AND idstud=$id");
echo "<table width=100%>";
while ($myrow_a = mysql_fetch_array($result_a))
{
echo"<tr>\n
<td width='25%' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">$myrow_a[lek]</td>\n
<td width='15%' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">$myrow_a[ball]</td>\n
<td width='60%' bgcolor=#c2c2e8 style=\"border: solid 1 #513a92;\">$myrow_a[komment]</td>\n
</tr>\n";
}
echo "</table>";

выведет ли скрипт все предметы?

Спустя 31 минута (16.03.2012 - 10:57) ReidG написал(а):
да, в этом случае он выведет все кроме оценок за эти лекции.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.