Здравствуйте, гость ( Вход | Регистрация )

Навигация

Ссылки форума

Навигация по форуму

Работа С Текстовыми И Графическими Данными В Php И Mysql, PHP - Работа с графикой
Guyri
сообщение 24.2.2008, 23:32
Сообщение #1



В отпуске
Группа: Advanced Members
Сообщений: 13
Регистрация: 22.9.2007
Поблагодарили: 773 *


Итак, постановка задачи:

Требуется хранить в базе данных такую информацию:
Фамилия, имя, отчество email, фотографию и краткое описание (или биографию) человека.

Для достижения поставленной цели выбран вполне распространенный комплект веб-сервера: Apache 1.3.20, PHP 4.1.0, MySQL 4.0.0. или более выше

Для начала создаем БД:

Цитата
mysqladmin -p create testdb


затем делаем ее текущей:

Цитата
use testdb.


Дальше создаем таблицу для хранения информации:

Цитата
CREATE TABLE infouser (
id_infouser int(7) unsigned NOT NULL auto_increment,
lastname varchar(255) NOT NULL default '',
firstname varchar(255) NOT NULL default '',
patronym varchar(255) NOT NULL default '',
imageinfouser mediumblob,
filename1 varchar(50) default NULL,
filesize1 varchar(50) default NULL,
filetype1 varchar(50) default NULL,
infoinfouser varchar(255) default NULL,
emailinfouser varchar(100) default NULL,
PRIMARY KEY (id_infouser))


Сначала создадим файл для хранения функций, таких как, соединение с БД, и шаблонов, чтобы десять раз не переписывать одно и то же:

Цитата
<?php
// tags for open html-docs
function html_begin($header)
{
print("<html>\n");
print("<head>\n");
print("<META HTTP-EQUIV=\"Content-Type\"
Content=\"text/html">");
print("<title>Тестовая БД</title>\n");
print("</head>\n");
print("<body text = \"#000000\" bgcolor
= \"#52FA90\">\n");
print("<br><center><table width = \"90%\"
border = \"1\" bgcolor = \"green\" cols = \"1\">");
print("<tr><td><p style = \"text-align:
justify; margin-left: 50 px; margin-right: 50 px\">");
if ($header)
print("<h3>$header</h3>\n");
print("</p><hr width = \"100%\"
size = \"1\" color = \"#c0c0c0\"><p>");
}
//
// tags for close html-docs
function html_end()
{
print("</td></tr></table></center>");
print("</body></html>");
}
//
// function for connect mysql and select database
function connect_mysql()
{
define("DBName","testdb");
define("HostName","localhost");
define("UserName","valery");
define("Password","");
if(!mysql_connect(HostName,UserName,Password))
{ echo "Сервер временно не работает, заходите позже.".DBName."!<br>";
echo mysql_error();
exit;
}
mysql_select_db(DBName);
}
?>
Делаем форму для ввода информации.
Файл с именем insert.php
<?php
include("function.inc");
$header = ("ввести нового человека");
html_begin ($header);
?>
<form action = "insert2.php" method = "post"
enctype = "multipart/form-data">
Фамилия: <input type = "text" name = "lastname"
size = "30" maxlenght = "30"><br>
Имя: <input type = "text" name = "firstname"
size = "30" maxlenght = "30"><br>
Отчество: <input type = "text" name = "patronym"
size = "30" maxlenght = "30"><br>
Email: <input type = "text" name = "email"
size = "30" maxlenght = "30"><br>
Фотография: <input type = "file" name = "userfile"><br>
Информация о человеке:<br>
<textarea name = "infoinfouser" cols = "40"
rows = "5"></textarea>
<br>
<input type = "submit" value = "Ввести нового человека"><br>
</form>
<?php
html_end();
?>


затем идет страница принимающая информацию имя файла достаточно очевидно insert2.php:

Цитата
<?php
include("function.inc");
$header = ("ввод информации");
html_begin ($header);
//
//read file image
$fd = fopen ($userfile, "rb");
$userfile2 = fread ($fd, filesize ($userfile));
fclose ($fd);
$userfile2 = addslashes($userfile2);
//
// insert in db
//
connect_mysql();
mysql_query("SELECT * FROM infouser");
mysql_query("INSERT INTO infouser(id_infouser, lastname, firstname, patronym,
imageinfouser, filename1, filesize1, filetype1, infoinfouser, email_infouser)
VALUES('','$lastname', '$firstname', '$patronym', '$userfile2', '$userfile_name',
'$userfile_size', '$userfile_type', '$infoinfouser', '$email')");
echo "<br>";
print "Новый пользователь успешно введен";
mysql_close();
html_end();
?>


вот и все мы ввели данные, теперь их надо как-то прочитать.
Для этого используем еще три файла.
Первый файл выдает список пользователей.
prev.php

Цитата
<?php
include("function.inc");
//
$header = ("просмотр записей");
html_begin ($header);
//
connect_mysql();
//
print ("<table cols =\"1\">");
// Выводим все записи
$r=mysql_query("SELECT * FROM infouser");
for($i=0; $i<mysql_num_rows($r); $i++)
{ $f=mysql_fetch_array($r);
print "<tr>";
print "<td align = \"center\">";
print "<a target = \"_new\" href = \"sample.php?id=$f[id_infouser]\">$f[lastname]
$f[firstname] $f[patronym] </a>";
print "<p>";
//
print "</td>";
print "</tr>";
}
print "</table>";
mysql_close();
html_end();
?>


второй файл используется для выдачи данных по одному пользователю: sample.php

Цитата
<?php
//
include("function.inc");
$header = ("просмотр записей");
html_begin ($header);
//
connect_mysql();
//
reset ($HTTP_GET_VARS);
while (list ($key, $val) = each ($HTTP_GET_VARS)) {
//
$sql = "SELECT * FROM infouser WHERE id_infouser = '$val'";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
echo "<table border = \"0\" width = \"70%\">\n";
for ($i = 0; $i < $rows; $i++) {
$data = mysql_fetch_object($result);
echo " <tr>\n";
echo " <td><font color = \"red\" size
= \"+1\">$data->lastname<br> $data->firstname<br>
$data->patronym<br></font></td>\n";
echo " <td rowspan = \"2\"><center><img
src = 'download.php?id=$data->id_infouser' border =
'2' bgcolor = '#01cccc'></center></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td><font color = \"green\">$data->emailinfouser</font></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td colspan = \"2\">$data->infoinfouser</td>\n";
echo " </tr>\n";
}
mysql_free_result($result);
}
mysql_close();
//
html_end();
?>


следующий файл реализует обработку фотографий и выдачу их: download.php

Цитата
<?php
//
reset ($HTTP_GET_VARS);
while (list ($key, $val) = each ($HTTP_GET_VARS)) {
//
//
define("DBName","testdb");
define("HostName","localhost");
define("UserName","valery");
define("Password","");
if(!mysql_connect(HostName,UserName,Password))
{ echo "Сервер временно не работает, заходите
позже.".DBName."!<br>";
echo mysql_error();
exit;
}
mysql_select_db(DBName);
//
//
$sql = "SELECT imageinfouser, filename1, filetype1 FROM
infouser WHERE id_infouser='$val'";
$result = @mysql_query($sql);
$data = @mysql_result($result, 0, "imageinfouser");
$name = @mysql_result($result, 0, "filename1");
$type = @mysql_result($result, 0, "filetype1");
header("Content-type: $type");
echo $data;
}
mysql_close();
?>
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ansa
сообщение 25.3.2008, 20:33
Сообщение #2



Свой человек
Группа: Advanced Members
Сообщений: 111
Регистрация: 17.3.2008
Поблагодарили: 25 *


хранение картинок в бд это понт и все :) теряется скорость, повышается трафик из-за глюков кеширования..
Go to the top of the page
 
+Quote Post
misterx
сообщение 27.3.2008, 13:13
Сообщение #3



Новичок
Группа: Newbies
Сообщений: 15
Регистрация: 10.2.2008
Поблагодарили: 23 *


Цитата(ansa @ 25.3.2008, 18:38) *
хранение картинок в бд это понт и все :) теряется скорость, повышается трафик из-за глюков кеширования..

Это служи для одельных случаев к примеру клан картинки в pts хранятся в БД

Цитата(DioNiR90 @ 26.2.2008, 18:48) *
У меня есть много пртензий к человеку под ником: Guyri.
Перед тем как писать какие нить статьи по PHP думаю надо выучить PHP. И ещё MySQL.

Хранение изображений в БД вообще полная глупость. Время на выполнение запросов поднимается в большие разы.

$HTTP_GET_VARS - мы что в прошлом? Для ЧЕГО БЫЛ ПРИДУМАН $_GET ?????
Читаем php.net -
и учимся!
Странно в начале мы print используем как функцию а потом нет. Где понятие о стиле кода? Или нам это не знакомо? Если уж писать как функцию то пиши её везде так.
Критиковать можно долго. Так как писал статью человек не разберающийся в PHP.

К DeadMage особых притензий нет.
Саблюдение стиля.
Нормальное использование MySQL запросов.

ты гений php програмирования начитался учебников и вставляеш цытаты и судиш людей ты подумай мозгами зачем такой метод придумали, а потом что то говори ни кто небудет дизайн сайта впихивать в дб.Человек нашол выписал сделал все чтобы было понятно а ты тут притензии выдвигаеш сначала выучи php потом чтото говори
Go to the top of the page
 
+Quote Post
ansa
сообщение 28.3.2008, 20:27
Сообщение #4



Свой человек
Группа: Advanced Members
Сообщений: 111
Регистрация: 17.3.2008
Поблагодарили: 25 *


Цитата(misterx @ 27.3.2008, 13:18) *
Это служи для одельных случаев к примеру клан картинки в pts хранятся в БД


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

кстати замечания вполне корректны, учитывая, что выкладывает эту статью модератор - можно выдвигать требования ее правильности.
а то что птс хранит картинки в бд это еще не показатель правильности и качества.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 14.6.2026, 2:57