Здравствуйте! Прошу совета у знатоков. Я загружаю изображение и записываю его имя в таблицу базы данных mysql, чтобы его вывести на страничке. При записи имени файла в поле name бд также создается id при помощи auto_increment в поле id_image. В чем проблема: при загрузке изображения я хочу его переименовывать в имя, которому равняется id, но этого добиться не могу, так как id еще не создан, id создается тогда, когда имя изображения (то которое я выбираю на компьютере) уже записано в базу, поэтому id в имя файла и не пишется. Подскажите, пожалуйста, как быть. Вот код: Код (Text): if (Tools::isSubmit('submitAdvConf')) { foreach ($_FILES as $tmp) { if (isset($tmp) AND isset($tmp['tmp_name']) AND !empty($tmp['tmp_name'])) { $name = Configuration::get('BLOCKADV_IMG'); Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'blockslides` (`name`) VALUES(\''.pSQL($name).'\')'); $sql = 'SELECT * FROM `'._DB_PREFIX_.'blockslides`'; if ($results = Db::getInstance()->ExecuteS($sql)) foreach ($results as $row) Configuration::set('PS_IMAGE_GENERATION_METHOD', 1); if ($error = checkImage($tmp, '600000')) $errors .= $error; elseif (!$tmpName = tempnam(_PS_TMP_IMG_DIR_, 'PS') OR !move_uploaded_file($tmp['tmp_name'], $tmpName)) return false; elseif (!imageResize($tmpName, dirname(__FILE__).'/slide'.$row['id_image'].'.jpg')) $errors[] = Tools::displayError('An error occurred during the image upload.'); @unlink($tmpName); Configuration::updateValue('BLOCKADV_IMG', 'slide'.$row['id_image'].'.jpg'); }
+ еще надо хранить хеш в таблице и в hidden. Когда появится новая запись, сверяем хеш и переименовываем файл на идентификатор.
забейте делайте инсёрт перед аплоадом везде где есть ошибка загрузки картинки поставьте delete из базы
Дело в том, что ошибки-то и нет как-бы - просто получается несостыковка в ftp файлы такие: image1.jpg, image2.jpg, image3.jpg, а в таблице бд: image1.jpg, image1.jpg, image2.jpg то есть в таблице как бы отставание идет, потому что id в начале не успевает создаваться...
Пишите в базу затем через mysql_insert_id() получаете id, и копируете? Разве это не решает описанную проблему? Код (Text): mysql_insert_id(); //https://php.ru/manual/function.mysql-insert-id.html