Доброй ночи, пишу курсач - магазин на PHP. Собственно не получается загрузить картинку в базу. Вот форма: PHP: <? include ("blocks/db.php"); ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/> <title>Страница добавления фирм</title> <link href="style.css" rel="stylesheet" type="text/css"> </head> <body background="img/bg.jpg"> <table width="810" border="0" align="center" class="main_table" background="img/small_bg.png"> <? include("blocks/header.php"); ?> <tr> <td><table width="100%" border="0" class="sab_table"> <tr> <? include("blocks/left.php"); ?> <td width="482" valign="top" align="left" class="type_td"> $result=mysql_query("SELECT name,id FROM categor"); $myrow=mysql_fetch_array($result); $count=mysql_num_rows($result); echo "<h3 align='center'>Добавление фирмы</h3>"; <form name='form1' method='post' action='add_firm.php' enctype='multipart/form-data'> <p>Выберите категорию для фирмы<br><select name='cat' size='$count'>"; <? do { printf ("<option value='%s'>%s</option>",$myrow["id"],$myrow["name"]); } while ($myrow=mysql_fetch_array($result)); echo "</select></p>"; ?> <p> <label>Введите название фирмы<br> <input type="text" name="name" id="name"> </label> </p> <p> <label>Загрузите картинку для фирмы<br> <input type="file" name="image"> </label> </p> <p align="center"> <label> <input type="submit" name="submit" id="submit" value="Добавить фирму"> </label> </p> </form> <p> </p> </td> </tr> </table></td> </tr> <? include ("blocks/footer.php"); ?> </table> </body> </html> А вот сам обработчик: PHP: <? include ("blocks/db.php"); if (isset($_POST['name'])) { $name = $_POST['name']; if ($name == '') { unset($name); } } if (isset($_POST['cat'])) {$cat = $_POST['cat']; if ($cat == '') {unset($cat);}} if(isset($_FILES['image']['name'])) { $tmpimg=UPLOADEDFILES.$_FILES['image']['name']; $fp=fopen($tmpimg,"rb"); $image=fread($fp,filesize($tmpimg)); $image=addslashes($image); fclose($fp); } else { unset($image); } ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/> <title>Обработчик</title> <link href="style.css" rel="stylesheet" type="text/css"> </head> <body background="img/bg.jpg"> <table width="810" border="0" align="center" class="main_table" background="img/small_bg.png"> <? include("blocks/header.php"); ?> <tr> <td><table width="100%" border="0" class="sab_table"> <tr> <? include("blocks/left.php"); ?> <td width="482" valign="top" align="left" class="type_td"> <? if (isset($name) && isset($cat)) { echo $image; $result = mysql_query ("INSERT INTO firma (name,cat,image) VALUES ('$name','$cat','$image')"); if ($result == 'true') {echo "<p>Фирма успешна добавлена</p>";} else {echo "<p>Фирма не добавлена</p>";} } else { echo "<p>Вы ввели не всю информацию, поэтому фирма в базу не может быть добалена.</p>"; } ?> </td> </tr> </table></td> </tr> <!--Подключаем нижний графический элемент--> <? include ("blocks/footer.php"); ?> </table> </body> </html> Пробывал на стандарнтое устройсво вывести : PHP: echo implode("",file($_FILES['image']['name'])); Тоже пусто. Подскажите пожалуйста
Сами картинки в базе вообще лучше не хранить а только имя напрмер ее. А какртинку в оотдельной папке.
при таком раскладе выше нагрузка на бд да и общая производительности системы наверно упадет.. хотя я сам подобное не делал (предпочитаю в бд хранить только информацию о файле), так что знаю только по наслышке.. ЗЫ: например будет оч хренова если бд расположена не на том же компе где сам сайт.
Trieg всё верно говорит, просто сделаем отступление, что если это скажем аватарка, или картинка в подписи, размер которой не превышает 10Кб, то потери будут не существенны (особенно если кеширование хорошо продумано)... Зато удобство переноса - весьма ощутимое...
А ыт что если куда то будешь переносить портал, то обойдешься только базой. Все равно скрипты и все переносить. Потом если у тебя будет не маленькая нагрузка, то лишнии запросы к базе не желательны.
А я думал где делают таких людей делают(которые картинки в БД хранят).А их оказывается в ВУЗах учат(((( Картинки >10 Кб ставят базу раком за 10 минут. А эсли это интернет магазин(previev + fullsize). То картинки в БД для тебя не вариант.
Не умничай и не утрируй... По-твоему BLOB тип был введён на потеху всем? Раком базу можно поставить и одним селектом без всяких картинок. Всё зависит от места произрастания рук и коэффициента их кривизны... Кеширование для кого было придумано?
Да не партесь вы, этот интернет-магазин для универа, для реального магазина его все равно никто юзать не будет, ибо тут ппц код. Преподам код показывать если придется, то переделывай. Я бы такое не принял.
Что такое BLOB 90% таких умельцев не слышало.А настройка кэширования это вообще отдельная история, с которой вообще редко кто нормально справляется. +BLOB юзает больше памяти. http://phpclub.ru/mysql/doc/storage-requirements.html + память самого php ,на нагруженном проекте эти копейки выйдут раком .Да и на ненагруженом тоже. Правда memcached опять таки излечит частично. Да и не видел я примеров такой работы на практике.Если есть с удовольствием гляну. А на месте препода я бы не принял.
Мдец, обосрали, как могли, да храню в блобе, ибо для курсача мне так удобней, о нагрузке в базе и о хранении только ссылок на картинки, тоже знаю, но сейчас мне оно не надобно. Учусь я в коледже, не в универе, решил попробывать. 2 nerezus, я понимаю, ты умный и знающий человек, но зачем срать, мог бы например подкинуть де что подчитнуть, или как надо... Вообщем, мда народ