[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: загрузка из Blob html файл
Taho
Здравствуйте.
Вобщем, суть такова: в базе находятся данные в blob ячейках (документы, перед этим переконвертированные в html формат). Вот нужно их открыть, перейдя по ссылке. У меня получилось их запихнуть в таблицу, но так выходит громоздко и очень неудобно.

Подскажите, пожалуйста, как это можно реализовать.

 
<?php
session_start();
echo '
<head>
<title>Документы</title>
</head>
<div>
<div>
<h2 align = center>Документы</h2>
<br>
<table>
<tr>
<td>'
;

mysql_query('SET NAMES "latin1"');
$result = mysql_query("SELECT `vid_doc`.`vid_doc` AS `vid_doc`
, `documents`.`name_doc` AS `name_doc`
, `documents`.`html_doc` AS `html_doc`
FROM
(`documents`
JOIN `vid_doc`
ON ((`documents`.`id_vid` = `vid_doc`.`id_vid`)))
where html_bool = '1'
"
);

echo "<table border='1'>
<tr>
<th>Имя</th>
<th>Вид</th>
<th>Документ</th>
</tr>"
;

$id=1;
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['name_doc'] . "</td>";
echo "<td>" . $row['vid_doc'] . "</td>";
echo "<td>" . $row['html_doc'] ."</td>";

}

echo "</table>";
echo '
</body>
</html>
'

?>



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



Спустя 27 минут, 1 секунда (6.02.2012 - 19:17) sergeiss написал(а):
Цитата (Taho @ 6.02.2012 - 19:50)
Хочу, чтобы вместо документа стояла обычная ссылка на него.

Не совсем понятно, что ты имел ввиду. Ты хочешь, чтобы была обычная ссылка <a href="..." ></a>, по которой можно было бы загрузить этот файл или что-то другое?

Спустя 2 часа, 36 секунд (6.02.2012 - 21:17) Taho написал(а):
Цитата (sergeiss @ 6.02.2012 - 16:17)
Цитата (Taho @ 6.02.2012 - 19:50)
Хочу, чтобы вместо документа стояла обычная ссылка на него.

Не совсем понятно, что ты имел ввиду. Ты хочешь, чтобы была обычная ссылка <a href="..." ></a>, по которой можно было бы загрузить этот файл или что-то другое?

Да, вы поняли правильно, обычная ссылка. Но только не загрузить, а просто открыть в отдельном окне.

Спустя 6 минут, 50 секунд (6.02.2012 - 21:24) sergeiss написал(а):
Цитата (Taho @ 6.02.2012 - 22:17)
Да, вы поняли правильно, обычная ссылка. Но только не загрузить, а просто открыть в отдельном окне.

Ничего сложного smile.gif
Просто надо сформировать ссылку, указав для неё:
1. Имя скрипта, который будет выводить этот код (его надо сделать еще, этот скрипт).
2. В ссылке указать некий уникальный идентификатор документа.
3. Указать target="_blank", чтобы открылось в отдельном окне.

В "основном" скрипте не надо будет выводить содержимое файла, его даже не надо запрашивать! Только те данные запрашивай, которые необходимы для создания списка ссылок.
А в скрипте (из п.1) надо будет сделать запрос к той же БД, но запросить уже полное содержимое одной записи. И вывести это содержимое в то новое окно, что откроется.

При этом в целом структура твоего скрипта сохранится - это я про тот скрипт, код которого ты указал в начале.

Спустя 7 минут, 34 секунды (6.02.2012 - 21:32) Taho написал(а):
Цитата (sergeiss @ 6.02.2012 - 18:24)
Ничего сложного smile.gif
Просто надо сформировать ссылку, указав для неё:
1. Имя скрипта, который будет выводить этот код (его надо сделать еще, этот скрипт).
2. В ссылке указать некий уникальный идентификатор документа.
3. Указать target="_blank", чтобы открылось в отдельном окне.

В "основном" скрипте не надо будет выводить содержимое файла, его даже не надо запрашивать! Только те данные запрашивай, которые необходимы для создания списка ссылок.
А в скрипте (из п.1) надо будет сделать запрос к той же БД, но запросить уже полное содержимое одной записи. И вывести это содержимое в то новое окно, что откроется.

При этом в целом структура твоего скрипта сохранится - это я про тот скрипт, код которого ты указал в начале.

Спасибо, смысл уловил =) Впринципе так и думал, но хотел всё же убедиться )

Спустя 1 час, 58 минут, 51 секунда (6.02.2012 - 23:30) Taho написал(а):
Снова я. В общем сделал я скриптик отдельный, вот такой.
<?php
session_start();
if($id){
$sql = "SELECT html_doc FROM documents WHERE id_doc=$id";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$doc = $row["html_doc"];
mysql_free_result($result);
header("ontent-type: html/text");
echo $doc;
}
?>


кажет хорошо, и также переделал старый скрипт

<?php
session_start();
echo '
<head>
<title>Документы</title>
</head>
<div>
<div>
<h2 align = center>Документы</h2>
<br>
<table>
<tr>
<a href="index.php?page=take_mht">проверка</a>
<td>'
;
mysql_query('SET NAMES "latin1"');
$result = mysql_query("SELECT `documents`.`id_doc` AS `id_doc`
, `vid_doc`.`vid_doc` AS `vid_doc`
, `documents`.`name_doc` AS `name_doc`
, `documents`.`html_doc` AS `html_doc`
FROM
(`documents`
JOIN `vid_doc`
ON ((`documents`.`id_vid` = `vid_doc`.`id_vid`)))
where html_bool = '1'
"
);

echo "<table border='1'>
<tr><th>ID</th>
<th>Вид</th>
<th>Документ</th>

</tr>"
;

while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['id_doc'] . "</td>";
echo "<td>" . $row['vid_doc'] . "</td>";
$id = $row['id_doc'];
echo "<td><a href='index.php?page=take_mht.php?id=".$id."'>" . $row['name_doc'] . "</a></td>";



}

echo "</table>";
echo '

</body>
</html>
'

?>


ссылки формируются нормальные, от есть например вот такие
http://localhost/smsdocs/index.php?page=take_mht.php?id=44
но ссылки не работают. Если же я в первый скрипт впишу в код, например $id = 44; и зайду через прямую ссылку
http://localhost/smsdocs/index.php?page=take_mht.php , то документ с номером 44 отображается отлично. В чём может быть проблема?

Спустя 8 часов, 27 минут, 21 секунда (7.02.2012 - 07:58) sergeiss написал(а):
В ссылке знак вопроса пишется один раз, в самом начале списка параметров. А параметры уже разделяются амперсендом. Посмотри, например, ссылки на этом форуме smile.gif Вот прямо сейчас глянь в адресную строку этой темы, с которой ты работаешь smile.gif Там ты увидишь что-то типа http://phpforum.ru/index.php?showtopic=57199&hl=

Спустя 2 часа, 49 минут, 36 секунд (7.02.2012 - 10:47) Taho написал(а):
Цитата (sergeiss @ 7.02.2012 - 04:58)
В ссылке знак вопроса пишется один раз, в самом начале списка параметров. А параметры уже разделяются амперсендом. Посмотри, например, ссылки на этом форуме smile.gif Вот прямо сейчас глянь в адресную строку этой темы, с которой ты работаешь smile.gif Там ты увидишь что-то типа http://phpforum.ru/index.php?showtopic=57199&hl=

Блин, все равно догнать не могу.
Получается, такая должна быть? Всё равно не батракает.

http://index.php?page=take_mht&id=45

Может что забыл указать в мелком скрипте с запросом?

Спустя 41 минута, 11 секунд (7.02.2012 - 11:29) sergeiss написал(а):
Следующий вопрос: что значит
Цитата (Taho @ 7.02.2012 - 11:47)
Всё равно не батракает.


