![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Здрасте)У меня возникла проблемка:я не могу вывести рисунок из базы данных.В моем случае рисунок загружается при определенном условии(если рисунок вообще имеется)Имеется 2 файла:get.php-файл вывода рисунка и songs.php-файл вывода песен,в который загружается файл get.php.Помогите,пожалуйста исправить ошибку.
Вот код файла songs.php:
<?php
$ex=1;
include "config.php";
$query = "SELECT executor_name FROM executors WHERE executor_id=$ex";
// Выполняем SQL-запрос
$result = mysql_query($query);
// Проверяем успешность выполнения SQL-запроса
if(!$result) exit(mysql_error());
$executors = mysql_fetch_assoc($result);
//Определяем загаловок страницы
echo "<center><FONT class=text>".$executors['executor_name'].":</FONT></center><br>";
$ex=1;
$query = "SELECT image_name FROM executors WHERE executor_id=$ex";
$result = mysql_query($query);
if(!$result)
{
echo"Ошибка!<br/>".mysql_error();
}
else
{
if ($row = mysql_fetch_assoc($result)) {
if ($row['image_name'] != '') {
include "get.php";
} else {
echo "Фото нет";
}
} else {
echo "Пользователя нет";
}
}
// Формируем SQL-запрос
$query = "SELECT song_name,song_id FROM songs WHERE executor_num=$ex";
// Выполняем SQL-запрос
$result = mysql_query($query);
// Проверяем успешность выполнения SQL-запроса
if(!$result) exit(mysql_error());
// В цикле выводим песни
while($songs = mysql_fetch_assoc($result))
{
echo "<a class=song_link href=songs_design.php?num=".$songs['song_id']." alt=".$songs['song_name'].">".$songs['song_name']."</a><br>";
}
?>А это код файла get.php:
<?php
include "config.php";
// Извлекаем MP3-файл из базы данных
$query = "SELECT * FROM executors WHERE executor_id=$ex";
$img = mysql_query($query);
if(!$img) exit(mysql_error());
$executors = mysql_fetch_assoc($img);
$filename = $executors['image_name'];
$extension = strtolower(array_shift(array_reverse(explode(".",$filename))));
function content_type($filename) {
$extension = strtolower(array_shift(array_reverse(explode(".",$filename))));
$mime_types = array(
"html" => "text/html",
"txt" => "text/plain",
"bmp" => "image/bmp",
"gif" => "image/gif",
"jpg" => "image/jpeg",
"jpe" => "image/jpeg",
"png" => "image/png",
"ico" => "image/x-icon",
"swf" => "application/x-shockwave-flash",
"xml" => "text/xml",
"xsl" => "text/xml",
"doc" => "application/msword",
"xls" => "application/msexcel",
"xlc" => "application/msexcel",
"xll" => "application/msexcel",
"xlm" => "application/msexcel",
"xlw" => "application/msexcel",
"pdf" => "application/pdf",
"ps" => "application/postscript",
"eps" => "application/postscript",
"ai" => "application/postscript",
"asp" => "application/x-asp",
"bak" => "application/x-backup",
"bz2" => "application/x-bzip2",
"cgi" => "application/x-cgi",
"tgz" => "application/x-compressed-tar",
"core" => "application/x-core-file",
"csh" => "application/x-cs",
"dvi" => "application/x-dvi",
"exe" => "application/x-executable",
"gtar" => "application/x-gtar",
"xhtml" => "application/xhtml+xml",
"xht" => "application/xhtml+xml",
"class" => "application/x-java=byte-code",
"jar" => "application/x-jar",
"js" => "application/x-javascript",
"pl" => "application/x-perl",
"perl" => "application/x-perl",
"php" => "application/x-php",
"php3" => "application/x-php",
"php4" => "application/x-php",
"pyc" => "application/x-python-bytecode",
"py" => "application/x-python",
"rar" => "application/x-rar-compressed",
"rpm" => "application/x-rpm",
"sh" => "application/x-sh",
"tar" => "application/x-tar",
"tcl" => "application/tcl",
"tex" => "application/tex",
"man" => "application/x-troff-man",
"zip" => "application/zip",
"ac3" => "audio",
"au" => "audio/basic",
"snd" => "audio/basic",
"mid" => "audio/midi",
"midi" => "audio/midi",
"kar" => "audio/midi",
"mpga" => "audio/mpeg",
"mp2" => "audio/mpeg",
"mp3" => "audio/mpeg",
"ogg" => "audio/x-ogg",
"ra" => "audio/x-realaudio",
"wav" => "audio/x-wav",
"tif" => "image/tiff",
"tiff" => "image/tiff",
"djv" => "image/vnd.djvu",
"djvu" => "image/vnd.djvu",
"rtf" => "text/rtf",
"sgml" => "text/sgml",
"sgm" => "text/sgml",
"avi" => "video/x-msvideo");
if(isset($mime_types[$extension])) {
return $mime_types[$extension];
}
else {
return "application/octet-stream";
}
}
$maxage = 86400;
header("Cache-Control: max-age=$maxage");
header("Expires: ". date('r', time() + $maxage));
header("Content-Type: ".content_type($filename));
header("Content-Length: ".strlen($executors['image_content']));
header("Content-Disposition: filename=\"$filename\"");
echo $executors['image_content'];
?>Неактивен

Что именно не получается? Какая ошибка возникает?
Подозреваю, что проблема в отображении абрыкадабры в браузере вместо рисунка, что и неудивительно, так как рисунок нужно отображать с помощью тега <img> (в songs.php), а Вы заставляете браузер отображать бинарный файл.
Неактивен
Просто у меня должна выводиться определенная картинка и если пользоваться тегом img,то необходимо значение переменной $ex передовать в два файла через одну ссылку....А я не знаю как это делать....
Неактивен

тег <img src="url"> имеет параметр адрес рисунка. Переменную $ex Вы можете передовать через адрес.
Например, url у Вас будет вида http://site.ru/images/$ex... В папке images создаете файл htaccess, который передает управление файлу get.php и в качестве параметра передает адрес рисунка, в котором могут быть "зашиты" любые нужные Вам параметры.
Неактивен
А как создать этот файл htaccess?
Неактивен

С помощью текстового редактора (например, emacs) создаете файл ".htaccess"
Что в него писать? По этому очень много документации и статей. Советую посмотреть
http://www.egoroff.spb.ru/portfolio/apa … write.html
очень доходчиво и подробно изложено.
Неактивен
Если я правильно все понял,то у меня будет примерно такой принцип открытия рисунков:через ссылку я перехожу в директорию images в файл songs.php,файл .htaccess обрабатывает мою ссылку и извлекает переменную,отправляя ее в файл get.php а затем если выполняется нужное условие в файле songs.php,то в файл songs.php загружается нужная картинка из файла get.php.
Я очень мало понял из того,что написано о файлах .htaccess
Но все таки попытался составить один такой файл,скажите правильно ли я его составил:
//ex-это моя переменная
RewriteCond %{LA-U:ex}
RewriteRule ^/$ /homepage.ru/get.php?ex=%{LA-U:ex} [L]
Неактивен

У меня файл проще:
RewriteEngine on
RewriteRule ^.*$ getfile.php [L]
Причем запрошенный URL определяется уже внутри скрипта через
$fname = array_shift(array_reverse(explode("/",$_SERVER["REQUEST_URI"])));
$fname = array_shift(explode("?",$fname));
Неактивен
А getfile.php это имя файла с рисунком,то есть get.php?
Неактивен

ну да, я просто предпочитаю логику обработки адреса вынести в PHP, так как синтаксис .htaccess не слишком прозрачный
Неактивен
А обычную ссылку мне просто делать на файл songs.php?И файл songs.php должен находиться в директории images,либо он в отличие от файла get.php может находиться в корневой папке?
Неактивен

Файл songs.php может находится где угодно, это не имеет значение. В нем (songs.php) Вы указываете адрес рисунка как параметр тега <img>. Адрес рисунка указывает на папку images где и расположен Ваш скрипт get.php
Неактивен