Главная страница статей --> Хитрости при программировании php, заметки по базам данных

Работа с текстовыми и графическими данными совместно в PHP и MySQL

Источник: realcoding.net

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

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

1. Требуется хранить в базе данных такую информацию:

Фамилия, имя, отчество 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();
?>



Похожие статьи:
- Авторизация и аутентификация без куки
- Пишем скрипт гостевой книги
- Своя студия веб-дизайна.
- 21 ошибка программиста PHP
- Современные технологии продвижения сайтов
- Изменение внешнего вида счетчика в CNStats
- Программная выписка счета в системе WebMoney
- Графический счетчик на Perl
- Работа с хэшами в Perl
- Создание wap-страниц (в формате *.wml)
- За что можно схлопотать бан от поисковых систем!
- Освоение Ajax: Использование XML в запросах и ответах
- Некоторые аспекты использования пользовательских функций в предложениях SQL.


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |

Контакты
Редакция:
[0.003]