В този урок ще ви предложа примерен код за upload на файлове с възможност за описание към файловете.
Ще използвам за съхраняване на информацията MySQL база данни. Ето
структурата на базата данни - за име на базата данни съм използвал files, а за име на таблицата също files.
|
CREATE TABLE `files` ( `id` int(11) NOT NULL auto_increment, `url` varchar(255) NOT NULL, `opisanie` varchar(255) NOT NULL, `ime` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ; |
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Upload на файлове</title> <meta http-equiv="content-type" content="text/html; charset=windows-1251"> </head> <body> <center> <?php if(isset($_POST['submit'])){ ///////////////////Връзка с база данни//////////////////// mysql_connect("localhost","root","****"); mysql_select_db("files"); mysql_query("SET CHARACTER SET cp1251"); ///////////////////Край на връзка с база данни//////////////////// ///////////////////Променливи от формата////////////////////// $ime=htmlspecialchars($_POST['ime']); $opisanie=htmlspecialchars($_POST['opisanie']); $file=$_FILES['file']['name'];//име на файла $tmp_file=$_FILES['file']['tmp_name'];//пътя до временното място на файла $size=$_FILES['file']['size'];//големина на файла //Тук може да се добавят още ///////////////////Край на променливи от формата////////////////////// $upload_path="files/".basename($file);//Път до качения файл if(file_exists($upload_path)){//Проверка дали файлът вече съществува echo "Файлът вече съществува"; exit; } if(empty($ime) or empty($opisanie)){//Проверка за празни полета echo "Празни полета"; exit; } if($size==0){//Ако файлът е с размер 0 няма смисъл да го качваме echo "Файлът е повреден"; exit; } if($size>9999999999){//Проверка за размер на файла echo "Файлът е твърде голям"; exit; } ////////////////////////Проверка за разширение на файла///////////////////////////// $extensions = array("jpg","mp3","txt","zip");//позволени типове $extension_file = end(explode(".",$file)); $extension_file = strtolower($extension_file); if(!in_array($extension_file,$extensions)){ echo "Непозволен тип файл"; exit; } ///////////////////////Край на проверка за разширение на файла///////////////////////////// $site_url="http://www.demo.md-place.info/"; $upload=move_uploaded_file($tmp_file,$upload_path); if($upload){ $q=mysql_query("INSERT INTO `files` (`ime`,`opisanie`,`url`) VALUES ('$ime','$opisanie','$site_url$upload_path')"); if($q){ echo "Файлът беше успешно качен"; }else{ echo "Грешка</center>"; exit; } } }else{ ?> <!--форма за upload--> <form action="" method="post" enctype = "multipart/form-data"> Име <br> <input name="ime" type="text"> <br> Описание <br> <textarea name="opisanie" cols="50" rows="20"></textarea> <br> <!--Тук може да се добавят още полета input или textarea--> Файл <br> <input name="file" type="file"> <br> <input name="submit" type="submit"> </form> <?php } ?> </center> </body> </html> |
|
Този код ще upload-ва файла в папка files. В този код трябва да промените стойността на тази променлива $site_url.
На мястото на http://www.demo.md-place.info/ трябва да напишете URL-a
на вашия сайт до папката files (без нея) като той трябва да завършва с /
Сега ще ви предложа примерен код за извеждане на файловете с информацията за тях.
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Upload на файлове</title> <meta http-equiv="content-type" content="text/html; charset=windows-1251"> </head> <body> <center> <?php ///////////////////Връзка с база данни//////////////////// mysql_connect("localhost","root","****"); mysql_select_db("files"); mysql_query("SET CHARACTER SET cp1251"); ///////////////////Край на връзка с база данни//////////////////// $broinastranica = 10;//колко броя да изкарва на страница $pageNum = 1; if(isset($_GET['page'])) { $pageNum = $_GET['page']; } $redove = ($pageNum - 1) * $broinastranica; $query = " SELECT id,ime,url FROM files LIMIT $redove, $broinastranica"; $result = mysql_query($query); while($row = mysql_fetch_array($result)) { echo "Име: <a href="opisanie.php?id=".$row['id']."">".$row['ime']."</a><br>Линк: <a href="".$row['url']."">".$row['url']."</a><br><br>"; } $query = "SELECT COUNT(id) AS broi FROM files"; $result = mysql_query($query); $row = mysql_fetch_array($result, MYSQL_ASSOC); $numrows = $row['broi']; $maxPage = ceil($numrows/$broinastranica); $self = $_SERVER['PHP_SELF']; $nomeranastranici = ''; for($page = 1; $page <= $maxPage; $page++) { if ($page == $pageNum) { $nomeranastranici .= " $page "; } else { $nomeranastranici .= " <a href="$self?page=$page">$page</a> "; } } if ($pageNum > 1) { $page = $pageNum - 1; $predishna = " <a href="$self?page=$page"> [<<<<<] </a> "; $parva = " <a href="$self?page=1">[първа]</a> "; } else { $predishna = ' '; $parva = ' '; } if ($pageNum < $maxPage) { $page = $pageNum + 1; $sledvashta = " <a href="$self?page=$page"> [>>>>>] </a> "; $posledna = " <a href="$self?page=$maxPage">[последна]</a> "; } else { $sledvashta = ' '; $posledna = ' '; } echo "<br><br>".$parva . $predishna . $nomeranastranici . $sledvashta . $posledna; ?> </center> </body> </html> |
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Upload на файлове</title> <meta http-equiv="content-type" content="text/html; charset=windows-1251"> </head> <body> <center> <?php if(isset($_GET['id'])){//Кодът надолу ще се изпълнява само ако е посочено id if(preg_match("/^[0-9]+$/", $_GET['id'])){//Кодът надолу ще се изпълнява ако id е цяло число ///////////////////Връзка с база данни//////////////////// mysql_connect("localhost","root","****"); mysql_select_db("files"); mysql_query("SET CHARACTER SET cp1251"); ///////////////////Край на връзка с база данни//////////////////// $q=mysql_query("SELECT ime,opisanie,url FROM files WHERE id='".$_GET['id']."'"); $r=mysql_fetch_array($q); echo $r['ime']; echo "<br><br>"; echo $r['opisanie']; echo "<br><br>"; echo "<a href="".$r['url']."">".$r['url']."</a>"; }else{ echo "Грешка!"; } }else{ echo "Грешка, изберете файл!"; } ?> </center> </body> </html> |
|
Този код ще ви покаже името, описанието на файла и линк към него.
ВНИМАНИЕ! От настройката на PHP
зависи какъв ще е максималният размер на файла за upload. Може да
пробвате да настроите тази стойност с .htaccess файл като напишете в
него следните редове:
|
php_value post_max_size 50M php_value upload_max_filesize 50M |
|
като 50M означава 50MB, но това може да не работи на даден хостинг.
Конструкцията:
if(){
echo'.....';
exit;
}
ако сайтът е направен по схемата :хедър, иф-ове, фоотер, то фоотера при изпълнение на даден ИФ няма да се покаже...
един вариянт за разрешаване на проблема е всичко да се направи с вложени ИФ-ове ама ще стане една манджа....
за друг вариянт ще наблюдавам за нови коментари, ЛС, на е-мейла ми (martineca@abv.bg) или на скайп(wicked_92)