[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите пожалуйста отправить картинку на сервер
ueo
Никак не выходит. Уже столько мануалов перечитала, но не выходит.
короче, вот форма ввода данных:
<form method="post" action="insert.php">
<table
align="center">
<tr>
<td
style="border: 0px">Название продукта:</td>
<td
style="border: 0px"><input type="text" name="name" size="20"></td>
</tr>
<tr>
<td
style="border: 0px">Описание продукта:</td>
<td
style="border: 0px"><input type="text" name="description" size="20"></td>
</tr>
<tr>
<td
style="border: 0px">Цена продукта:</td>
<td
style="border: 0px"><input type="text" name="price" size="20"></td>
</tr>
<tr>
<td
style="border: 0px">Пол (m-мальчик, w-девочка, n-для всех):</td>
<td
style="border: 0px"><input type="text" name="pol" size="20"></td>
</tr>
<tr>
<td
style="border: 0px">Фирма:</td>
<td
style="border: 0px"><input type="text" name="firma" size="20"></td>
</tr>
<tr>
<td
style="border: 0px">Скидки (y-есть, n-нет):</td>
<td
style="border: 0px"><input type="text" name="skidki" size="20"></td>
</tr>
<tr>
<td
style="border: 0px">Цена со скидкой:</td>
<td
style="border: 0px"><input type="text" name="cena" size="20"></td>
</tr>
<tr>
<td
style="border: 0px">Картинка продукта:</td>
<td
style="border: 0px"><input type='file' name='t_item' id="img"></td>
</tr>
<tr>
<td
style="border: 0px"><input type="submit" name="ok" value="Добавить" size="10"></td>
</tr>
</table>
</form>


вот к ней обработчик:
<?
mysql_connect("localhost","","");
mysql_select_db("tutorials");
$rez=mysql_query("INSERT INTO products VALUES ('','$_POST[name]','$_POST[description]','$_POST[price]','images/$picture','$_POST[pol]','$_POST[firma]','$_POST[skidki]','$_POST[cena]')") or die(mysql_error());

if($rez==1)

{
@header ("location: filful.php");
}

else

{
@heder ("location: error.php");
}
?>




Спустя 38 секунд (10.06.2011 - 21:39) ueo написал(а):
папка, куда нужно отправить картинку (images) лежит в корне сайта, а странички с кодом формы и обработчик в папке.

на выходе получается, что картинка в папку не уходит, а в базу уходит только
images/

Спустя 23 минуты, 4 секунды (10.06.2011 - 22:03) Потрашитель написал(а):
подключаться к базе лучше так:
$localhost = "localhost";
$user = "пользователь";
$passworduser = "пароль";
$mysql_baza = "tutorials";
$db = mysql_connect("$localhost","$user","$passworduser");
mysql_select_db("$mysql_baza",$db);
-------------------------------------
по крайней мере я так пишу=Ъ

Спустя 54 секунды (10.06.2011 - 22:03) Потрашитель написал(а):
по теме не знаю user posted image

Спустя 2 минуты, 6 секунд (10.06.2011 - 22:06) sharki написал(а):
Потрашитель
Объясни данный синтаксис
mysql_connect("$localhost","$user","$passworduser");

А именно двойные кавычки.

Спустя 11 минут, 10 секунд (10.06.2011 - 22:17) Arni написал(а):
Вам точно хочется засунуть картинку в в папку ? Потому что пишете что папка на сервере, а попыток это сделать не наблюдаю. Зато какой то запрос в базу данных имеется.

to: sharki.

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

Спустя 5 минут, 28 секунд (10.06.2011 - 22:22) ueo написал(а):
Arni ну я и спрашиваю, как должны выглядеть эти попытки "засунуть картинку в папку"???

Спустя 22 минуты, 30 секунд (10.06.2011 - 22:45) Arni написал(а):
Цитата (ueo @ 10.06.2011 - 19:22)
Arni ну я и спрашиваю, как должны выглядеть эти попытки "засунуть картинку в папку"???

Это не правильно начинать делать что-то не понимая как оно работает в принципе.

1. <input type='file' name='t_item' id="img"> вот это правильно. Это элемент формы ,который укажет браузеру на то что нужно предоставить пользователю интерфейс для загрузки файла в поле специальное. Потому браузер эту картинку засунет в свою временную директорию на стороне клиента. И после нажатия кнопки отправить начнет передачу данных на сервер.

2. На сервере сидит добрый дядя http-сервер, который все эти данный примет. И так как вас интересует конкретно файл, то он его тоже закинет во временную категорию, имя и расположение которой зависит от конфигурации сервера.

3. Далее запустится php скрипт на выполнение. И тут важно понимать что это в вашем случае php скрипт. А еще это может быть перл, руби, питон, асп в конце конуов :).

Как только скрипт запустился на выполнение, все в ваших руках. Информация о том где находится ваш файл на сервере хранится в суперглобальном массиве под именем.


$_FILES


И если сделать вот так.


print_r(FILES);


То вы узнаете много нового.

А вообще читать. Я не говорю что я все это познал за 2 часа, но я уже все это прошол. И вам желаю того же.

Спустя 38 минут, 42 секунды (10.06.2011 - 23:23) ueo написал(а):
в общем понятно. пока сама не дойду до этого ничего не смогу сделать. пишу дипломный проект, там поставлено задание это сделать, для этого и нужно. может я совсем не бум-бум, но я так и не поняла, куда пихать
print_r(FILES);

и как это всё-таки это должно выглядеть в коде

Спустя 17 минут, 48 секунд (10.06.2011 - 23:41) Invis1ble написал(а):
ueo
не print_r(FILES), а print_r($_FILES)
И никуда пихать это не надо, это просто дамп, чтобы ты могла понять, где хранятся данные о загруженном файле.
Вставляешь в форму
<form action="" method="post" enctype="multipart/form-data">
<!-- другие поля -->
<input type="file" name="image" value="" />
<!-- другие поля -->
</form>

в обработчике примерно следующий код:
if (!empty($_FILES['image']['name']))
{
if (!move_uploaded_file($_FILES['image']['tmp_name'], $destination)) // $destination - путь + имя файла
die('не удалось загрузить файл');
else
echo 'Все путем';
}

Спустя 5 минут, 1 секунда (10.06.2011 - 23:46) Потрашитель написал(а):
Цитата
Объясни данный синтаксис

mysql_connect("$localhost","$user","$passworduser");


А именно двойные кавычки.


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

Спустя 8 минут, 16 секунд (10.06.2011 - 23:54) Invis1ble написал(а):
Потрашитель
причем тут читабельность? кавычки в данном случае вообще не нужны, а в одинарных у тебя переменные вообще не проинтерпретируются.

Спустя 33 секунды (10.06.2011 - 23:55) inpost написал(а):
Потрашитель
Вообще там кавычки не нужны! А с одинарными и подавно работать не будет smile.gif

Спустя 13 минут, 53 секунды (11.06.2011 - 00:09) Потрашитель написал(а):
..а поч у меня работает с двойными?!их убрать,да?

Спустя 5 минут, 40 секунд (11.06.2011 - 00:15) sharki написал(а):
Потрашитель
Кавычки вообще не нужны в данном случае, т.к ты уже все данные обработал
$localhost = "localhost";
$user = "пользователь";


следовательно здесь ("$localhost","$user","$passworduser"); они уже лишние!

Спустя 6 минут, 36 секунд (11.06.2011 - 00:21) Потрашитель написал(а):
Спс,чтото тупанул..я просто раньше на прямую писал.. тоесть ("localhost","igoreck","12345"),..вот в чем дело!и к кавычкам так и привык.спасибо.Убрал ковычки!!!
----------------------------
хороший форум!

Спустя 4 минуты, 58 секунд (11.06.2011 - 00:26) Invis1ble написал(а):
Цитата
хороший форум!

Ато! smile.gif

Спустя 4 минуты, 2 секунды (11.06.2011 - 00:30) ueo написал(а):
а, что поставить в запросе
INSERT INTO products VALUES ('','$_POST[name]','$_POST[description]','$_POST[price]','images/$picture','$_POST[pol]','$_POST[firma]','$_POST[skidki]','$_POST[cena]')"

вместо
'images/$picture'

Спустя 7 минут, 12 секунд (11.06.2011 - 00:37) inpost написал(а):
'images/".$picture."'

Спустя 20 минут, 29 секунд (11.06.2011 - 00:58) ueo написал(а):
млин. короче, все написала, но не работает. может я где-то ошиблась, не туда написала что:
<?
$localhost = "localhost";
$user = "";
$passworduser = "";
$mysql_baza = "tutorials";
$db = mysql_connect($localhost, $user,$passworduser);
mysql_select_db("$mysql_baza",$db);
$rez=mysql_query("INSERT INTO products VALUES ('','$_POST[name]','$_POST[description]','$_POST[price]','images/".$picture."','$_POST[pol]','$_POST[firma]','$_POST[skidki]','$_POST[cena]')") or die(mysql_error());

if (!empty($_FILES['image']['name']))
{
if (!move_uploaded_file($_FILES['image']['tmp_name'], $destination)) // $destination - путь + имя файла
die('не удалось загрузить файл');
else
echo 'Все путем';
}

if($rez==1)

{
@header ("location: filful.php");
}

else

{
@heder ("location: error.php");
}

?>

Спустя 8 минут, 5 секунд (11.06.2011 - 01:06) Invis1ble написал(а):
ueo
Цитата
может я где-то ошиблась, не туда написала что:

естественно!
1. там где стоит echo "все путем" нужно как раз такии запрос твой поставить
2. вместо image/$picture - ставишь $destination, естественно его нужно заранее определить этот путь, а не тупо скопировать мой код =) Я ведь не случайно там комментарий в коде вставил )
3. У тебя запрос голый, не экранируются "опасные" символы во внешних данных - как следствие, тебя взломает любой недохаккер-школьнег =) Почитай про mysql_real_escape_string(), на форуме не одну сотню раз обсждалось.

ПС. Побольше аналитики, а не тупой копи-паст. Помагать вообще желание пропало sad.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.