Как именно ты выбираешь в скрипте переданные ему параметры? Покажи код.

Спустя 2 часа, 38 минут, 10 секунд (7.02.2012 - 14:07) Taho написал(а):
так же, как и в прошлом посте, просто переделал строку в таблице.
 echo "<td><a href='index.php?page=take_mht&id=".$id."'>" . $row['name_doc'] . "</a></td>";

Вот что получилось:
docs.php
<?php
session_start();
echo '
<head>
<title>Документы</title>
</head>
<div>
<div>
<h2>Документы</h2>
<br>
<table>
<tr>
<td>'
;
mysql_query('SET NAMES "latin1"');
$id = '';
$result = mysql_query("SELECT `documents`.`id_doc` AS `id_doc`
, `vid_doc`.`vid_doc` AS `vid_doc`
, `documents`.`name_doc` AS `name_doc`
, `documents`.`html_doc` AS `html_doc`
FROM
(`documents`
JOIN `vid_doc`
ON ((`documents`.`id_vid` = `vid_doc`.`id_vid`)))
where html_bool = '1'
"
);

echo "<table border='1'>
<tr><th>ID</th>
<th>Вид</th>
<th>Документ</th>

</tr>"
;

while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['id_doc'] . "</td>";
echo "<td>" . $row['vid_doc'] . "</td>";
$id = $row['id_doc'];
echo "<td><a href='index.php?page=take_mht&id=".$id."'>" . $row['name_doc'] . "</a></td>";

}

echo "</table>";
echo '

</body>
</html>
'

?>


этот не переделывал
take_mht.php

<?php
session_start();
if(&$id){
$sql = "SELECT html_doc FROM documents WHERE id_doc=$id";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$doc = $row["html_doc"];
mysql_free_result($result);
header("ontent-type: html/text");
echo $doc;
}
?>

Эти два файла лежат у меня в папке tpl (типа доступные страницы после авторизации)

а вот сам index.php

[php]
<?php
session_start();
mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db('diplom') or die(mysql_error());
mysql_query('SET NAMES "latin1"');

include('uni-auth.php');

if(USER_LOGGED) {
if(!check_user($UserID)) logout();

?>
<h1>Здравствуйте, <?php echo $name; ?>!</h1>
<
h2>Ваш ID: <?php echo $UserID; ?>.</h2>
<
a href="index.php">главная</a>
<
a href="index.php?page=docs">документы</a><br/>
<
h4><a href="?logout">Выход</a></h4>
<?php

if($_GET['page'] !='') {
@include("tpl/".$_GET['page'].".php");
}
else { @include("tpl/home.php");}

}

else { ?>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<
table>
<
tr>
<
td>Имя:</td><td><input type="text" name="user"></td>
</
tr>
<
tr>
<
td>Пароль:</td><td><input type="password" name="pass"></td>
</
tr>
<
tr>
<
td colspan="2"><input type="submit" name="login" value="Войти"></td>
</
tr>
</
table>
</
form>
<?php
}
?>


Еще есть файл с функциями логина, логаута и сверки паролей, но думаю здесь они не причём. Складывается ощущение, что я что-=то намудрил и изза этого правильная ссылка с параметрами не работает =)

Спустя 31 минута, 40 секунд (7.02.2012 - 14:38) sergeiss написал(а):
Ну вот смотри внимательно...

Вот твой УРЛ: index.php?page=take_mht&id=33

Параметр page ты выбираешь вот так: $_GET['page']. Но ГДЕ ты выбираешь в скрипте параметр id? Правильно, нигде. Так и как тогда твой скрипт будет его учитывать?

Спустя 56 минут, 40 секунд (7.02.2012 - 15:35) Taho написал(а):
Спасибо огромное, добавил $id = $_GET["id"]; в take_mht.php
Все заработало =)
Быстрый ответ:

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