Задавайте вопросы, мы ответим
Вы не зашли.
Здрасте)У меня возникла проблемка:я не могу вывести рисунок из базы данных.В моем случае рисунок загружается при определенном условии(если рисунок вообще имеется)Имеется 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
Неактивен