Проблема с фото при редактировании резюме в скрипте yanaidu

Статус
В этой теме нельзя размещать новые ответы.
2stealthdebuger хм, а что в этом коде неверного было- обычная проверка на расширение файла.
скорее надо смотреть
PHP:
function editConfirm() {
     ...
        if (isset($_FILES["photo"]) && $_FILES["photo"]["name"]) {
            $path = ROOT_DIR . $item->getPhotoPath();
            move_uploaded_file($_FILES["photo"]["tmp_name"], $path);
        }
        if (isset($_FILES["document"]) && $_FILES["document"]["name"]) {
            $path = ROOT_DIR . $item->getDocumentPath();
            move_uploaded_file($_FILES["photo"]["tmp_name"], $path);
        }
        header("Location: " . JOB_PATH . "resume/concrete-" . $item->record_id . "/");
    }

Фото не загружается - это может быть из-за неверных путей\неверного имени\прав... Чтобы узнать что именно сломалось нужно выводить информацию о ходе работы- замените

PHP:
      if (isset($_FILES["photo"]) && $_FILES["photo"]["name"]) {
            $path = ROOT_DIR . $item->getPhotoPath();
            move_uploaded_file($_FILES["photo"]["tmp_name"], $path);
        }
        if (isset($_FILES["document"]) && $_FILES["document"]["name"]) {
            $path = ROOT_DIR . $item->getDocumentPath();
            move_uploaded_file($_FILES["photo"]["tmp_name"], $path);
        }
на

PHP:
echo "<pre>";
        print_r($_FILES);
        if (isset($_FILES["photo"]) && $_FILES["photo"]["name"]) {
            $path = ROOT_DIR . $item->getPhotoPath();
            echo "Загружаем файл из папки {$_FILES["photo"]["tmp_name"]} в $path\n";
            $f = move_uploaded_file($_FILES["photo"]["tmp_name"], $path);
             if(!$f){
                 echo "Не смогли загрузить фото! \n";
             }
        }else{
              echo "фото нет! \n";
        }
        if (isset($_FILES["document"]) && $_FILES["document"]["name"]) {
            $path = ROOT_DIR . $item->getDocumentPath();
            echo "Загружаем файл из папки {$_FILES["document"]["tmp_name"]} в $path\n";
             $f = move_uploaded_file($_FILES["document"]["tmp_name"], $path);
             if(!$f){
                 echo "Не смогли загрузить документ! \n";
             }      
        }else{
              echo "документа нет! \n";
        }
exit;

Это покажет все пути и что вообще делается при заливке фото. И покажите что он скажет.
+ там действительно ошибка -

if (isset($_FILES["document"]) && $_FILES["document"]["name"]) {
$path = ROOT_DIR . $item->getDocumentPath();
move_uploaded_file($_FILES["photo"]["tmp_name"], $path);
}

должно быть document
 
Заменил как Вы сказали, вывело вот такое:
Array
(
)
фото нет!
документа нет!


Я так понимаю, судя по тому, что ни фото нет, ни файла при отправке формы редактирования, они не указываются изначально для редактирования.

Может проблема кроется где то в:
PHP:
function editConfirm() {

		require_once(CLASSES_PATH . "Job/ResumeManager.php");
		$manager = new JobResumeManager();
		if (!$this->checkBelonging($item = $manager->createById($this->id))) {
			header("Location: " . JOB_PATH . "resume/concrete-" . $this->id . "/");
			return;
		}


Если Вас не затруднит, гляньте пожалуйста на папку classes/Job в целом

В том фрагменте кода, о котором говорил stealthdebuger, ошибка была в $FILES, а должно было быть $_FILES, но всё равно не помогло...
Уже пытался сделать по аналогии раздела Объявлений и Авто - тоже никак не получается... Не хватает знаний php... А с точки зрения логики - уже умопомрочение, когда данные добавляются в резюме, используются те же функции что и при редактировании, тот же файл ResumeItem.php (правда инклюдится через ResumeManager.php), но при добавлении всё прекрасно работает, а при редактировании пропадают расширения к фото и файлу из базы (колонки: photo и document (записи: jpg и doc)) и сами файлы не обновляются в загруженной директории, хотя вся другая информация редактируется отлично.
 
Заменил как Вы сказали, вывело вот такое:
Array
(
)
фото нет!
документа нет!
Я так понимаю, судя по тому, что ни фото нет, ни файла при отправке формы редактирования, они не указываются изначально для редактирования.
Может проблема кроется где то в:
PHP:
function editConfirm() {
		require_once(CLASSES_PATH . "Job/ResumeManager.php");
		$manager = new JobResumeManager();
		if (!$this->checkBelonging($item = $manager->createById($this->id))) {
			header("Location: " . JOB_PATH . "resume/concrete-" . $this->id . "/");
			return;
		}
Вот код который вы привели - означает что ни одного файла не было отправлено. Это может быть если поля файлов находятся вне формы или там ajax\js\flash загрузка, которая не работает.
editConfirm() - нет, это функция сообщает результат обработки- успешно, не успешно. Нужно разобраться почему файлы не отправлены.
 
Парадокс, при отправки формы - вся информация обновляется, а именно фото и файл резюме - нет. Хотя в шаблоне resume_edit.tpl поля вроде верные:
<tr valign=top>
<td>&nbsp;</td>
<td>Моя фотография:</td>
<td><input name="photo" type="file"></td>
</tr>

<tr valign=top>
<td>&nbsp;</td>
<td>Прикрепить файл резюме:</td>
<td><input name="document" type="file"></td>
</tr>

Если есть у Вас возможность - Прошу Вас, помогите пожалуйста разобраться с этим редактированием.
 
Когда происходит сохранение редактирования, функция в файле Job/ResumeItem.php
PHP:
	function _updateFields() {
		$sql =  parent::_updateFields()
			 . ", age = " . SqlData::intVal($this->age)
			 . ", school = " . SqlData::stringVal($this->school)
			 . ", school_speciality = " . SqlData::stringVal($this->school_speciality)
			 . ", education_addition = " . SqlData::stringVal($this->education_addition)
			 . ", family_state = " . SqlData::intVal($this->education)
			 . ", photo = " . SqlData::stringVal($this->photo)
			 . ", document = " . SqlData::stringVal($this->document);
		return $sql;
	}
обновляет базу без данных о фото/файл, соответственно исчезает инфо после редактирования. Если закомментировать строку //$_POST["photo"] = ""; в файле ResumeConcreteModule.php в функции function assertEdit(), и провести редактирование фото, то в базе записывается название самого файла, а не расширения(как нужно) и сам новый файл не сохраняется, соотвественно какие то данные о фото и файле передаются формой со страницы редактирования, только почему то не сохраняются в папке images/job/resume

Возможно это поможет навести на решение проблемы... Если кто может разобраться в функциях - ПОМОГИТЕ ПОЖАЛУЙСТА!
 
Благодаря stealthdebuger проблема была решена! Тему можно закрывать! :)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху