Нехай у файлі в будь-якому зручному для студента вигляді записані дані відносно набору студентів. Про кожного студента зберігається інформація: ім'я, прізвище, група, стать, дата народження, середній бал. За допомогою стандартних html-форм необхідно реалізувати можливість посторінкового виводу списку студентів у вікні браузера. Кількість студентів на одній сторінці обирається користувачем. Додати можливість впорядкування списку за ім'ям, датою народження, середнім балом. Опціонально можна додати можливість фільтрації студентів за значенням обраного поля.
<?php
function cmp($a, $b)
{return strnatcmp($a[0], $b[0]); }
function cmp_2($a, $b)
{return strnatcmp($a[4], $b[4]); }
function cmp_3($a, $b)
{return strnatcmp($a[5], $b[5]);}
$a=fopen("stud.txt","r");
for ($i = 0; !feof($a); $i++)
{ $str = fgets($a);
$ttt[$i]=explode(' ',$str);
}
session_start();
if (isset($_SESSION['start']))
{
if ($_POST['Next']) $_SESSION['start'] += $_POST['count'];
if ($_POST['Prev']) $_SESSION['start'] -= $_POST['count'];
if ($_SESSION['start'] < 0) $_SESSION['start'] = 0;
if ($_SESSION['start'] > $i) $_SESSION['start'] = $i - $_POST['count'] - 1;
}
else
{
$_SESSION['start'] = 0;
}
$variants = array(5, 10, 15, 20, 25, 30);
$vari = array("имени", "дате рождения","среднему балу");
echo
"Количество полей на странице:
<form action=".$_SERVER["SCRIPT_NAME"]." method='post' name='pageSplitter'>
<select name='count' style='width' : 50>";
for ($j = 0; $j < count($variants); $j++)
echo "<option value='".$variants[$j]."' ".($_POST['count'] == $variants[$j] ? "selected" : "").">".$variants[$j]."</option>";
echo
"</select></p>";
echo "
Сортировать по:</p><select name='cr' style='width' : 50>";
for ($jj = 0; $jj < count($vari); $jj++)
echo "<option value='".$vari[$jj]."' ".($_POST['cr'] == $vari[$jj] ? "selec" : "").">".$vari[$jj]."</option>";
echo
"</select></p>
<input type=submit name='Change' value='Змінити'>
<input type=submit name='Prev' value='Попередня'>
<input type=submit name='Next' value='Наступна'>
</form>";
echo"<table>
<tr>
<th>Номер</th>
<th>Прізвище</th>
<th>Ім'я</th>
<th>Група</th>
<th>Стать</th>
<th>Дата народження</th>
<th>Середній бал</th>
</tr>";
if($_POST['cr']==$vari[0])
{usort($ttt, "cmp");}
if($_POST['cr']==$vari[1])
{usort($ttt, "cmp_2");}
if($_POST['cr']==$vari[2])
{usort($ttt, "cmp_3");}
for ($i = $_SESSION['start']; $i < ($_POST['count'] ? $_POST['count']: 5) + $_SESSION['start']; $i++)
{
echo
"<tr>
<td>".($i + 1)."</td>
<td>{$ttt[$i][0]}</td>
<td>{$ttt[$i][1]}</td>
<td>{$ttt[$i][2]}</td>
<td>{$ttt[$i][3]}</td>
<td>{$ttt[$i][4]}</td>
<td>{$ttt[$i][5]}</td>
</tr>";
}
echo "</table>";
echo "<br>Сторінка номер ".round($_SESSION['start'] / ($_POST['count'] ? $_POST['count'] : 1) + 1);
?>
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.