1

Тема: Таблицы с повтряющимися ячейками

Здраствуйте! у меня возникла небольшая проблема..нужно по нажатию кнопки отобразить таблицу, там содержатся данные о должниках...я вроде бы как написал код, но талица появляется при загрузке страницы, а не по нажатию..вот код:

echo '<form method="post" action="">';
if (isset($_POST['submit'])) { // Условие нажатия кнопки
$dolg = 'SELECT distinct Fio,Nazv,balls.Id_stud
from studs,predmets,balls WHERE studs.Id_stud=balls.Id_stud and predmets.Id_pred=balls.Id_pred and balls.ball=""';

$zapr=mysql_query($dolg);
if (!$zapr)
{
  die ("Невозможно исполнить запрос к базе данных:<br/>".mysql_error());
}
echo "<table border=0>";
echo "<tr><th>ФИО Студента</th><th>Предмет</th></tr>";
while($mas=mysql_fetch_array($zapr,MYSQL_ASSOC)){
$studs=$mas["Fio"];
$predmet=$mas["Nazv"];
echo "<tr>";
echo "<td>$studs</td>";
echo "<td>$predmet</td>";
echo "</tr>";
}

} // Конец условия

echo '<input type="submit" name="submit" value="Показать должников" />';
echo "</form>";
echo "</table>"; // Этот тег как-то отстал от таблицы.

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

2

Re: Таблицы с повтряющимися ячейками

Прокомментировал в коде.

VitoS сказал:

как сделать так, чтобы его фамилия не повторялась, а просто напротив него были выведены все имеющиеся долги.

Это решается с помощью запроса, но для его составления у меня недостаточно данных.

Какой тип данных в поле долгов? Это цифра, или булево значение? Каким образом надо долги сложить? Приведите пример.

3

Re: Таблицы с повтряющимися ячейками

так, я кнопкой получилось, спасибо!

а с долгами у меня пока такая ситуация...есть таблицы studs, predmets, Balls ...в таблице Balls поля id_stud(тип int) , id_predm (тип int) и ball (тип varchar)..долги выявляются, если в ячейке ball ничего нет...

а сложить долги нужно примерно так:объединить ячейки с одинаковой фамилией, а сами долги будут в отдельных ячейках...

4

Re: Таблицы с повтряющимися ячейками

Если я правильно понял, то надо объединить строки по студенту, тогда запрос будет выглядеть так:

$dolg = 'SELECT distinct Fio,Nazv,balls.Id_stud
from studs,predmets,balls WHERE studs.Id_stud=balls.Id_stud and predmets.Id_pred=balls.Id_pred and balls.ball=""
GROUP BY studs.Id_stud';

5

Re: Таблицы с повтряющимися ячейками

это объединение по студенту...в этом случае выводится все равно только один долг, даже если у студента их больше...а мне нужно чтобы выводились все долги...в этом и проблема(

6

Re: Таблицы с повтряющимися ячейками

Тогда наверное лучше сделать так:

$dolg = 'SELECT distinct Fio,Nazv,balls.Id_stud
from studs,predmets,balls WHERE studs.Id_stud=balls.Id_stud and predmets.Id_pred=balls.Id_pred and balls.ball=""
ORDER BY Fio';

И дальше уже собирать таблицу.

7

Re: Таблицы с повтряющимися ячейками

ну то есть как я понимаю нельзя сделать так, чтобы в этой таблице у одного студента было несколько предметов?..в смысле без повторения его фамилии?

8

Re: Таблицы с повтряющимися ячейками

ну в принципе я разобрался, спасибо)

9 (изменено: VitoS, 2011-03-11 22:37:31)

Re: Таблицы с повтряющимися ячейками

теперь такой вопрос...у меня вот эта таблица с должниками находится на отдельной части страницы...на другой части есть список студентов с ссылками..и если я нажимаю на любого студента-моя таблица с должниками убирается(как я понимаю это происходит при обновлении) и чтобы увидеть список должников снова надо нажимать на кнопку...как сделать чтобы эта таблица не убиралась подскажите пожалуйста

это таблицы должников:

echo '<form method="post" action="">';
if (isset($_REQUEST['submit'])){
$dolg = 'SELECT distinct Fio,Nazv,balls.Id_stud
from studs,predmets,balls WHERE studs.Id_stud=balls.Id_stud and predmets.Id_pred=balls.Id_pred and balls.ball="" ORDER BY Fio';

$zapr=mysql_query($dolg);
if (!$zapr)
{
  die ("Невозможно исполнить запрос к базе данных:<br/>".mysql_error());
}


echo "<table border=0>";
echo "<tr><th>ФИО Студента</th><th>Предмет</th></tr>";
while($mas=mysql_fetch_array($zapr,MYSQL_ASSOC)){
$studs=$mas["Fio"];
$predmet=$mas["Nazv"];
echo "<tr>";
echo "<td>$studs</td>";
echo "<td>$predmet</td>";
echo "</tr>";
}
}
echo '<input type="submit" name="submit" value="Показать должников" />';
echo "</form>";
echo "</table>"; // Этот тег ломает HTML разметку. Переместите его выше.

echo "</div>";


а это студентов:

