Галерия с ъплоад
В този урок ще си направим една галерия с качване на снимки и създаване на thumbnail
така: Първо си правим таблицата в MySQL-а

CREATE TABLE `gallery` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(40) character set utf8 collate utf8_unicode_ci NOT NULL default '',
`snimka` varchar(100) character set utf8 collate utf8_unicode_ci NOT NULL default '',
`small` varchar(30) character set utf8 collate utf8_unicode_ci NOT NULL default '',
`info` text character set utf8 collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_bulgarian_ci AUTO_INCREMENT=1 ;

След това си правим един файл от където ще качваме изображенията.
<?php
include "config.php";
echo '<center>';
if ($_POST['upload']) {
$putq = 'upload/'.basename($_FILES['ufile']['name']);
if (@copy($_FILES['ufile']['tmp_name'], $putq)) {
list($width, $height, $type) = getimagesize("$putq");
if ($width > 530) {
echo "Снимката е прекалено голяма. Снимката не е качена.";
unlink($putq);
}
else {
function upload_small($tmp_name,$file_type,$path_small){
if(!file_exists($path_small)){
if($file_type=="image/pjpeg" or $file_type=="image/jpeg" or $file_type=="image/gif" or $file_type=="image/x-png" or $file_type=="image/png"){//проверка дали файлът е картинка
list($width,$height) = getimagesize($tmp_name);
define("WIDTH","150");
define("HEIGHT","112");
if($width<WIDTH and $height<HEIGHT){
move_uploaded_file($tmp_name,$path_small);
}elseif($width>=WIDTH){
$new_width= WIDTH;
$new_height= (int) ($height*$new_width)/$width;
if($file_type=="image/pjpeg" or $file_type=="image/jpeg"){
$imagecreatefrom="imagecreatefromjpeg";
}elseif($file_type=="image/gif"){
$imagecreatefrom="imagecreatefromgif";
}elseif($file_type=="image/x-png" or $file_type=="image/png"){
$imagecreatefrom="imagecreatefrompng";
}
$image_p=imagecreatetruecolor($new_width, $new_height);
$image=$imagecreatefrom($tmp_name);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_p, $path_small, 100);
}elseif($height>=HEIGHT){
$new_height= HEIGHT;
$new_width= (int) ($width*$new_height)/$height;
if($file_type=="image/pjpeg" or $file_type=="image/jpeg"){
$imagecreatefrom="imagecreatefromjpeg";
}elseif($file_type=="image/gif"){
$imagecreatefrom="imagecreatefromgif";
}elseif($file_type=="image/x-png" or $file_type=="image/png"){
$imagecreatefrom="imagecreatefrompng";
}

$image_p=imagecreatetruecolor($new_width, $new_height);
$image=$imagecreatefrom($tmp_name);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_p, $path_small, 100);
}
}else{ echo 'Файлът не е картинка!'; exit; }
}else{ echo 'Такъв файл вече съществува!'; exit; }
}
define("URL","http://muzei.10bclass.com/");
$file_name=$_FILES['ufile']['name'];
$tmp_name=$_FILES['ufile']['tmp_name'];
$file_type=$_FILES['ufile']['type'];
$path_small="upload/small/".basename(strtolower($file_name));
upload_small($tmp_name,$file_type,$path_small);
echo '<br><img src="'.$path_small.'" alt=""><br>';
echo '<br>'.URL.$path_small.'<br>';
$title = $_POST['title'];
$bg = $_POST['bg'];
$en = $_POST['en'];
$ru = $_POST['ru'];
$res = mysql_query("INSERT INTO gallery (`title`, `snimka`, `small`, `bg`, `en`, `ru`) VALUES ('$title', '$putq', '$path_small', '$bg', '$en', '$ru')") or die(mysql_error());
echo "Снимката е добавена успешно.<br>
<a href='pro.php?page=addpic'>Обратно</a>";
}
} else {echo "Снимката не е качена";}
}
else
{
if(!function_exists("gd_info")){
echo 'GD Graphics Library не е инсталирана на този сървър!';
}else{
echo '
<form action="" method="post" enctype="multipart/form-data">
<table><tr><td valign="top">
Заглавие: </td><td><input type="text" name="title" class="search"></td>
<tr><td valign="middle">Описание</td><td><textarea name="opisanie" rows="4" cols="20" class="search"></textarea></td></tr></table>
<input type="file" name="ufile" class="search"><br><br>
<input type="submit" name="upload" value="Качи" class="search">
</form>
<a href="pro.php">Назад</a>
';
}
}
echo '
</center>
</body>
</html>
';
?>
Променяте на 8 ред дължината на снимката или нейния width това е за голямата.
Сега файла gallery.php
<?php
include "config.php";
$broinastranica = 9;

