[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузчик картинок
m4a1fox
Всем доброго времени суток! Есть такой код загрузчика
if (isset($_POST['title']))
{
if (!empty($_FILES['image']['tmp_name']))
{
// Определяем расширение файла
$ext = strrchr($_FILES['image']['name'], ".");
// Формируем путь к файлу
$image = "../file/".$_FILES['image']['name']."$ext";
$smallimage = "../file/".$_FILES['image']['name']."_s$ext";
// Перемещаем файл из временной директории сервера в
// директорию /files Web-приложения
if (copy($_FILES['image']['tmp_name'], "".$image))
{
// Уничтожаем файл во временной директории
unlink($_FILES['image']['tmp_name']);
// Изменяем права доступа к файлу
chmod("".$image, 0644);
}
} else links($_POST['id'], "Фотография не передана на сервер");
// Вызываем функцию resizeimg(), создающую уменьшенную копию фотографии
// $image и помещающую её в файл $smallimage
if(!resizeimg($image, $smallimage, 100, 67))
links($_POST['id'], "Ошибка при создании уменьшенной копии изображения с помощью библиотеки GDLib");
// Заменяем одинарные кавычки обратными
$_POST['name'] = str_replace("'", "`", $_POST['name']);

он заносит картинку в БД с адресом! Но если я не хочу выбирать картинку он выкидывает ошибку! Вопрос! Как сделать так, что бы если я ничего не выбираю, то и он ничего не вносит! Насколько я понимаю, делается следующим образом:
   if (empty($_FILES['image']['tmp_name']))
тоесть без ! знака?



Спустя 8 минут, 50 секунд (12.11.2010 - 13:40) pas написал(а):
if (isset($_POST['title']))
{
if (!empty($_FILES['image']['tmp_name']))
{
// Определяем расширение файла
$ext = strrchr($_FILES['image']['name'], ".");
// Формируем путь к файлу
$image = "../file/".$_FILES['image']['name']."$ext";
$smallimage = "../file/".$_FILES['image']['name']."_s$ext";
// Перемещаем файл из временной директории сервера в
// директорию /files Web-приложения

if (copy($_FILES['image']['tmp_name'], "".$image))
{
// Уничтожаем файл во временной директории
unlink($_FILES['image']['tmp_name']);
// Изменяем права доступа к файлу
chmod("".$image, 0644);
}
// Вызываем функцию resizeimg(), создающую уменьшенную копию фотографии
// $image и помещающую её в файл $smallimage

if(!resizeimg($image, $smallimage, 100, 67))
links($_POST['id'], "Ошибка при создании уменьшенной копии изображения с помощью библиотеки GDLib");

} //else links($_POST['id'], "Фотография не передана на сервер");

// Заменяем одинарные кавычки обратными

$_POST['name'] = str_replace("'", "`", $_POST['name']);


Если я всё правильно понял, то переносим обработку картинки в блок, где идёт копирование картинки. А строку с выводом ошибки о неуспешной передаче картинки на сервер комментим.

Спустя 8 минут, 9 секунд (12.11.2010 - 13:48) m4a1fox написал(а):
pas
Если как вы предложили, то записывается пустота, и соответственно стирает картинку!

Спустя 4 минуты, 31 секунда (12.11.2010 - 13:53) pas написал(а):
Ну так я не вижу дальше кода, поэтому проверяйте определена ли переменная $image или $smallimage (я не знаю, что Вы заносите в БД) и на основе этого обновляйте или не обновляйте поле с путём картинки.

Спустя 4 минуты, 7 секунд (12.11.2010 - 13:57) m4a1fox написал(а):
pasДа, извините, вот код!
<?php session_start();
include("blocks/db.php");
require_once ("util.php");
mysql_query("SET NAMES UTF8");
mysql_query('SET CHARACTER SET utf8');
mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"');
header("Content-Type: text/html; charset=utf-8");

if (isset($_POST['title']))
{
if($_FILES['userfile']['name'] != "")
{

$allowed_filetypes = array('.jpg','.gif','.bmp','.png', '.JPG'); // Здесь мы перечисляем допустимые типы файлов
$max_filesize = 524288; // Максимальный размер загружаемого файла в байтах (в данном случае он равен 0.5 Мб).
$upload_path = '../file/'; // Место, куда будут загружаться файлы (в данном случае это папка 'files').
$filename = $_FILES['userfile']['name']; // В переменную $filename заносим точное имя файла (включая расширение).
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); // В переменную $ext заносим расширение загруженного файла.
if(!in_array($ext,$allowed_filetypes))
die('Данный тип файла не поддерживается.');
if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)
die('Фаил слишком большой.');
if(!is_writable($upload_path))
die('Невозможно загрузить фаил в папку. Установите права доступа - 777.');
move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename);
}
else
{
$filename = '';
}


$result = mysql_query("UPDATE `data` SET
`title`='"
.$_POST['title']."',
`id_menu`='"
.(int)$_POST['ind']."',
`description`='"
.$_POST['description']."',
`text`='"
.$_POST['text']."',
`date`='"
.$_POST['date']."',
`small`='"
.$filename."'
WHERE `id`=
$_GET[ind] ");
if ($result == true)
{
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=edit_news.php'>
</HEAD>"
;
}

else {
echo("<p>Ты говно</p>");
}

}

?>
<html>
<
head>
<
title> Страница для обновления главной </title>
</
head>
<
link href="style.css" rel="stylesheet" type="text/css">
<
script type="text/javascript" src="tinymce/tiny_mce.js"></script>
<
script type="text/javascript" src="tinymce/tiny_mce.js"></script>

<
script type='text/javascript'>
tinyMCE.init({
mode : "textareas",
theme : "advanced",
relative_urls : false,
plugins : "markettoimages,advimage,safari,inlinepopups,contextmenu",
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,forma tselect,fontselect,fontsizeselect,|,bullist,numlist,|,link,unlink,anchor,image,code,|,markettoimages, forecolor,backcolor,|,hr",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_resize_horizontal : true,
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
editor_deselector : "ignorewysywig",
entity_encoding : "raw", //Убирает символ 'вопроса' вместо пробела  
content_css : "editor/myownerfolder/css/content.css",
template_external_list_url : "editor/myownerfolder/lists/template_list.js",
external_link_list_url : "editor/myownerfolder/lists/link_list.js",
external_image_list_url : "editor/myownerfolder/lists/image_list.js",
media_external_list_url : "editor/myownerfolder/lists/media_list.js",

// Replace values for the template plugin
template_replace_values : {
username : "Some User",
staffid : "991234" }

}
);
</
script>
<
body leftMargin=0 topMargin=0>
<
table class="table" CELLPADDING=0 CELLSPACING=0 width=100%>


<
tr valign="top" height="50px" bgcolor="#a50f10" align="center">
<
td valign="middle" colspan="2">
<?php
include ("blocks/top.php");
?>
</td>
</
tr>


<
tr >
<
td width="150px" valign="top" style="border-right: 2px solid black;">
<
div style="margin-left: 10px; margin-top: 20px; text-decoration:none;">
Изменить меню гелереи<br /> <hr />
<
a href="index.php">Назад</a>
</
div>
</
td>

<
td width="700px" valign="top">
<
div style="padding-left: 10px; margin-top: 20px; text-decoration:none;">
<?php
if(!empty($_GET['ind']))
{ //Вывод данных из БД.
//Запрос к БД

$query = "SELECT id, title, description, text, date, small FROM `data` WHERE `id` = '".$_GET['ind']."'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
?>
<form method="post" action="" enctype="multipart/form-data">
<
label><input type="hidden" name="id" value="<?php echo $row[id]?>" id="id"></label>

<
table>
<
tr>
<
td><b>Название:</b></td>
<
td><input type="text" name="title" value="<?php echo $row[title]?>" id="title"></td>
</
tr>

<
tr>
<
td><b>Дата новости:</b></td>
<
td><input type="text" name="date" value="<?php echo $row[date]?>" id="date"></td>
</
tr>

<
tr>
<
td><b>Картинка:</b></td>
<
td><input type="file" name="userfile"></td>
</
tr>
<
tr>
<
td><b>Категория:</b></td>
<
td><select name="ind">
<?php
$query = "SELECT id, name FROM menu";
$id = mysql_query($query);
if(!$id) exit("Ошибка - ".mysql_error());
while($ind=mysql_fetch_array($id))
{
echo "<option value='$ind[id]'>$ind[name]</option><br />";
}
?>

</select></td>
</
tr>
</
table>



<
p> <label><b>Введите описание:</b>
<
textarea name="description" id="description" cols="80" rows="10"><?php echo $row[description]?></textarea>
</
label>
</
p>


<
p> <label><b>Введите текст главной страницы:</b><br />
<
textarea name="text" id="text" cols="80" rows="20"><?php echo $row[text]?></textarea>
</
label>
</
p>

<
p> <label>
<
input type="submit" id="submit" value="Занести">
</
label>
</
p>

</
form>

<?php
printf( $PHP_SELF, $row["id"], $row["tile"], $row["date"], $row["small"],
$row["description"], $row["text"]);
}


?>


</div>

</
td>

</
tr>
</
table>
</
body>
</
html>


Спустя 9 минут, 52 секунды (12.11.2010 - 14:07) pas написал(а):
Ну можно например сделать 2 строковых переменных с запросами: в одной будет запрос с обновлением картинки, а в другой - без обновления.

в итоге получим, что-то типо :

$queryWPic = "UPDATE `data` SET
`title`='"
.$_POST['title']."',
`id_menu`='"
.(int)$_POST['ind']."',
`description`='"
.$_POST['description']."',
`text`='"
.$_POST['text']."',
`date`='"
.$_POST['date']."',
`small`='"
.$filename."'
WHERE `id`= "
.$_GET['ind'] ;

$queryWOPic = "UPDATE `data` SET
`title`='"
.$_POST['title']."',
`id_menu`='"
.(int)$_POST['ind']."',
`description`='"
.$_POST['description']."',
`text`='"
.$_POST['text']."',
`date`='"
.$_POST['date']."'
WHERE `id`= "
.$_GET['ind'] ;

if (empty($filename))
$result = mysql_query($queryWOPic);
else $result = mysql_query($queryWPic);



P.S. Естественно это код только для того, чтобы объяснить принцип. Тут многое можно написать сокращённее и оптимальнее.

Спустя 6 минут, 32 секунды (12.11.2010 - 14:13) m4a1fox написал(а):
pas
Спасибо! Очень помогли!

Спустя 12 минут, 42 секунды (12.11.2010 - 14:26) inpost написал(а):
if($_FILES['userfile']['name'] != "") - условие, если нет картинки! Код пишешь на основании этого условия
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.