Источник: 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 (); ?>