$pageNum = 1;

if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}
//тука определяме кои редове ще се показват - примерно ако $_GET['page']=2
// ще покаже от 20 до 40-ти ред.
$redove = ($pageNum - 1) * $broinastranica;
//заявката ще върне само посочените редове - примерно от 20 до 40 в зависимост от $_GET['page']
$query = " SELECT * FROM gallery ORDER BY id DESC LIMIT $redove, $broinastranica";
$result = mysql_query($query) or die('Error, query failed');

while($row = mysql_fetch_array($result))
{
echo "<a href='view=$row[id]'><img class='gallery' src='$row[small]' alt='$row[info]'></a>";
}
// проверяваме таблицата колко редове има
$query = "SELECT COUNT(snimka) AS numrows FROM gallery";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];


$maxPage = ceil($numrows/$broinastranica);

$self = $_SERVER['PHP_SELF'];
$nomeranastranici = '';
echo "<div class='paging' align='center'>";
for($page = 1; $page <= $maxPage; $page++)
{
if ($page == $pageNum)
{
$nomeranastranici .= " $page ";
}
else
{
$nomeranastranici .= " <a href=\"index.php?page=$page\">$page</a> ";
}
}

if ($pageNum > 1)
{
$page = $pageNum - 1;
$predishna = " <a href=\"index.php?page=$page\">$prev</a> ";

$parva = " <a href=\"index.php?page=1\">$first</a> ";
}
else
{
$predishna = ' ';
$parva = ' ';
}
if ($pageNum < $maxPage)
{
$page = $pageNum + 1;
$sledvashta = " <a href=\"index.php?page=$page\">$next</a> ";

$posledna = " <a href=\"index.php?page=$maxPage\">$last</a> ";
}
else
{
$sledvashta = ' ';
$posledna = ' ';
}
echo $parva . $predishna . $nomeranastranici . $sledvashta . $posledna;
echo "</div>";
?>
Тук променяте по колко картинки на страница да се показват.
Последния файл който ви трябва е config.php
<?php
$dbhost="localhost";
$dbusername="imeto";
$dbpassword="passa";
$dbname="nh";
$connect = mysql_connect($dbhost, $dbusername, $dbpassword);
$db = mysql_select_db($dbname,$connect) or die ("Не мога да избера БД");
mysql_query("SET NAMES cp1251");
?>
тук попълвате вашите данни.

Това е всичко.
Урока е подготвен специално за www.web-tourist.net и забранявам преписването му в други сайтове.



/ Трябва да сте регистриран за да напишете коментар /
От: ilkoto24
22:55 07-11-2009
До Админа на сайта: Защо все като кача снимка ми изписва, че снимката не е качена!
От: jefriii
17:42 11-12-2009
малко трябва да се оправи иначе е хубав също така липсва файла с който се преглежда снимката
От: h4x0r
21:46 14-02-2012
http://lisicata.radiohit.fm/upload/small/copy of ffffff.jpg
Unknown column 'bg' in 'field list'

след като кача снимката и после в gallery.php няма нищо бял екран
1