echo '<form method="post" action="">';
echo "<SELECT NAME='NomGrup1'>";
while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
$nomgrup=$row["NomGrup"];
if (isset($_REQUEST['NomGrup1']) && $_REQUEST['NomGrup1'] == $row["NomGrup"]) {
  echo "<option value='$nomgrup' selected='selected'>$nomgrup</option>";
} else {
  echo "<option value='$nomgrup'>$nomgrup</option>";
}
}
echo"</SELECT>";
if (isset($_REQUEST['NomGrup1'])) {
    //exit($_REQUEST['NomGrup1']);
  $query1 = 'SELECT distinct Fio,stud_grup.Id_stud,NomGrup
from studs,stud_grup,grupps WHERE studs.Id_stud=stud_grup.Id_stud
AND NomGrup = ' . $_REQUEST['NomGrup1'];

$result1=mysql_query($query1);
if (!$result1)
{
  die ("Невозможно исполнить запрос к базе данных:<br/>".mysql_error());
}
echo '<table border="1">';
echo "<tr><th>ФИО Студента</th></tr>";
while($row1=mysql_fetch_array($result1,MYSQL_ASSOC)){
$studs=$row1["Fio"];
echo "<tr>";
echo'<td><a href="?submit=on&NomGrup1=' . $_REQUEST['NomGrup1'] . '&name=' . $studs . '">' . $studs . '</a></td>';
echo "</tr>";
}
}
echo "<input type='submit' value='Показать список' />";
echo "</form>";
echo "</table>";
echo "</div>";

10

Re: Таблицы с повтряющимися ячейками

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

11

Re: Таблицы с повтряющимися ячейками

а чтобы выводилось только при нажатии на кнопку?..таблица должна выводиться только по нажатию на кнопку

12

Re: Таблицы с повтряющимися ячейками

если сделать echo'<td><a href="?submit=on&NomGrup1=' . $_REQUEST['NomGrup1'] . '&name=' . $studs . '">' . $studs . '</a></td>'; то таблица выводится только по ссылке

13

Re: Таблицы с повтряющимися ячейками

Должно выводиться и по нажатию на кнопке и по ссылке.

if (isset($_REQUEST['submit'])){

Или речь о другой кнопке? Уточните.

14

Re: Таблицы с повтряющимися ячейками

речь о той же кнопке с должниками...но выводится таблица должников только по ссылке...если нажимаю на кнопку, чтобы вывести должников-сворачивается таблица студентов...

15

Re: Таблицы с повтряющимися ячейками

В первом теге <form> есть параметр action, добавьте значение группы таким образом.
<form ... action="?NomGrup1=1">
Соответственно подставьте значение группы, если оно задано.

16

Re: Таблицы с повтряющимися ячейками

спасибо, получилось!

17

Re: Таблицы с повтряющимися ячейками

а как можно сделать (и можно ли вообще) чтобы ссылка echo'<td><a href="?submit=on&NomGrup1=' . $_REQUEST['NomGrup1'] . '&name=' . $studs . '">' . $studs . '</a></td>'; не нажимала на кнопку автоматически, а просто ссылалась на тот участок страницы где находится таблица?...а то получается, что я нажимаю на студента и автоматически строится таблица должников на соседней части страницы...а это должно происходить по нажатию кнопки

18

Re: Таблицы с повтряющимися ячейками

и подскажите пожалуйста как сделать ,чтобы кнопка срабатывала только 1 раз...при нажатии на нее 2 и более раз ничего не происходило

19

Re: Таблицы с повтряющимися ячейками

VitoS сказал:

а это должно происходить по нажатию кнопки

Не смог полностью понять что надо, но попробуйте убрать из ссылки submit=on.

VitoS сказал:

чтобы кнопка срабатывала только 1 раз

Добавьте параметр disabled на кнопке после ее нажатия.
<input type="submit" disabled="disabled" />

20

Re: Таблицы с повтряющимися ячейками

то есть в условии if (isset($_REQUEST['submit'])){} нужно добавить параметр?а то у меня она сразу становится недоступной..

21

Re: Таблицы с повтряющимися ячейками

VitoS сказал:

то есть в условии if (isset($_REQUEST['submit'])){} нужно добавить параметр?

Да, просто добавьте переменную, которая изначально будет пустой строкой, а в условии у нее пропишите:

$disable = '';

if (isset($_REQUEST['submit'])) {
  $disable = ' disabled="disabled" ';
}

И затем:
echo '<input type="submit" ' . $disable . ' />';

22 (изменено: VitoS, 2011-03-13 15:09:42)

Re: Таблицы с повтряющимися ячейками

то есть вот так:

echo '<form method="post" action="?NomGrup1= '. $_REQUEST['NomGrup1'] . '">';
$disable = '';
if (isset($_REQUEST['submit'])){
 
$dolg = 'SELECT distinct Fio,Nazv,balls.Id_stud
from studs,predmets,balls WHERE studs.Id_stud=balls.Id_stud and predmets.Id_pred=balls.Id_pred and balls.ball="" ORDER BY Fio';

$disable = ' disabled="disabled" ';

$zapr=mysql_query($dolg);
if (!$zapr)
{
  die ("Невозможно исполнить запрос к базе данных:<br/>".mysql_error());
}

echo "<table border=0>";
echo "<tr><th>ФИО Студента</th><th>Предмет</th></tr>";
while($mas=mysql_fetch_array($zapr,MYSQL_ASSOC)){
$studs=$mas["Fio"];
$predmet=$mas["Nazv"];
echo "<tr>";
echo "<td>$studs</td>";
echo "<td>$predmet</td>";
echo "</tr>";
}
echo "</table>";
}
echo '<input type="submit" name="submit" value="Показать должников" ' . $disable . '/>';

echo "</form>";

в этом случае у меня кнопка сразу не активная выводится..

23

Re: Таблицы с повтряющимися ячейками

Я показал как это технически сделать, вы уж сами разберитесь каким образом все собрать, потому что я уже не понимаю что вы делаете.

24

Re: Таблицы с повтряющимися ячейками

спасибо за помощь, я разобрался)