|
 27 Кб |
|
| Добрый день, уважаемые форумчане!
Помогите, пожалуйста, "чайнику"...
В базе MySQL имеется таблица с полями: id, name, avtor, god, size, format, str и д.р.
Данные из таблицы (поля id, name, avtor, god, size, format) постранично выводятся на экран.
Вопрос: как сделать, чтобы поле name выводилось в виде гиперссылки и что бы в дальнейшем при клике на ссылку, открывалась отдельная страница в которой добавлялись к выводу остальные столбцы (str и д.р.).
Примерный результат, который хотелось бы получить и то, что получилось сейчас можно посмотреть во вложенном файле.
Теперь имеющийся код:
<?php
// Устанавливаем соединение с базой данных
include "connect.php";
// Переменная хранит число сообщений выводимых на станице
$num = 10;
// Извлекаем из URL текущую страницу
$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result = mysql_query("SELECT COUNT(*) FROM book");
$posts = mysql_result($result, 0);
// Находим общее число страниц
$total = intval(($posts - 1) / $num) + 1;
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная к какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT * FROM book ORDER BY `id` DESC LIMIT $start, $num");
// В цикле переносим результаты запроса в массив $postrow
while ( $postrow[] = mysql_fetch_array($result))
echo "<table>";
echo "<tr bgcolor=#CCCCFF>
<td width=5% valign=middle><b>#</b></td>
<td width=40% valign=middle><b>Название публикации</b></td>
<td width=25% valign=middle><b>Автор</b></td>
<td width=5% valign=middle><b>Год издания</b></td>
<td width=5% valign=middle><b>Размер</b></td>
<td width=5% valign=middle><b>Формат</b></td>
<td width=15% valign=middle><b>Дата добавления</b></td>
</tr>";
for($i = 0; $i < $num; $i++)
{
echo "<tr bgcolor=#D4DFFF>
<td width=5%>$postrow[$i]['id']."</td>
<td width=40%><[b]a href=\info.php?id=$id[/b]>".$postrow[$i]['name']."</a></td>
<td width=25%>".$postrow[$i]['avtor']."</td>
<td width=5%>".$postrow[$i]['god']."</td>
<td width=5%>".$postrow[$i]['size']."</td>
<td width=5%>".$postrow[$i]['format']."</td>
<td width=15%>".$postrow[$i]['data']."</td>
</tr>";
}
echo "</table>";
echo 'Страницы: ';
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href= ./page.php?page=1><<</a>
<a href= ./page.php?page='. ($page - 1) .'><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' <a href= ./page.php?page='. ($page + 1) .'>></a>
<a href= ./page.php?page=' .$total. '>>></a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0) $page2left = ' <a href= ./page.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href= ./page.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 2 <= $total) $page2right = ' | <a href= ./page.php?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href= ./page.php?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
// Вывод меню
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
?>
|
Сделал скрипт info.php. В нем пютаюсь принимайть $_GET['id'] и выводить по нему полную информацию, но к сожалению это не получается сделать.
Зараннее спасибо! | |
|
|
|
|
|
|
|
для: igor_gin
(02.08.2012 в 09:03)
| | Вам следует поступить как-то так
<?php
...
for($i = 0; $i < $num; $i++)
{
echo "<tr bgcolor=#D4DFFF>
<td width=5%>".$postrow[$i]['id']."</td>
<td width=40%><a href='info.php?id=".$postrow[$i]['id']."'>".$postrow[$i]['name']."</a></td>
<td width=25%>".$postrow[$i]['avtor']."</td>
<td width=5%>".$postrow[$i]['god']."</td>
<td width=5%>".$postrow[$i]['size']."</td>
<td width=5%>".$postrow[$i]['format']."</td>
<td width=15%>".$postrow[$i]['data']."</td>
</tr>";
}
...
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(02.08.2012 в 09:35)
| | Большое спасибо!
А не могли бы Вы еще немного помочь?
После перехода по ссылке запускается файл info.php
Определяется полученное значение поля id и необходимо сделать выборку из базы всех полей, соотвествующих данному id
Подскажите, пожалуйста, правильно ли составлен запрос и как вывести результаты запроса на экран?
<?php
$id= $_GET['id']; //выводится значение поля id
$result = mysql_query("SELECT * FROM book WHERE ('id'=$id)");
.....???
|
| |
|
|
|
|
|
|
|
для: igor_gin
(02.08.2012 в 09:51)
| | Вопрос закрыт. | |
|
|
|
|
|
|
|
для: igor_gin
(03.08.2012 в 10:44)
| | Нет не закрыт, так необработанные данные, которые подставляются параметром в запрос, это прямой путь для взлома.
Необходимо так:
<?
$id = (int)$_GET['id']
|
И в вашем случае в скобках после WHERE нет необходимости. И кавычки для полей, это: | |
|
|
|
|
|
|
|
для: confirm
(03.08.2012 в 10:56)
| | Большое спасибо за помощь! | |
|
|
|