Обработка массивов. Выбрать картинки, ссылка на которые есть в mysql

Статус
В этой теме нельзя размещать новые ответы.

Userbanderas

Новичок
Здравствуйте!
Задача:
Выбрать картинки из папки, ссылка на которые есть в mysql.
Имеется скрипт фотогаллереи, который позволяет загружать, удалять и просматривать изображения. Отлично, как раз то, что я искал. Немного подредактировав код, получил возможность вставлять и удалять ссылку на картинку из БД, при загрузке и удалении самой картинки.
Все картинки, которые имеются в папке, после загрузки выводятся на экран. Как раз на этом моменте и нужно выбрать только те изображения, ссылка на которые есть в mysql.

Вот основной код, который по моему мнению отвечает за сканирование папки и отображение данных.
PHP:
    private function get_file_object($file_name) {
	
	        $file_path = $this->options['upload_dir'].$file_name;
        if (is_file($file_path) && $file_name[0] !== '.') // если файлы в папке есть и название не начинается с .(точки)
		{
            $file = new stdClass();
            $file->name = $file_name;
            $file->size = filesize($file_path);
            $file->url = $this->options['upload_url'].rawurlencode($file_name);	// путь в галлерею
            foreach($this->options['image_versions'] as $version => $options) {
                if (is_file($options['upload_dir'].$file_name)) {
                    $file->{$version.'_url'} = $options['upload_url'].rawurlencode($file_name);	// путь к мини картинке
                }
            }
            $file->delete_url = $this->options['script_url']
                .'?file='.rawurlencode($file->name);
            $file->delete_type = 'DELETE';
            return $file;
        }
        return null;
    }
    
    private function get_file_objects() {
        return array_values(array_filter(array_map(
            array($this, 'get_file_object'),	// get_file_object обрабатывает имя каждого выводимого файла
            scandir($this->options['upload_dir'])	// сканируемый каталог big_img, возвращает массив
        )));
    }
Я полагаю, что в этом месте(код ниже) нужно что-то редактировать. Но я не могу полностью разобрать как срабатывает этот кусок кода:
PHP:
    private function get_file_objects() {
        return array_values(array_filter(array_map(
            array($this, 'get_file_object'),	// get_file_object обрабатывает имя каждого выводимого файла
            scandir($this->options['upload_dir'])	// сканируемый каталог big_img, возвращает массив
        )));
    }
Я могу привести весь код, но думаю, что он не нужен здесь пока.
Товарищи знатоки, требуются ваши знания! Я больше недели бьюсь с этим. Самостоятельно пока ничего не могу сделать.
 

aaachilov

Новичок
Все картинки, которые имеются в папке, после загрузки выводятся на экран. Как раз на этом моменте и нужно выбрать только те изображения, ссылка на которые есть в mysql.
Нужно сделать чтоб не все картинки которые есть в папке выводились на экран, а все которые есть в базе.
По моему ты с обратной строны подходишь к варианту. Зачем тогда вообще база нужна?
1.Запрос к базе - получение адресов имеющихся изображений
2. Работа с изображениями.
Немного подредактировав код, получил возможность вставлять и удалять ссылку на картинку из БД, при загрузке и удалении самой картинки.
Ты же написал что ссылка добавляется и удаляется вместе с изображением.
Сделай таблицы фотоальбомов и изображений.
А картинки можешь хоть в одной хоть в 10 папках хранить.
 

Userbanderas

Новичок
Нужно сделать чтоб не все картинки которые есть в папке выводились на экран, а все которые есть в базе.
По моему ты с обратной строны подходишь к варианту. Зачем тогда вообще база нужна?
1.Запрос к базе - получение адресов имеющихся изображений
2. Работа с изображениями.
Здравствуйте! Выбрать нужно только те ссылки на изображения, id пользователя которых = id пользователя аккаунта. Т.е. выбор нужно ограничить.
Если в общем, то:
Существует личный кабинет пользователя, здесь есть фотогаллерея, которая содержит фотографии добавленные только пользователем. Эти фотографии и нужно отображать.
 

Userbanderas

Новичок
На данный момент беспокоит техническая сторона момента. Т.к. не могу полностью разобраться с массивами, в коде:
PHP:
    private function get_file_objects() {
        return array_values(array_filter(array_map(
            array($this, 'get_file_object'),    // get_file_object обрабатывает имя каждого выводимого файла
            scandir($this->options['upload_dir'])    // сканируемый каталог big_img, возвращает массив
        )));
    }
Сам запрос собрать не проблема! Для меня проблема в том, что я не могу понять, куда его вставлять нужно, этот запрос!
 

aaachilov

Новичок
Делаешь в таблице с фотками поле user_id например и делаешь выборку из базы с указанием - выбрать все картинки где user_id = id пользователя. у тебя обычный массив в ответе придёт и потом в цикле его выводи.
А тот код что представил выше вообще выкинь - он для тех целей который ты обозначил вообще не нужен. Имя картинки хранится там же в базе как и её размер и ещё что нибуь типа описания
 

sobachnik

Новичок
Я в последнее время вообще в базе не храню названия фоток и названия папок. Всё намного проще - все названия соответствуют ID. Храню только тип. Например есть таблица с альбомами и таблица с картинками. Путь к картинке тогда будет такой:

images/[ID альбома]/[ID картинки].[тип картинки]

Например

images/1/122.jpg
 

Userbanderas

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

Userbanderas

Новичок
Я в последнее время вообще в базе не храню названия фоток и названия папок. Всё намного проще - все названия соответствуют ID. Храню только тип. Например есть таблица с альбомами и таблица с картинками. Путь к картинке тогда будет такой:

images/[ID альбома]/[ID картинки].[тип картинки]

Например

images/1/122.jpg
Тогда вам такой вопрос ещё:
есть ли смысл создавать несколько каталогов, если ссылки на изображения(имена файлов) хранятся в mysql?
 

aaachilov

Новичок
sobachnik Название картинки и её адрес это разные вещи.
Не получается разобраться, куда нужно вставлять запрос в самом коде программы.
Я же Вам говорю выкиньте этот код так как он для Вашей задачи не требуется.
А куда вставлять код мы сами догадаться не можем так как мы не видем Вашего кода.
Выполняйте запрос там, где Вам нужны данные, которые в нём придут.

Вы объясните подробно суть проблемы и то что Вы хотите получить на выходе - я Вам помогу, угадывать здесь никто не будет что Вы хотите и в Ваш код тоже всем лень вчитываться
 

Userbanderas

Новичок
PHP:
<?php
/*require_once("../../../../php/core.php");
include ("../../../../../../blocks/bd.php");
*/


error_reporting(E_ALL | E_STRICT);

class UploadHandler
{
    private $options;
    
    function __construct($options=null) {
        $this->options = array(		
            'script_url' => $this->getFullUrl().'/'.basename(__FILE__),
			'upload_dir' => dirname(__FILE__).'/../../../../../../image/photo_hotel/big_img/',
            'upload_url' => $this->getFullUrl().'/../../../../../../image/photo_hotel/big_img/', // фотогаллерея в модальном окне для просмотра
            'param_name' => 'files',
            // The php.ini settings upload_max_filesize and post_max_size
            // take precedence over the following max_file_size setting:
            'max_file_size' => null,
            'min_file_size' => 1,
            'accept_file_types' => '/.+$/i',
            'max_number_of_files' => null,
            // Set the following option to false to enable non-multipart uploads:
            'discard_aborted_uploads' => true,	// мультизарузка фотографий, false - загрузка по одной фото
            'image_versions' => array(
                // Uncomment the following version to restrict the size of
                // uploaded images. You can also add additional versions with
                // their own upload directories:
                // изменяет выставляется нужный размер для больших фотографий
				// дирректория для загрузки больших фото
                'large' => array(
                    'upload_dir' => dirname(__FILE__).'/../../../../../../image/photo_hotel/big_img/',
                    'upload_url' => dirname($_SERVER['PHP_SELF']).'/../../../../../../image/photo_hotel/big_img/',
                    'max_width' => 1920,
                    'max_height' => 1200
                ),
                
				
                'thumbnail' => array(
/*                    'upload_dir' => dirname(__FILE__).'/thumbnails/',
                    'upload_url' => $this->getFullUrl().'/thumbnails/',*/
					'upload_dir' => dirname(__FILE__).'/../../../../../../image/photo_hotel/mini_img/',
                    'upload_url' => $this->getFullUrl().'/../../../../../../image/photo_hotel/mini_img/',
                    'max_width' => 80,
                    'max_height' => 80
                )
            )
        );
        if ($options) {
            $this->options = array_replace_recursive($this->options, $options);
        }
    }

