X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> По поводу вывода инфы из базы данных
forest69
forest69
Topic Starter сообщение 7.8.2010, 12:11; Ответить: forest69
Сообщение #1


Написал скрипт вывода инфы из базы данных

[PHP]
$query = "SELECT kyrator.name, kyrator.kyrator_id,
year.god, year.year_id,
students.name, students.grypa_id, students.stu_id, students.kyrator_id
FROM kyrator, year, students
WHERE kyrator.kyrator_id = students.kyrator_id";
$result_id = mysql_query($query) or die($query.mysql_error());
print("<table border='1'>\n");
$old_year_id = 0;
$old_kyrator_id = 0;
$old_stu_id = 0;
while ($row_array = mysql_fetch_row($result_id))
{
$kyrator_id = $row_array[1];
$year_id = $row_array[3];
$grypa_id = $row_array[5];
$stu_id = $row_array[6];
if ($year_id != $old_year_id)
{
$god = $row_array[2];
if ($kyrator_id != $old_kyrator_id)
{
if ($stu_id != $old_stu_id)
{
$kyrator_name = $row_array[0];
$students_name = $row_array[4];
print("<tr align='center'>");
print("<td>".$god."</td>"); - ячейка с годом
print("</tr>");
print("<tr align='center'>");
print("<td>".$kyrator_name."</td>"); - ячейка с ФИО
print("</tr>");
print("<tr align='left'>");
print("<td>".$students_name."</td>"); - ячейка со студентами
print("</tr>");
$old_stu_id = $stu_id;
}
}
}
}
print("</table>");
[/PHP]

Возник вопрос, как сделать чтобы ячейки с годом и ФИО вводились только 1 раз, а то получается, что они выводятся столько раз, сколько у меня ячеек со студентами.

Никак не могу сообразить...
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 7.8.2010, 14:09; Ответить: Mulder_hb
Сообщение #2


[PHP]$query = "SELECT `k`.`name` AS kyrator_name, `k`.`kyrator_id`,
`y`.`god`, `y`.`year_id`,
`s`.`name` AS student_name, `s`.`stu_id`
FROM `kyrator` AS `k`, `year` AS `y`, `students` AS `s`
WHERE `k`.`kyrator_id` = `s`.`kyrator_id`";
$result_id = mysql_query($query);

$old_year_id = 0;
$old_kyrator_id = 0;
$old_stu_id = 0;

for ($res = array(); $row = mysql_fetch_assoc($result_id); $res[] = $row)

$data = '<table border="1">';
for ($i = 0; $i < count($res); $i++) {
if ($res[$i]["year_id"] != $old_year_id AND $res[$i]["kyrator_id"] != $old_kyrator_id AND $res[$i]["stu_id"] != $old_stu_id) {
if ($i != 0 AND $res[$i]["god"] != $res[$i-1]["god"] AND $res[$i]["kyrator_name"] != $res[$i-1]["kyrator_name"]) {
$data .= '<tr align="center">
<td>'.$res["god"].'</td>
</tr>
<tr align="center">
<td>'.$res["kyrator_name"].'</td>
</tr>';
}
$data .= '<tr align="left">
<td>'.$res["student_name"].'</td>
</tr>';
$old_stu_id = $stu_id;
}
}
$data .= '</table>';
echo $data;[/PHP]
Как-то так. Правильность работы не проверял + форматирование таблицы, наверное, надо будет подправить. В целом логика должна быть понятна.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
forest69
forest69
Topic Starter сообщение 7.8.2010, 17:06; Ответить: forest69
Сообщение #3


почти работает, только ячейки получаются пустые.

ошибки вроде не нашел, правда я php изучаю по книгам, поэтому знаю еще не все....
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
PRStudio
PRStudio
сообщение 11.8.2010, 0:08; Ответить: PRStudio
Сообщение #4


возможно проблема в том, что ты выводишь год внутри цикла и получается так, что год выводится столько же раз, сколько и студенты, т.е. попробуй вывести год отдельным извлечением из БД вне цикла.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Валериан
Валериан
сообщение 11.8.2010, 13:21; Ответить: Валериан
Сообщение #5


Все учились у Попова))
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
forest69
forest69
Topic Starter сообщение 6.9.2010, 20:30; Ответить: forest69
Сообщение #6


Сейчас вернулся к этой теме.
Написал код с учетов всех замечаний написанных выше.
Выводит только 1 год(в БД их 2), 1 Ф.И.О. куратора, 1 Ф.И.О. (в БД их много).
В чем может быть проблема?

Вот код:

[PHP]
$query = "SELECT kyrator.name AS 'kyrator_name', kyrator.kyrator_id,
year.god, year.year_id,
students.name AS 'students_name', students.grypa_id, students.stu_id, students.kyrator_id
FROM kyrator, year, students
WHERE kyrator.kyrator_id = students.kyrator_id";
$result_id = mysql_query($query) or die($query.mysql_error());
print("<table border='1'>\n");
$old_year_id = 0;
$old_kyrator_id = 0;
$old_stu_id = 0;

for($data=array(); $row=mysql_fetch_assoc($result_id); $data[]=$row);
for($i=0; $i<count($data[$i]['year_id']); $i++)
{
$year_id = $data[$i]['year_id'];
if ($year_id != $old_year_id)
{
print("<tr align='center'>");
print("<td>".$data[$i]['god']."</td>");
print("</tr>");
for($j=0; $j<count($data[$j]['kyrator_id']); $j++)
{
$kyrator_id = $data[$j]['kyrator_id'];
if ($kyrator_id != $old_kyrator_id)
{
print("<tr align='center'>");
print("<td>".$data[$j]['kyrator_name']."</td>");
print("</tr>");
for($k=0; $k<count($data[$k]['stu_id']); $k++)
{
$stu_id=$data[$k]['stu_id'];
if ($stu_id != $old_stu_id)
{
print("<tr align='left'>");
print("<td>".$data[$k]['students_name']."</td>");
print("</tr>");
}
}
}
}
}
}


print("</table>");
mysql_close ($dbcnx);
[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 6.9.2010, 20:57; Ответить: Mulder_hb
Сообщение #7


Проблема в том, что вы не следовали замечаниям. Все дело в условных операторах (if). Посмотрите какой синтаксис и тело условий у вас, а какие у меня. Ваши условия режут весь остальной вывод, а мои (в теории :) ) позволяют отобразить всю нужную инфу.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
forest69
forest69
Topic Starter сообщение 6.9.2010, 21:44; Ответить: forest69
Сообщение #8


Если писать так, то вообще ничего не отображается...

[PHP]
.
.
.
for($i=0; $i<count($data[$i]['year_id']); $i++)
{
if ($data[$i]['year_id']!= $old_year_id)
{
if ($i != 0 and $data[$i]['god'] != $data[$i-1]['god'])
{
print("<tr align='center'>");
print("<td>".$data[$i]['god']."</td>");
print("</tr>");
.
.
.
[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
forest69
forest69
Topic Starter сообщение 8.9.2010, 21:08; Ответить: forest69
Сообщение #9


Товарисчи! скажите в чем ошибка? всю голову сломал уже((
я чувствую, что я уже почти написал скрипт...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 8.9.2010, 22:35; Ответить: Mulder_hb
Сообщение #10


Научитесь отлаживать приложения. Вставляйте функции вывода в нужных местах и ищите, где обрывается вывод.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Базы Youtube кейвордов с данными по конкуренции и Volume
3 Krok 1033 20.3.2024, 14:59
автор: ManagerAE8888
Горячая тема (нет новых ответов) Свежие базы ключевых слов с подсказок гугла!
123 Krok 67724 20.3.2024, 14:58
автор: ManagerAE8888
Открытая тема (нет новых ответов) Большие базы Semrush кейвордов по разным тематикам! Много кейвордов с трафиком и без конкуренции! Volume, KD, CPC
20 Krok 6223 18.3.2024, 5:43
автор: Krok
Открытая тема (нет новых ответов) Интеграция спортивных данных API. Коэффициенты БК, Live результаты
14 yaroslav89 6627 13.3.2024, 23:16
автор: spoyer_ru
Открытая тема (нет новых ответов) Базы досок объявлений России, Украины, Беларуси и Казахстана
5 freeax 6406 10.3.2024, 15:07
автор: freeax


 



RSS Текстовая версия Сейчас: 28.3.2024, 21:04
Дизайн