[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Занесение картинки в базу и ее вывод
klik2
В mysql есть таблица post.
В ней поля id, title, text, img.

Есть форма
<form name="form1" method="post" action="add_lesson.php">
<p>
<label>Введите слово<br>
<input type="text" name="title" id="title">
</label>
</p>
<p>
<label>Расшифровка<br>
<input type="text" name="text" id="text">
</label>
</p>
<p>
<label>Картинка<br>
<input type="file" name="img" id="img">
</label>
</p>
<p>

<label>
<input type="submit" name="submit" id="submit" value="Занести данные в базу">
</label>
</p>

</form>

Файл add_lesson.php
if (isset($title) && isset($text) && isset($img))
{
$result = mysql_query ("INSERT INTO post (title,text,img) VALUES ('$title','$text','$img')");
if ($result == 'true') {echo "<p>Данные занесены в базу</p>";}
else {echo "<p>Данные НЕ занесены в базу</p>";}
}
else
{
echo "<p>Вы ввели не всю информацию. Вернитесь и заполните все поля</p>";
}

Выводим данные.
<form name="form1" method="post" action="index.php">
<p>
<label>Введите слово<br>
<input type="text" name="title" id="title">
</label>
</p>
<p>
<label>
<input type="submit" name="submit" id="submit" value="Проверить">
</label>
</p>

</form>

<?

$search=$_POST['title'];
$sql=mysql_Query("select title, text, img from post WHERE title LIKE '".$search."' limit 1");
$row=mysql_fetch_array($sql);

if ($row)
{
echo $row['title']." - ".$row['text']. " - " .$row['img'];
}else
{
echo "Такого слова нет в этом словаре!";
}

?>

Вместо картинки выводится ее название. В чем моя ошибка? Спасибо.



Спустя 1 час, 18 минут, 55 секунд (4.03.2009 - 07:33) modobaks написал(а):
Ошибки нет, что засунули, то и получаете.
А вообще нужно в параметрах формы поставить, вот это enctype = "multipart/form-data" для файлов, а потом уже разбирать массив $_FILES.

Спустя 1 час, 48 минут, 20 секунд (4.03.2009 - 09:21) klik2 написал(а):
Цитата
потом уже разбирать массив $_FILES.

Разобрал на части, по винтикам. Все равно не работает :-)

Спустя 12 минут, 28 секунд (4.03.2009 - 09:34) Bezdna написал(а):
Цитата (klik2 @ 4.03.2009 - 03:14)
Вместо картинки выводится ее название


Значит при вводе в форму вводишь название, а не ссылку на картинку.

Спустя 1 минута, 10 секунд (4.03.2009 - 09:35) sergeiss написал(а):
Цитата
Вместо картинки выводится ее название. В чем моя ошибка? Спасибо.

Тебе же уже ответили: что положил в БД, то и достал. А положил ты в БД название картинки (точнее, даже не название своей картинки, а какую-то непонятную строку). Ее же, эту строку, и достал.

А что хотел - саму картинку показать? Тогда по-другому надо делать. Совершенно по-другому!!!!!!!
Надо взять присланный файл, сохранить его, а потом выводить через тэг IMG.

Как именно ты "разобрал по винтикам $_FILES"? В первом тексте этого нету. Вообще.

Спустя 3 часа, 59 минут, 40 секунд (4.03.2009 - 13:35) klik2 написал(а):
Цитата
А что хотел - саму картинку показать? Тогда по-другому надо делать. Совершенно по-другому!!!!!!!
Надо взять присланный файл, сохранить его, а потом выводить через тэг IMG.


Спасибо тебе, добрый человек. Если бы я знал за что этот файл взять, куда его положить, а уж тем более, как его вывести через тэг img. то я бы на этом форуме в разделе "PHP для знатоков" на твои бы вопросы отвечал, а не в данном разделе тусовался.

Спустя 22 минуты, 9 секунд (4.03.2009 - 13:57) sergeiss написал(а):
Интересный ответ, однако smile.gif

Ты спросил "В чем моя ошибка?" - ты получил ответ. Ошибка в том, что половину делаешь неправильно.

Ты говоришь "Разобрал массив $_FILES по винтикам" - но не показываешь код. Поэтому непонятно, как ты его "разбирал". Потому что если бы ты на самом деле разбирался с этим "до винтиков", то тогда бы знал "за что этот файл взять, куда его положить".

Кстати, тэг IMG - это HTML, а не ПХП.

И чего ты хочешь получить?
Чтобы подсказали? - нет проблем smile.gif Показывай свой измененный код, спрашивай, что именно непонятно. Только конкретно, а не "объясните мне основы ПХП". За объяснением основ ПХП - плиз гоу то хэлп, адрес хэлпа у меня в подписи.
Или чтобы за тебя сделали? - тогда тебе в раздел "Предлагаю работу".

Спустя 39 минут, 58 секунд (4.03.2009 - 14:37) klik2 написал(а):
Восхищен умом и красноречием твоим!!! :-)

Цитата
Ты спросил "В чем моя ошибка?" - ты получил ответ. Ошибка в том, что половину делаешь неправильно.


Хороший ответ! :-)

Кладу файл:
<?php
if($_FILES["filename"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit;
}
if(copy($_FILES["filename"]["tmp_name"],
"files/".$_FILES["filename"]["name"]))
{
echo("Файл успешно загружен <br>");
echo("Характеристики файла: <br>");
echo("Имя файла: ");
echo($_FILES["filename"]["name"]);
echo("<br>Размер файла: ");
echo($_FILES["filename"]["size"]);
echo("<br>Каталог для загрузки: ");
echo($_FILES["filename"]["tmp_name"]);
echo("<br>Тип файла: ");
echo($_FILES["filename"]["type"]);
} else {
echo("Ошибка загрузки файла");
}
?>

Дальше то что с ним делать?

Спустя 28 минут, 5 секунд (4.03.2009 - 15:05) sergeiss написал(а):
Что с этим делать, говоришь? Выкинь smile.gif Причем, серьезно говорю.

1. В форме у тебя указано
HTML
<input type="file" name="img" id="img">

а потом ты используешь 'filename'. Ты уж определись: img или filename использовать.

2. Для копирования файла надо использовать move_uploaded_file (), а не copy().

3. Если файл успешно загружен и сохранен, то тогда пишешь в БД его имя.

4. При выводе информации в тэге IMG, в поле SRC указываешь имя загруженной картинки.
Измененный код из твоего первого сообщения этой темы:
PHP
if ($row)
{
echo 
$row['title']." - ".$row['text']. " - ";
echo 
'<img src="'.$row['img'].'">';
}


Спустя 22 минуты, 5 секунд (4.03.2009 - 15:27) klik2 написал(а):
Мне все это воедино никак не собрать.

Цитата
3. Если файл успешно загружен и сохранен, то тогда пишешь в БД его имя.


Как имя в базу данных записать?
У меня в результате появляется вместо картинки квадратик, а если в свойства этого квадратика посмотреть, то путь к картинке выводится такой:
d:webempphpBB1B.tmp

Спустя 5 минут, 14 секунд (4.03.2009 - 15:32) sergeiss написал(а):
Для записи имени файла.
Из твоего кода:
PHP
$result = mysql_query ("INSERT INTO post (title,text,img) VALUES ('$title','$text',  ... )");

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

И покажи, как у тебя в данный момент обрабатываются загруженные файлы

Спустя 1 минута, 45 секунд (4.03.2009 - 15:34) sergeiss написал(а):
Да, и еще. У тебя предполагается, что глобальные переменные включены...
Но лучше будет так сделать:
$title=$_POST['title'];
и аналогично для все переменных, передаваемых через POST.

Спустя 5 минут, 8 секунд (4.03.2009 - 15:39) klik2 написал(а):
Цитата
Для записи имени файла.
Из твоего кода:
PHP
$result = mysql_query ("INSERT INTO post (title,text,img) VALUES ('$title','$text',... )");

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


Вручную что-ли писать?

Спустя 1 минута, 53 секунды (4.03.2009 - 15:41) klik2 написал(а):
Цитата
Но лучше будет так сделать:
$title=$_POST['title'];
и аналогично для все переменных, передаваемых через POST.


Ну, а это то зачем еще? Что бы было?

Спустя 9 минут, 26 секунд (4.03.2009 - 15:50) sergeiss написал(а):
Цитата (klik2 @ 4.03.2009 - 15:39)
Цитата
Для записи имени файла.
Из твоего кода:
PHP
$result = mysql_query ("INSERT INTO post (title,text,img) VALUES ('$title','$text',... )");

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


Вручную что-ли писать?

Сюда, в запрос - вручную wink.gif

Типа $_FILES['img']['name'] - если именно с этим именем файл был записан на диск.
Я же уже спросил: дай скрипт, как он у тебя сейчас работает с файлом! Тогда уже оттуда можно будет четко увидеть ответ на этот вопрос.

И еще. В форме должен быть указан один параметр
HTML
<form enctype="multipart/form-data" ....
, чтобы эта форма могла отправлять файлы. Это у тебя сделано? В начальном посте темы этого не было.

Спустя 1 минута, 50 секунд (4.03.2009 - 15:52) sergeiss написал(а):
Цитата (klik2 @ 4.03.2009 - 15:41)
Цитата
Но лучше будет так сделать:
$title=$_POST['title'];
и аналогично для все переменных, передаваемых через POST.


Ну, а это то зачем еще? Что бы было?

Это для того, чтобы ты потом не задавал вопросы типа "А почему мой скрипт перестал работать, когда я всего лишь перенес его с локального хоста в интернет"?

Спустя 7 минут, 50 секунд (4.03.2009 - 16:00) klik2 написал(а):
Цитата
Сюда, в запрос - вручную wink.gif


А при загрузке другой картинки? Переписывать имя?

Цитата
И еще. В форме должен быть указан один параметр
HTML
<form enctype="multipart/form-data" ....
, чтобы эта форма могла отправлять файлы. Это у тебя сделано? В начальном посте темы этого не было.


Сделано.

Спустя 1 минута, 13 секунд (4.03.2009 - 16:01) klik2 написал(а):
Цитата
Это для того, чтобы ты потом не задавал вопросы типа "А почему мой скрипт перестал работать, когда я всего лишь перенес его с локального хоста в интернет"?


Я сразу в интернете "творю" :-)

Спустя 2 минуты, 30 секунд (4.03.2009 - 16:04) klik2 написал(а):
Видимо. не дорос я еще до создания подобного скрипта :-)

Спустя 11 минут, 37 секунд (4.03.2009 - 16:15) sergeiss написал(а):
Цитата (klik2 @ 4.03.2009 - 16:00)
Цитата
Сюда, в запрос - вручную wink.gif


А при загрузке другой картинки? Переписывать имя?

Анекдот в тему smile.gif

Идет парень, везет коляску. Из нее раздаются громки детские вопли. Парень достаточно громко приговаривает: "Спокойно, Вася... Спокойно, Вася... Успокойся, Вася...."
Проходящая мимо бабуля говорит: "Молодой человек! Так вы ребеночка-то не успокоите".
Он отвечает: "Бабушка, вы не поняли..... Вася - это я!" wink.gif

Вот и я тоже приговариваю: "Спокойно, Ипполит, спокойно..." biggrin.gif
-----------

Короче говоря, я же написал
Цитата
Типа $_FILES['img']['name'] - если именно с этим именем файл был записан на диск.

То есть, запрос должен быть
PHP
$result mysql_query ("INSERT INTO post (title,text,img) VALUES ('$title','$text', '".$_FILES['img']['name']."' )");


ЛИБО ДРУГОЕ ИМЯ!!! Я же пока не знаю, как ты переписал файл на сервер, с каким именем.
А вообще... Загрузи хэлп (у меня в подписи) и там найди и почитай про $_FILES. Там всё ясно и понятно написано.

Спустя 32 минуты, 35 секунд (4.03.2009 - 16:48) klik2 написал(а):
Ты думаешь, я не знаю, как тяжело, таким как ты, что-то объяснять полному "чайнику"? Знаю. Только не думай, что полному "чайнику" легко слушать объяснения от таких, как ты.
Сразу оговорюсь данный скрипт, который я пытаюсь сотворить, не имеет для меня никакого практического значения. Просто разбираюсь.
Итак, первоначально стояла следующая передо мной задача (точнее, я ее сам себе поставил). Создать админку, через которую можно заносить в базу слова и их значение, а затем по слову, выводить данное слово со значением. С этой задачей, я хоть коряво и с помощью подсказок ( http://phpforum.ru/index.php?showtopic=16291 ) справился.
Админка: http://www.spbwork.com/post/admin/
Страница вывода данных: http://www.spbwork.com/post
Усложнил себе задачу. Вместе со словом и расшифровкой слова загружать и выводить картинку. Вот собственно и вся загвоздка.

Спустя 1 минута, 14 секунд (4.03.2009 - 16:49) klik2 написал(а):
Цитата
А вообще... Загрузи хэлп (у меня в подписи) и там найди и почитай про $_FILES. Там всё ясно и понятно написано.


А это я уже все прочитал. Если бы там было все ясно и понятно написано, то на хрена вообще подобные форумы были бы нужны?


_____________
Быстрый ответ:

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