Усложнен ъплоад и страници

stoqnski

Registered
Здравейте! Направих сайт на моето училище и от 100 участници го класирах на 24-то място . По него време сайта беше създаден за конкурса нали , но сега има нужда от вкарване на голям брои снимки . В момента действа така :

- съществува страница snimki.php
1) в нея излизат папките с обложка ( правя го саморъчно с хтмл ) като обложката е линк към страницата със снимки на съответното събитие . А тази страница е примерно ekskurziq.php в нея ползвам просто един пхп скрипт за индексиране на снимки от папка ( качена на сървъра ) и съм го комбинирал с lightbox за преглеждане , но ...

Недостатъци:
С увеличаване на събитията ми се увеличава работата по тези страници в смисъл аз трябва да правя страница "hodene_na_karandila.php" и в нея в пхп скрипта замествам само от коя папка да зима снимките .

Искам в админ панела да имам следната опция ( така съм го измислил ) , но приемам съвети и кодчета евентуално :

- Първо да създавам име на папката с евентуално събитие примерно "karandila"
- Второ , приемаме че папката е създадена , сега трябва да създам и страница за нея , примерно karandila.php и накрая да ъплоадвам снимките в папка karandila и те да излизат на тая страница .

но това става въпрос за много събития , много папки , много картинки ...

Някакви идеи :)
 
Тази форма за качване е направена да се качват картинки и файлове
Това е базата данни

Код:
CREATE TABLE `files` (
`id` int(12) NOT NULL auto_increment,
`pic` varchar(255) NOT NULL,
`file` varchar(255) NOT NULL,
`subject` text NOT NULL COLLATE utf8_general_ci,
PRIMARY KEY(`id`)
);
Трябва да си направиш папка в която ще се качват файловете при мен е upload
Ето и файла upload.php
Код:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Upload</title>
</head>
<body>

<?php
require "config.php";
require "functions.php";

$error = '';
if (isset($_POST['submit']) && !empty($_FILES['pic']['name']) && !empty($_FILES['fail']['name']) && !empty($_POST['subject']))
{
    if (in_array(strtolower(end(explode(".", $_FILES['pic']['name']))), $exp_pic))
    {
        if (in_array(strtolower(end(explode(".", $_FILES['fail']['name']))), $exp_file))
        {
            if ($_FILES['pic']['size'] > 0 && $_FILES['pic']['size'] <= ($max_size_pic * 1024))
            {
                if ($_FILES['fail']['size'] > 0 && $_FILES['fail']['size'] <= ($max_size_file * 1048576))
                {
                	$file_copy = preg_replace("/([\/])+/", "\\1", $file_copy."/");
                	$ex_pic = end(explode(".", $_FILES['pic']['name']));
                	$ex_file = end(explode(".", $_FILES['fail']['name']));
                	$new_name_pic = new_name($ex_pic);
                	$new_name_file = new_name($ex_file);
                	
                	while (file_exists($file_copy.$new_name_pic)) { $new_name_pic = new_name($ex_pic); }
                	while (file_exists($file_copy.$new_name_file)) { $new_name_file = new_name($ex_file); }
                	
					if (@copy($_FILES['fail']['tmp_name'], $file_copy.$new_name_file) && @copy($_FILES['pic']['tmp_name'], $file_copy.$new_name_pic))
					{
						mysql_query("INSERT INTO `files` (`pic`,`file`,`subject`) VALUES ('".$file_copy.$new_name_pic."','".$file_copy.$new_name_file."','".htmlspecialchars($_POST['subject'])."')");
						$error = "Файла беше качен успешно!";
					}
					else
					{
						$error = "Файла не беше качен!";
					}           	
                }
                else
                {
                    $error = "Файла не трябва да превишава $max_size_file MB!";
                }
            }
            else
            {
                $error = "Картинката не трябва да превишава $max_size_pic KB!";
            }
        }
        else
        {
            $error = "Позволени са само следните разширения за файла: ".implode(",", $exp_file);
        }
    }
    else
    {
        $error = "Позволени са само следните разширения за картинка: ".implode(",", $exp_pic);
    }
}
?>
<b><u>Всички полета са задължителни!</u></b>
<form action="" enctype="multipart/form-data" method="post">
<table border="0">
<tr><td>Изберете картинка:</td><td><input type="file" name="pic"></td></tr>
<tr><td>Изберете файл:</td><td><input type="file" name="fail"></td></tr>
<tr><td>Описание:</td><td><textarea name="subject" rows="5" cols="30"></textarea></td></tr>
</table>
<input type="submit" name="submit" value="Изпрати">
</form>
<b><?=$error?></b>

</body>
</html>
След това и functions.php
Код:
<?php
function new_name($exp)
{
	$simbols = "1234567890qwertyuiopasdfgjklzxcvbnm";
	return substr(str_shuffle($simbols), 0, 25).".".$exp;
}

function sakra6tenie($var)
{
	global $max_simbols;
	if (strlen($var) > $max_simbols)
	{
		return nl2br(substr($var, 0, $max_simbols))."...";
	}
	else
	{
		return nl2br($var);
	}
}

function resize($pic)
{
	global $max_width_pic,$max_height_pic;
	list($width,$height) = getimagesize($pic);
    $ratio = $width / $height;
    
    if ($width > $max_width_pic || $height > $max_height_pic)
    {
        if ($width > $height)
        {
            $width = $max_width_pic;
            $height = $width / $ratio;
        }
        elseif ($width < $height)
        {
            $height = $max_height_pic;
            $width = $height * $ratio;
        }
        elseif ($width == $height)
        {
            $width = $max_width_pic;
            $height = $max_height_pic;
        }
    }
    $width = intval($width);
    $height = intval($height);
    return array("width" => $width, "height" => $height);
}
?>
Ето и файла детето ще се изваждат файловете
index.php
Код:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Upload</title>
</head>
<body>

<?php
require "config.php";
require "functions.php";

echo "<center><font size=\"5\" color=\"red\">Файлове</font></center><hr color=\"red\">";

$query = mysql_query("SELECT * FROM `files` ORDER BY `id` DESC");
if (mysql_num_rows($query) > 0)
{
	echo "<table border=\"0\" align=\"center\" valign=\"top\">\n";
	while ($row = mysql_fetch_array($query))
	{
		$size = resize($row['pic']);
		echo "<tr><td><table border=\"0\">
		<tr><td valign=\"top\"><a href=\"".$row['pic']."\" target=\"_blank\"><img src=\"".$row['pic']."\" width=\"".$size['width']."\" height=\"".$size['height']."\" border=\"0\"></a></td>
		<td valign=\"top\">".sakra6tenie($row['subject'])."<br /><br /><a href=\"".$row['file']."\" target=\"_blank\"><font color=\"red\">ИЗТЕГЛИ ФАЙЛА</font></a></td></tr>
		</table><hr width=\"50%\"></td></tr>";
	}
	echo "</table>";
}
else
{
	echo "<b>Все още няма файлове!</b>";
}
?>

</body>
</html>
Ето и config.php
Код:
<?php
$db_conn = @mysql_connect("localhost", "root", "") or die(mysql_error()); // тук си пишете данните за връзка с MySQL
@mysql_select_db("upload", $db_conn) or die(mysql_error()); // тук ви е връзкта с базата данни.
mysql_query("SET NAMES cp1251");

$exp_pic = array[color=red]("jpg","png","gif","jpeg");[/color] // разширения за картинката
$exp_file = array("rar","mp3","zip"); // разширения за файловете
$max_size_pic = 150; // запишете максималния размер на картинката(в KB)
$max_size_file = 15; // запишете максималния размер на файла(в MB)
$file_copy = "Upload/"; // къде да се записват файловете

$max_simbols = 100; // колко символа да изкарва в индекса от описанието на всеки файл
$max_width_pic = 100; // максимална ширина на картинката
$max_height_pic = 100; // максимална височина на картинката
?>
В този config.php файл се прави връзката с базата данни, и какви типове да бъдат файловете който ще се качват
 
незнам може би трябва да обясниш пак защото аз от това което си написъл разбирам че ти трябва система за ъплоад а chaser ти е дал точно такава :shock:
 
Не трябва ми система за създаване на папки като папката отговаря на различна страница , а тази страница съдържа различни картинки относно събития :)
 
А защо с mod_rewrite не заместиш УРЛ адреса, и стойноста да си я предаваш в пхп скрипта, и така да ти индексира снимките :?:
 
Replace каза:
А защо с mod_rewrite не заместиш УРЛ адреса, и стойноста да си я предаваш в пхп скрипта, и така да ти индексира снимките :?:

Защото пак ще трябва да създавам страници с отделно събитие ...
 
Папката си се добавя от админ панела, записва се в базата данни и вече си качваш снимките в нея. Без RewriteRule, кода ти би изглеждал така
index.php?directory=karandila
когато го отвориш, и във index.php имаш нещо от сорта на
Код:
$directory = $_GET['directory'];
$query = mysql_query("SELECT * FROM table WHERE directory = '$directory'");
while ($blabla) : 
    print_r($blabla);
endwhile;
естествено, като в обяснението сме пропуснали всякакви евентуални проверки, които ще ти ги оставя на твоето въображение.
Всъщност, ако това не помогне ... сигурно не съм разбрал какво се опитваш да направиш :?:
 

Back
Горе