PHP и с чем его едят....

[fly]

Sweet orange
Dre.hz, а как правильно делать запрос? И что на счет аплоадера? Почему он делает те ошибки?
 

dreamer

Member
Там у вас то checkForLast то xcheckForLast, это нормально?
В таком коде разбираться подробнее тяжело )
 

[fly]

Sweet orange
dreamer, признаюсь, писал его не я. Стырил как-то у яндекса. Судя по всему никто не поможет, да?
 

delf

======
Юзайте кохану. Там вообще ничего уметь не надо, она все за вас делает )
 

[fly]

Sweet orange
Подскажите как правильно обработать несколько file input'ов? А то, тот скрипт что я написал, при кол-ве file input 5 штук, и загрузке 3-х файлов, все равно делает 5 записей в базу. Три с именами+типами файлов и две просто с именами. Как мне обработать поля, чтобы писать в базу столько строк, сколько я загрузил файлов?
 

[fly]

Sweet orange
Для тех, у кого возможно возникнет подобный вопрос:
PHP:
$dir_name="files/PGallery/";
$good_name = array_filter($_FILES['file_name']['name']); // отфильтровываем пустые file_name
	if (sizeof($good_name)!=0)	{ // и если массив не пустой, то:
		foreach ($good_name as $key => $name)	{
			$file_name=$QWN_Code.$_FILES['file_name']['name'][$key];
			move_uploaded_file($_FILES['file_name']['tmp_name'][$key], $dir_name.$file_name);
			mysql_query("INSERT INTO `photos` VALUES(0, '$idAlbom', '$file_name', '$time', '$date')");
		}
	} else;
 

[fly]

Sweet orange
Есть вопрос. Сразу скажу, текста много, но хочу более подробно описать суть проблемы.
Подскажите, возможно кто-то сталкивался с подобным.
Есть интернет-магазин (на платном хостинге), в нем добавляем товар и прикрепляем инструкцию в формате .pdf с именем на русском языке. Данные товара заносятся в базу, а инструкция попадает в папку instructions/$idProduct/$fileInstruction. Далее, заходим на страницу с описанием этого товара и тут самое интересное.
В файле, product_card.php, есть код, который делает следующее:
открывает папку instruction/$idProduct/, находит файл инструкции, берет имя этого файла и выводит ссылку на скачивание/просмотр файла. Ссылка прямая на файл, типа - . Но когда я нажимаю на ссылку, то выводится страница NOT FOUND. Я зашел на хостинг, нашел эту папку с файлом инструкции и оказывается имя ее уже какие-то иероглифы!
You must be registered for see images


А в некоторых случаях Total CMD даже тип файла определить не может!
You must be registered for see images


Но при этом в статусной строке браузера, в ссылке, имя выводится правильное и на русском языке!!!
You must be registered for see images

И нельзя этот файл ни скачать, ни переименовать даже через Total CMD! Заходил уже и через DirectAdmin хостинга, та же беда, только удалить можно! Но на локальном хосте все работает, даже если загружаю файлы с русским именем, а вот в инете на хосте такая беда.

P.S. файлы с именем на английском языке грузятся нормально и без проблем, проблема только с русским названием.
 

Вкладення

Dre.hz

Active Member
fly сказав(ла):
Dre.hz, а как правильно делать запрос?
В двух словах — фильтруйте данные, которые получаете от пользователя, перед тем, как вставить их в SQL-запрос. Конкретный механизм — на ваше усмотрение, можете использовать функции php, можете какую-либо обертку для БД, можете ORM.

По поводу проблемы с кодировкой — она говорит сама за себя. Разберитесь с кодировками на всех этапах, и будет все ок.

По поводу аплоада нескольких файлов — авторитетный .

Собственно, хотелось бы вам порекомендовать отлаживать программу методично. У вас проблема и что-то не работает? Исключайте лишнее. Уберите яваскрипты, оставьте примитивную HTML-форму. Если она работает, то проблема в яваскриптах, ковыряйте их. Если и примитивная форма не работает, отлаживайте серверную часть. Как отлаживать серверную часть или яваскрипты? Да точно также, убирайте все лишнее, и смотрите, как ведут себя оставшиеся «примитивы». Как только проблема найдена и решена, понемногу возвращайте то, что отключили или убрали, и на каждом шаге проверяйте снова.

Для вашего случая, когда не используются высокоуровневые фреймворки, нет желания (возможности, бюджета, опыта — нужное подчеркнуть) проводить проектирование и писать юнит-тесты, это оптимальный вариант.
 
Зверху