	function getFullUrl() {
		return
			(isset($_SERVER['HTTPS']) ? 'https://' : 'http://').
			(isset($_SERVER['REMOTE_USER']) ? $_SERVER['REMOTE_USER'].'@' : '').
			(isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ($_SERVER['SERVER_NAME'].
			(isset($_SERVER['HTTPS']) && $_SERVER['SERVER_PORT'] == 443 ||
			$_SERVER['SERVER_PORT'] == 80 ? '' : ':'.$_SERVER['SERVER_PORT']))).
			substr($_SERVER['SCRIPT_NAME'],0, strrpos($_SERVER['SCRIPT_NAME'], '/'));
	}
    
    private function get_file_object($file_name) {
	
	        $file_path = $this->options['upload_dir'].$file_name;
        if (is_file($file_path) && $file_name[0] !== '.') // если файлы в папке есть и название не начинается с .(точки)
		{
            $file = new stdClass();
            $file->name = $file_name;
            $file->size = filesize($file_path);
            $file->url = $this->options['upload_url'].rawurlencode($file_name);	// путь в галлерею
            foreach($this->options['image_versions'] as $version => $options) {
                if (is_file($options['upload_dir'].$file_name)) {
                    $file->{$version.'_url'} = $options['upload_url'].rawurlencode($file_name);	// путь к мини картинке
                }
            }
            $file->delete_url = $this->options['script_url']
                .'?file='.rawurlencode($file->name);
            $file->delete_type = 'DELETE';
            return $file;
        }
        return null;
    }
    
    private function get_file_objects() {

        return array_values(array_filter(array_map(
        array($this, 'get_file_object'),	// get_file_object обрабатывает имя каждого выводимого файла
            scandir($this->options['upload_dir'])	// сканируемый каталог big_img, возвращает массив
        )));
    }

/*    private function create_scaled_image($file_name, $options) {
        $file_path = $this->options['upload_dir'].$file_name;
        $new_file_path = $options['upload_dir'].$file_name;
        list($img_width, $img_height) = @getimagesize($file_path);
        if (!$img_width || !$img_height) {
            return false;
        }
        $scale = min(
            $options['max_width'] / $img_width,
            $options['max_height'] / $img_height
        );
        if ($scale > 1) {
            $scale = 1;
        }
        $new_width = $img_width * $scale;
        $new_height = $img_height * $scale;
        $new_img = @imagecreatetruecolor($new_width, $new_height);
        switch (strtolower(substr(strrchr($file_name, '.'), 1))) {
            case 'jpg':
            case 'jpeg':
                $src_img = @imagecreatefromjpeg($file_path);
                $write_image = 'imagejpeg';
                break;
            case 'gif':
                @imagecolortransparent($new_img, @imagecolorallocate($new_img, 0, 0, 0));
                $src_img = @imagecreatefromgif($file_path);
                $write_image = 'imagegif';
                break;
            case 'png':
                @imagecolortransparent($new_img, @imagecolorallocate($new_img, 0, 0, 0));
                @imagealphablending($new_img, false);
                @imagesavealpha($new_img, true);
                $src_img = @imagecreatefrompng($file_path);
                $write_image = 'imagepng';
                break;
            default:
                $src_img = $image_method = null;
        }
        $success = $src_img && @imagecopyresampled(
            $new_img,
            $src_img,
            0, 0, 0, 0,
            $new_width,
            $new_height,
            $img_width,
            $img_height
        ) && $write_image($new_img, $new_file_path);
        // Free up memory (imagedestroy does not delete files):
        @imagedestroy($src_img);
        @imagedestroy($new_img);
        return $success;
    }*/
    
 /*   private function has_error($uploaded_file, $file, $error) {
        if ($error) {
            return $error;
        }
        if (!preg_match($this->options['accept_file_types'], $file->name)) {
            return 'acceptFileTypes';
        }
        if ($uploaded_file && is_uploaded_file($uploaded_file)) {
            $file_size = filesize($uploaded_file);
        } else {
            $file_size = $_SERVER['CONTENT_LENGTH'];
        }
        if ($this->options['max_file_size'] && (
                $file_size > $this->options['max_file_size'] ||
                $file->size > $this->options['max_file_size'])
            ) {
            return 'maxFileSize';
        }
        if ($this->options['min_file_size'] &&
            $file_size < $this->options['min_file_size']) {
            return 'minFileSize';
        }
        if (is_int($this->options['max_number_of_files']) && (
                count($this->get_file_objects()) >= $this->options['max_number_of_files'])
            ) {
            return 'maxNumberOfFiles';
        }
        return $error;
    }*/
    
/*    private function trim_file_name($name, $type) {
	
        // Remove path information and dots around the filename, to prevent uploading
        // into different directories or replacing hidden system files.
        // Also remove control characters and spaces (\x00..\x20) around the filename:
		// Удалите информацию пути и точек вокруг filename, чтобы предохранять загрузке // в другие директории или заменять спрятавшие 						        //системные файлы.
        // Также удалите управляющие символы и пробелы (\x00..\x20) вокруг filename:
		// $$$$$$$при вставке фото, обрабатываем имя файла$$$$$$$
        $file_name = trim(basename(stripslashes($name)), ".\x00..\x20");
        // Add missing file extension for known image types:
		// Добавьте отсутствующего файловое расширение для известных типов образа:
        if (strpos($file_name, '.') === false &&
            preg_match('/^image\/(gif|jpe?g|png)/', $type, $matches)) {
          $file_name .= '.'.$matches[1];
        }
        return $file_name;
    } */
 

Userbanderas

Новичок
PHP:
/*private function handle_file_upload($uploaded_file, $name, $size, $type, $error) {
        $file = new stdClass();
        $file->name = $this->trim_file_name($name, $type);
        $file->size = intval($size);
        $file->type = $type;
        $error = $this->has_error($uploaded_file, $file, $error);
        if (!$error && $file->name) {
            $file_path = $this->options['upload_dir'].$file->name;
            $append_file = !$this->options['discard_aborted_uploads'] &&
                is_file($file_path) && $file->size > filesize($file_path);
            clearstatcache();
            if ($uploaded_file && is_uploaded_file($uploaded_file)) {
			
// вставляем в БД ссылку фотографий
			$objCore = new Core();
$objCore->initSessionInfo();
$objCore->initFormController(); 
$userdata = $objCore->getUserAccountDetails();	// выборка инфы из mysql выбранного аккаунта

$id_hotel = $userdata['id']; // id гостиницы в БД
			
$result = mysql_query("INSERT INTO photo_hotel (`id_hotel`,`link`) VALUES (
'".$id_hotel."',
'".$name."'
)");

                // multipart/formdata uploads (POST method uploads)
                if ($append_file) {
                    file_put_contents(
                        $file_path,
                        fopen($uploaded_file, 'r'),
                        FILE_APPEND
                    );
                } else {
                    move_uploaded_file($uploaded_file, $file_path);
                }
            } else {
                // Non-multipart uploads (PUT method support)
                file_put_contents(
                    $file_path,
                    fopen('php://input', 'r'),
                    $append_file ? FILE_APPEND : 0
                );
            }
            $file_size = filesize($file_path);
            if ($file_size === $file->size) {
                $file->url = $this->options['upload_url'].rawurlencode($file->name);
                foreach($this->options['image_versions'] as $version => $options) {
                    if ($this->create_scaled_image($file->name, $options)) {
                        $file->{$version.'_url'} = $options['upload_url']
                            .rawurlencode($file->name);
                    }
                }
            } else if ($this->options['discard_aborted_uploads']) {
                unlink($file_path);
                $file->error = 'abort';
            }
            $file->size = $file_size;
            $file->delete_url = $this->options['script_url']
                .'?file='.rawurlencode($file->name);
            $file->delete_type = 'DELETE';
        } else {
            $file->error = $error;
        }
        return $file;
    }*/
    
    public function get() {
        $file_name = isset($_REQUEST['file']) ?
            basename(stripslashes($_REQUEST['file'])) : null;
        if ($file_name) {
            $info = $this->get_file_object($file_name);
        } else {
            $info = $this->get_file_objects();
        }
        header('Content-type: application/json');
        echo json_encode($info);
    }
    
    public function post() {
        if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') {
            return $this->delete();
        }
        $upload = isset($_FILES[$this->options['param_name']]) ?
            $_FILES[$this->options['param_name']] : null;
        $info = array();
        if ($upload && is_array($upload['tmp_name'])) {
            foreach ($upload['tmp_name'] as $index => $value) {
                $info[] = $this->handle_file_upload(
                    $upload['tmp_name'][$index],
                    isset($_SERVER['HTTP_X_FILE_NAME']) ?
                        $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'][$index],
                    isset($_SERVER['HTTP_X_FILE_SIZE']) ?
                        $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'][$index],
                    isset($_SERVER['HTTP_X_FILE_TYPE']) ?
                        $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index],
                    $upload['error'][$index]
                );
            }
        } /*elseif ($upload || isset($_SERVER['HTTP_X_FILE_NAME'])) {
            $info[] = $this->handle_file_upload(
                isset($upload['tmp_name']) ? $upload['tmp_name'] : null,
                isset($_SERVER['HTTP_X_FILE_NAME']) ?
                    $_SERVER['HTTP_X_FILE_NAME'] : (isset($upload['name']) ?
                        isset($upload['name']) : null),
                isset($_SERVER['HTTP_X_FILE_SIZE']) ?
                    $_SERVER['HTTP_X_FILE_SIZE'] : (isset($upload['size']) ?
                        isset($upload['size']) : null),
                isset($_SERVER['HTTP_X_FILE_TYPE']) ?
                    $_SERVER['HTTP_X_FILE_TYPE'] : (isset($upload['type']) ?
                        isset($upload['type']) : null),
                isset($upload['error']) ? $upload['error'] : null
            );
        }*/
        header('Vary: Accept');
        $json = json_encode($info);
        $redirect = isset($_REQUEST['redirect']) ?
            stripslashes($_REQUEST['redirect']) : null;
        if ($redirect) {
            header('Location: '.sprintf($redirect, rawurlencode($json)));
            return;
        }
       /* if (isset($_SERVER['HTTP_ACCEPT']) &&
            (strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false)) {
            header('Content-type: application/json');
        } else {
            header('Content-type: text/plain');
        }
        echo $json;*/
    }
    
    public function delete() {
        $file_name = isset($_REQUEST['file']) ?
            basename(stripslashes($_REQUEST['file'])) : null;
        $file_path = $this->options['upload_dir'].$file_name;
        $success = is_file($file_path) && $file_name[0] !== '.' && unlink($file_path);
        if ($success) {
            foreach($this->options['image_versions'] as $version => $options) {
                $file = $options['upload_dir'].$file_name;
                if (is_file($file)) {
				
//$$$$$$$$$$$$$$$$$$$$$$$$		удаляем ссылку на фото из БД		$$$$$$$$$$$$$$$$$$$$$$$$$
$objCore = new Core();	
$objCore->initSessionInfo();
$objCore->initFormController(); 
$userdata = $objCore->getUserAccountDetails();	// выборка инфы из mysql выбранного аккаунта

$id_hotel = $userdata['id'];
			
$result = mysql_query("DELETE FROM photo_hotel WHERE id_hotel = '".$id_hotel."' AND link = '".$file_name."'");

                    unlink($file);
                }
            }
        }
        header('Content-type: application/json');
        echo json_encode($success);
    }
}

$upload_handler = new UploadHandler();

header('Pragma: no-cache');
header('Cache-Control: private, no-cache');
header('Content-Disposition: inline; filename="files.json"');
header('X-Content-Type-Options: nosniff');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: OPTIONS, HEAD, GET, POST, PUT, DELETE');
header('Access-Control-Allow-Headers: X-File-Name, X-File-Type, X-File-Size');

switch ($_SERVER['REQUEST_METHOD']) {
    case 'OPTIONS':
        break;
    case 'HEAD':
    case 'GET':
        $upload_handler->get();
        break;
    case 'POST':
        $upload_handler->post();
        break;
    case 'DELETE':
        $upload_handler->delete();
        break;
    default:
        header('HTTP/1.1 405 Method Not Allowed');
}
 

Userbanderas

Новичок
части кода я закомментировал, чтобы они меня не путали. Но это не мешает выводу и отображению фотографий на данный момент. Сейчас выводятся все изображения, которые имеются в каталоге.
 

aaachilov

Новичок
Вам нужно сделать чтоб при выборе альбома пользователя XXX выводились фотографи пользователя XXX
я так понял?
 

sobachnik

Новичок
Название картинки и её адрес это разные вещи.
Ну, понятное дело. Просто зачем вообще нужно хранить это в б.д.? Адрес картинки легко строится - папка с файлами в ней папка с id альбома, в ней картинки с названиями, соответствующими id самих этих картинок. Структуру папок программы мы же всегда знаем, сами же придумываем :)

есть ли смысл создавать несколько каталогов, если ссылки на изображения(имена файлов) хранятся в mysql?
Если предполагается, что картинок будет ооочень много - ну, там, десятки тысяч или даже сотни тысяч - то было бы не лишним, потому как искать что-то в папке с десятками тысяч элементов будет сложнее и ждать придётся долго, пока FTP-клиент получит список файлов. Да и для сервера, наверно, будет лишней нагрузкой выбирать файл из такого количества, хотя тут не уверен. Практика показывает, что серверу как раз-таки абсолютно пофигу, сколько файлов в папке. Во всяком случае в одном проекте (писался не мной, я просто принимал участие в модификациях) было такое, что в одной папке лежало более сотни тысяч файлов (как раз таки картинок), пользователи их загружали, а php просто складывал в одну папку всё... Там названия картинок - был md5 хэш от даты загрузки картинки - md5(microtime(true)) . 'jpg' - так вот, отдавались картинки без раздумий со стороны сервера, всё мгновенно. Но можно было успеть сбегать покурить, пока содержимое этой папки с картинками откроется в FileZilla... Ну и да, там был выделенный сервер и очень даже, я бы сказал, нехилый, с моей точки зрения. 8-ми ядерный проц какой-то, 16 Гб быстрой оперативки, винты быстрые, 100МБит сеть. В общем, возможно, что просто за счёт железа оно не тормозило.
 

aaachilov

Новичок
sobachnik
Ну раз у Вас есть время писать такие поэмы давайте поможем человеку.
Вы берите класс работы с файлами и измените пути на /папка для фоток/id юзера/insert_id() .расширение
А я ему все выведу на экран.

Причём при Вашем варианте все равно придётся хранить в базе расширение картинки или ограничевать пользователей только например а jpg
 

aaachilov

Новичок
Ладно - давай бэкап проекта и дамп базы данных , так быстрее будет, чем ты будешь объяснять что к чему - да и нужно практиковаться в чтении чужого кода - кстати пикольная загружалка - нужно посмотреть, может и мне пригодится.
 

Userbanderas

Новичок
сама галлерея по этой ссылке:
ссылка

Таблица с фото:


-- phpMyAdmin SQL Dump
-- version 3.2.3
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Дек 24 2011 г., 15:26
-- Версия сервера: 5.1.40
-- Версия PHP: 5.3.3

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- База данных: `reservation`
--

-- --------------------------------------------------------

--
-- Структура таблицы `photo_hotel`
--

CREATE TABLE IF NOT EXISTS `photo_hotel` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`id_hotel` int(6) unsigned NOT NULL,
`title` varchar(255) NOT NULL,
`link` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `id_hotel` (`id_hotel`),
KEY `title` (`title`),
KEY `title_2` (`title`),
KEY `id_hotel_2` (`id_hotel`),
KEY `id_hotel_3` (`id_hotel`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=384 ;

--
-- Дамп данных таблицы `photo_hotel`
--

INSERT INTO `photo_hotel` (`id`, `id_hotel`, `title`, `link`) VALUES
(37, 12, '', '9Бородино.jpg'),
(36, 12, '', '8Бородино.jpg'),
(35, 12, '', '7Бородино.jpg'),
(34, 12, '', '6Бородино.jpg'),
(33, 12, '', '5Бородино.jpg'),
(32, 12, '', '4Бородино.jpg'),
(31, 12, '', '3Бородино.jpg'),
(30, 12, '', '2Бородино.jpg'),
(29, 12, '', '1Бородино.jpg'),
(38, 13, '', '1Аннушка.jpg'),
(39, 13, '', '2Аннушка.jpg'),
(40, 13, '', '3Аннушка.jpg'),
(41, 13, '', '4Аннушка.jpg'),
(42, 13, '', '5Аннушка.jpg'),
(43, 13, '', '6Аннушка.jpg'),
(44, 14, '', '1Лалетин.jpg'),
(45, 14, '', '2Лалетин.jpg'),
(46, 14, '', '3Лалетин.jpg'),
(47, 14, '', '4Лалетин.jpg'),
(48, 14, '', '5Лалетин.jpg'),
(49, 16, '', '1Гостиница Арбат.jpg'),
(77, 17, '', '9МоскваУниверситетская.jpg'),
(76, 17, '', '8МоскваУниверситетская.jpg'),
(75, 17, '', '7МоскваУниверситетская.jpg'),
(74, 17, '', '6МоскваУниверситетская.jpg'),
(73, 17, '', '5МоскваУниверситетская.jpg'),
(72, 17, '', '4МоскваУниверситетская.jpg'),
(71, 17, '', '3МоскваУниверситетская.jpg'),
(70, 17, '', '2МоскваУниверситетская.jpg'),
(69, 17, '', '1МоскваУниверситетская.jpg'),
(78, 17, '', '10МоскваУниверситетская.jpg'),
(79, 17, '', '11МоскваУниверситетская.jpg'),
(80, 17, '', '12МоскваУниверситетская.jpg'),
(81, 17, '', '13МоскваУниверситетская.jpg'),
(82, 17, '', '14МоскваУниверситетская.jpg'),
(83, 17, '', '15МоскваУниверситетская.jpg'),
(84, 17, '', '16МоскваУниверситетская.jpg'),
(85, 17, '', '17МоскваУниверситетская.jpg'),
(86, 18, '', '1Отель Арбат Норд.jpg'),
(87, 18, '', '2Отель Арбат Норд.jpg'),
(88, 18, '', '3Отель Арбат Норд.jpg'),
(381, 44, '', '073.gif'),
(366, 45, '', '502183.jpg'),
(376, 44, '', '05.gif');
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху