Още един поглед много набързо и накратко :)
<?php
if (isset($_POST['send']) && $_POST['send']) {
$snimki = sizeof($_FILES['photo']['name']);
if ($snimki)
for ($i = 0; $i < $snimki; $i++) {
$ext = strtolower(strstr($_FILES['photo']['name'][$i], '.'));
if ($ext == '.jpg' || $ext == '.jpeg' || $ext == '.gif' || $ext == '.png' || $ext == '.bmp') {
$photo = md5(rand() * time()) . $ext;
$path = 'files/product/photo/' . $photo;
if (move_uploaded_file($_FILES['photo']['tmp_name'][$i], $path))
$namePhoto[] = $photo;
else
$err .= 'Грешка при обработка на снимка ' . $i + 1 . '<br />';
} else
echo 'Непозволен формат за снимка ' . $i + 1 . '<br />';
}
else
echo 'Не е избрана нито една снимка за качване!';
if ($err)
echo $err;
$this_photos = implode("|", $namePhoto);
if (!mysql_query("INSERT INTO your_DB (kolona_snimki) VALUE ('$this_photos')")) {
echo 'Възникна грешка при опит да се добавят данните!';
foreach ($namePhoto as $v)
@unlink("files/product/photo/$v");
}
}
$row = mysql_fetch_array(mysql_query("SELECT * FROM your_DB WHERE id='$id'"));
$see_photo = explode("|", $row['kolana_snimki']);
foreach ($see_photo as $show_pic)
echo '<img src="files/product/photo/' . $show_pic . '" border="0" /><br /><br />';
for ($i = 0; $i < 10; $i++)
$upload_files .= 'Качи снимка ' . $i + 1 . ': <input type="file" name="photo[]" /><br />';
?>
<FORM method="post" action="" enctype="multipart/form-data">
<?php echo $upload_files; ?>
<input type="submit" name="send" value="Качи" />
</FORM> |
И така предлагаме да се качат 10 снимки едновременно:
for ($i = 0; $i < 10; $i++)
$upload_files .= 'Качи снимка ' . $i + 1 . ': <input type="file" name="photo[]" /><br />';
?>
<FORM method="post" action="" enctype="multipart/form-data">
<?php echo $upload_files; ?>
<input type="submit" name="send" value="Качи" />
</FORM> |
В случая няма значение дали ще качи една, нито една, няколко или всичките 10. След като е изпратил формата проверяваме дали има поне една качена снимка, ако няма му казваме, че не е качил. Но ако е качил вземаме броя на снимките (организирали сме ги в масив
<input type="file" name="photo[]" /> |
с име photo.
Ако има качени снимки
$snimki = sizeof($_FILES['photo']['name']);
if ($snimki) |
организираме един цикъл за да хванем броя на качените снимки
for ($i = 0; $i < $snimki; $i++) { |
и в него проверяваме дали това, което е качено е графичен формат
$ext = strtolower(strstr($_FILES['photo']['name'][$i], '.'));
if ($ext == '.jpg' || $ext == '.jpeg' || $ext == '.gif' || $ext == '.png' || $ext == '.bmp') { |
. Ако не е казваме на потребителя, че снимка ели коя си няма да стане
} else
echo 'Непозволен формат за снимка ' . $i + 1 . '<br />'; |
Но, ако е, даваме име на конкретната снимка, както и записваме в променлива пълния път и снимката където искаш да се запише
$photo = md5(rand() * time()) . $ext;
$path = 'files/product/photo/' . $photo; |
След което записваме снимката там, където искаш и и слагаме името и в масив
if (move_uploaded_file($_FILES['photo']['tmp_name'][$i], $path))
$namePhoto[] = $photo; |
Ако име някаква грешка, записваме в променлива, в коя точно подред снимка е проблема и си продължаваме цикъла. След като свърши цикъла, ако е имало грешка в записа на някоя снимка показваме на потребителя
и записваме една променлива, която ще е във вид име на снимка|име на снимка
$this_photos = implode("|", $namePhoto); |
Тази променлива ще запишем и в таблицата от базата данни. Таблицата съм я кръстил your_DB, а колоната за снимки в нея
. Промени си ги според твоите, както и пътя за записване на файлове в горните и някои от долните пътища :)
Записваме
if (!mysql_query("INSERT INTO your_DB (kolona_snimki) VALUE ('$this_photos')")) { |
като и едновременно проверяваме дали записа е ОК. Това записване си го организарай както искаш, в колкото колони искаш. И разбира се може да не е INSERT, a UPDATE. Просто направи си заявката към базата според нуждите. тука това е само за пример. Ако е записано всичко по учебник е добре, но ако има проблем казваме на потребителя и изтриваме всички снимки от последно изпратената форма с цел да не трупаме излишни файлове.
Как показваме снимките. Правим си заявка (тука я правя по някакво ID от базата) Нагоди си я според твоите нужди
$row = mysql_fetch_array(mysql_query("SELECT * FROM your_DB WHERE id='$id'")); |
След което за всеки елемент извеждаме снимката
$see_photo = explode("|", $row['kolana_snimki']); foreach ($see_photo as $show_pic)
echo '<img src="files/product/photo/' . $show_pic . '" border="0" /><br /><br />'; |
Тоест в базата записваме само имената на снимката. Ако са повече имената на снимките разделени с някакъв символ, в случая с пипет| Ако ще за повече от 5 снимки е добре полето в базата да ти е text, иначе може да е varchar. Ти ще си определиш. А в source на програмата задаваме твърд път къде ще са снимките.