SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 28.01.2008 14:14:11

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Вывод рисунка

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

Неактивен

 

#2 28.01.2008 14:33:43

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Вывод рисунка

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

Неактивен

 

#3 28.01.2008 15:15:47

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунка

Просто у меня должна выводиться определенная картинка и если пользоваться тегом img,то необходимо значение переменной $ex передовать в два файла через одну ссылку....А я не знаю как это делать....

Неактивен

 

#4 28.01.2008 15:34:27

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Вывод рисунка

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

Неактивен

 

#5 28.01.2008 17:06:15

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунка

А как создать этот файл htaccess?

Неактивен

 

#6 28.01.2008 18:06:54

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Вывод рисунка

С помощью текстового редактора (например, emacs) создаете файл ".htaccess"


Что в него писать? По этому очень много документации и статей. Советую посмотреть
http://www.egoroff.spb.ru/portfolio/apa … write.html
очень доходчиво и подробно изложено.

Неактивен

 

#7 28.01.2008 18:58:34

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунка

Если я правильно все понял,то у меня будет примерно такой принцип открытия рисунков:через ссылку я перехожу в директорию images в файл songs.php,файл .htaccess обрабатывает мою ссылку и извлекает переменную,отправляя ее в файл get.php а затем если выполняется нужное условие в файле songs.php,то в файл songs.php загружается нужная картинка из файла get.php.
Я очень мало понял из того,что написано о файлах .htaccess smile Но все таки попытался составить один такой файл,скажите правильно ли я его составил:
//ex-это моя переменная
RewriteCond %{LA-U:ex}
RewriteRule  ^/$                 /homepage.ru/get.php?ex=%{LA-U:ex}  [L]

Неактивен

 

#8 28.01.2008 19:13:39

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Вывод рисунка

У меня файл проще:
RewriteEngine on
RewriteRule   ^.*$                    getfile.php     [L]

Причем запрошенный URL определяется уже внутри скрипта через
$fname = array_shift(array_reverse(explode("/",$_SERVER["REQUEST_URI"])));
$fname = array_shift(explode("?",$fname));

Неактивен

 

#9 28.01.2008 19:22:54

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунка

А getfile.php это имя файла с рисунком,то есть get.php?

Неактивен

 

#10 28.01.2008 19:24:39

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Вывод рисунка

ну да, я просто предпочитаю логику обработки адреса вынести в PHP, так как синтаксис .htaccess не слишком прозрачный

Неактивен

 

#11 28.01.2008 19:45:43

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунка

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

Неактивен

 

#12 28.01.2008 20:42:13

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Вывод рисунка

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

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson