Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Переименование файлов при занесение в базу данных и дерикторию соответственно
 
 автор: сотка   (30.12.2011 в 21:13)   письмо автору
 
 

здравствуйте!

вот так выглядит код добавления



// Устанавливаем соединение с базой данных
  require_once("../../config/config.php");
  // Подключаем блок авторизации
  require_once("../utils/security_mod.php");
  // Подключаем классы формы
  require_once("../../config/class.config.dmn.php");
  // Подключаем функцию изменения размера изображения
  require_once("../utils/utils.resizeimg.php");
  // Защита от SQL-инъекции
  $_GET['id_catalog']   = intval($_GET['id_catalog']);

  if(empty($_POST)) $_REQUEST['hide'] = true;
  try
  {
    $name = new field_text("name",
                           "Название",
                           false,
                           $_POST['name']);
     $alt = new field_text("alt",
                           "alt-тег",
                           false,
                           $_POST['alt']);                      
    $big   = new field_file("big",
                            "файл",
                             false,
                             $_FILES,
                            "../../files/photo/");
                
    $hide = new field_checkbox("hide",
                               "Отображать",
                               $_REQUEST['hide']);
     $id_parent = new field_hidden_int("id_parent",
                                 true,
                                 $_REQUEST['id_parent']);                            
    $page = new field_hidden_int("page",
                                 false,
                                 $_REQUEST['page']);
                                 
    $form = new form(array("name"       => $name,
                            "alt"        => $alt,
                           "big"        => $big,
                          
                           "hide"       => $hide,   
                           "id_parent" => $id_parent,
                           "page"       => $page), 
                     "Добавить",
                     "field");
  
    // Обработчик HTML-формы
    if(!empty($_POST))
    {
      // Проверяем корректность заполнения HTML-формы
      // и обрабатываем текстовые поля
      $error = $form->check();
      if(empty($error))
      {
        // Извлекаем текущую максимальную позицию
        $query = "SELECT MAX(pos) FROM $tbl_image_position
                  WHERE id_catalog={$form->fields['id_parent']->value}";
        $pos = mysql_query($query);
        if(!$pos)
        {
          throw new ExceptionMySQL(mysql_error(), 
                                   $query,
                                  "Ошибка при извлечении 
                                   текущей позиции");
        }
        $pos = mysql_result($pos, 0) + 1;
        // Скрытый или открытая позиция
        if($form->fields['hide']->value) $showhide = "show";
        else $showhide = "hide";
        // Изображения
        $var = $form->fields['big']->get_filename();
        if(!empty($var))
        {
          $big = "files/photo/".$var;
          $small = "files/photo/s_".$var;
          
        }
        else $big = "";
        // Извлекаем параметры галереи
        $query = "SELECT * FROM $tbl_photo_settings LIMIT 1";
        $set = mysql_query($query);
        if(!$set)
        {
          throw new ExceptionMySQL(mysql_error(), 
                                   $query,
                                  "Ошибка при извлечении 
                                   параметров галереи");
        }
        if(mysql_num_rows($set))
        {
          $settings = mysql_fetch_array($set);
        }
        else
        {
          $settings['width'] = 150;
          $settings['height'] = 133;
        }
// Формируем малое изображение
        resizeimg($big, $small, $settings['width'], $settings['height']);
        // Формируем SQL-запрос на добавление позиции
        $query = "INSERT INTO $tbl_image_position
                  VALUES (NULL,
                          '{$form->fields[name]->value}',
                          '{$form->fields[alt]->value}',
                          '$small',
                          '$big',
                          
                          
                          '$showhide',
                           $pos,
                          {$form->fields[id_parent]->value})";
        if(!mysql_query($query))
        {
          throw new ExceptionMySQL(mysql_error(), 
                                   $query,
                                  "Ошибка при добавлении 
                                   позиции");
        }

        // Осуществляем редирект на главную страницу
        header("Location: index.php?".
               "id_parent={$form->fields[id_parent]->value}&".
               "page={$form->fields[page]->value}");
        exit();
      }
    }
    // Начало страницы
    $title     = 'Добавление картинки';
    $pageinfo  = '<p class=help></p>';
    // Включаем заголовок страницы
    require_once("../utils/top.php");
    
    echo "<p><a href=# onClick='history.back()'>Назад</a></p>";
    // Выводим сообщения об ошибках если они имеются
    if(!empty($error))
    {
      foreach($error as $err)
      {
        echo "<span style=\"color:red\">$err</span><br>";
      }
    }
    // Выводим HTML-форму 
    $form->print_form();
  }
  catch(ExceptionObject $exc) 
  {
    require("../utils/exception_object.php"); 
  }
  catch(ExceptionMySQL $exc)
  {
    require("../utils/exception_mysql.php"); 
  }
  catch(ExceptionMember $exc)
  {
    require("../utils/exception_member.php"); 
  }

  // Включаем завершение страницы
  require_once("../utils/bottom.php");


каким образом применить ф-цию rename?

  Ответить  
 
 автор: сотка   (30.12.2011 в 21:15)   письмо автору
 
   для: сотка   (30.12.2011 в 21:13)
 

$i=1; 
 while  
      { 
         
         rename("$i._mysite"); 
         $i++; 
     } 

т.е чтобы было 1_mysite.jpg,2_mysite.jpg и сохранялось расширение

  Ответить  
 
 автор: cheops   (30.12.2011 в 21:20)   письмо автору
 
   для: сотка   (30.12.2011 в 21:15)
 

Я что-то не вижу этой конструкции выше... у вас там один файл или нет? Какова изначальная задача?

  Ответить  
 
 автор: сотка   (30.12.2011 в 21:23)   письмо автору
 
   для: cheops   (30.12.2011 в 21:20)
 

изначальная задача выводиться форма, нажимаем обзор выбираем файл и заносим в базу и файл помещается в директорию! Сейчас хочу перед занесением в базу менять файл по принципу
задаем имя директории
 $path = "../../files/photo/"; 

$i=1; 
 while  
      { 
         
         rename("$i._mysite"); 
         $i++; 
     } 
  

в данном коде это не прописано! Не могу сообразить

Файлов несколько сотен поэтому применить думаю цикл

  Ответить  
 
 автор: cheops   (30.12.2011 в 21:32)   письмо автору
 
   для: сотка   (30.12.2011 в 21:23)
 

Погодите, вы при помощи формы, которая приведена выше добавляете один файл? Если да, то вот пути к нему и уменьшенной копии
$big = "files/photo/".$var; 
$small = "files/photo/s_".$var;
$var - это файла, которое вы вольны заменить на свое, или добавить суффикс или ещё как-то поступить.

Или файлы уже находятся на сервере и в базе данных и речь идет о том, чтобы изменить их названия?

  Ответить  
 
 автор: сотка   (30.12.2011 в 21:40)   письмо автору
 
   для: cheops   (30.12.2011 в 21:32)
 

>Погодите, вы при помощи формы, которая приведена выше добавляете один файл? Если да, то вот пути к нему и уменьшенной копии
>
$big = "files/photo/".$var; 
>$small = "files/photo/s_".$var;
$var - это файла, которое вы вольны заменить на свое, или добавить суффикс или ещё как-то поступить.
>
>Или файлы уже находятся на сервере и в базе данных и речь идет о том, чтобы изменить их названия?

$var изменить которые на сервере пусть остаются такие какие есть теперь! Например добавляю файл kartinka.jpg , нужно чтобы и в базу и в папку photo файл попал как 1_mysite.jpg, 2_mysite.jpg и так далее(файлов много)

  Ответить  
 
 автор: cheops   (31.12.2011 в 13:06)   письмо автору
 
   для: сотка   (30.12.2011 в 21:40)
 

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

  Ответить  
 
 автор: сотка   (31.12.2011 в 13:35)   письмо автору
 
   для: cheops   (31.12.2011 в 13:06)
 

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

  Ответить  
 
 автор: cheops   (31.12.2011 в 13:53)   письмо автору
 
   для: сотка   (31.12.2011 в 13:35)
 

Изменять название нужно в момент занесения? Т.е. $var в скрипте выше? Правильно ли я понимаю, что у нас в директории имеются файлы
file_1.jpg
file_2.jpg
file_3.jpg
следующий загруженный файл, как бы он не назывался должен называться file_4.jpg?

  Ответить  
 
 автор: сотка   (31.12.2011 в 14:15)   письмо автору
 
   для: cheops   (31.12.2011 в 13:53)
 

Да именно так

  Ответить  
 
 автор: cheops   (31.12.2011 в 17:50)   письмо автору
 
   для: сотка   (31.12.2011 в 14:15)
 

Можно начать отталкиваться от следующей функции, которая проверяет указанную директорию в поисках файлов вида file_1.jpg и возвращает следующий номер, который нужно назначить загружаемому файлу.
<?php
  $dir 
"files/photo/";
  echo 
get_id($dir);
  function 
get_id($dir)
  {
    
$number 0;
    if (
is_dir($dir))
    {
      if (
$dh opendir($dir))
      {
        while ((
$file readdir($dh)) !== false)
        {
          if(
is_file($dir.$file))
          {
            if(
preg_match("|^file_([\d]+).jpg$|"$file$out))
            {
              if(
$number $out[1]) $number $out[1];
            }
          }
        }
        
closedir($dh);
      }
    }
    return 
$number 1;
  }
?> 

  Ответить  
 
 автор: сотка   (04.01.2012 в 15:40)   письмо автору
 
   для: cheops   (31.12.2011 в 17:50)
 

спасибо за ф-цию

  Ответить  
 
 автор: cheops   (30.12.2011 в 21:16)   письмо автору
 
   для: сотка   (30.12.2011 в 21:13)
 

Эээ... а к чему хотите применить функцию rename()?

  Ответить  
 
 автор: сотка   (30.12.2011 в 21:17)   письмо автору
 
   для: cheops   (30.12.2011 в 21:16)
 

к картинкам! или есть другие более удобные ф-ции?

  Ответить  
 
 автор: сотка   (30.12.2011 в 23:31)   письмо автору
 
   для: сотка   (30.12.2011 в 21:17)
 

Можно ли каким то образом это сделать?

  Ответить  
 
 автор: Valick   (31.12.2011 в 07:02)   письмо автору
 
   для: сотка   (30.12.2011 в 23:31)
 

попробую найти нужную тему

  Ответить  
 
 автор: сотка   (31.12.2011 в 13:36)   письмо автору
 
   для: Valick   (31.12.2011 в 07:02)
 

Буду благодарен!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования