|
|
|
| Предлагается пользователю оставить старый или загрузить новый логотип.
Если есть старый логотип - он выводится, а вот если грузить новый то путь к новому логотипу не прописывается в папке logo для нужного id_pu
<?php
/**
* Function of uploaded of a file
* Функция загрузки файла (аплоадер)
* @param int $max_file_size максимальный размер файла в килобайтах
* @param array $valid_extensions массив допустимых расширений
* @param string $upload_dir директория загрузки
* @return array сообщение о ходе выполнения
*
* @author IT studio IRBIS-team (www.irbis-team.com)
* @copyright © 2009 IRBIS-team
*/
function uploadHandle($max_file_size = 100, $valid_extensions = array(), $upload_dir = '.')
{
$error = null;
$info = null;
$max_file_size *= 1024;
if ($_FILES['userfile']['error'] === UPLOAD_ERR_OK)
{
// проверяем расширение файла
$file_extension = pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION);
if (in_array($file_extension, $valid_extensions))
{
// проверяем размер файла
if ($_FILES['userfile']['size'] < $max_file_size)
{
$destination ="img/logo_pu/" . $_FILES['userfile']['name'];
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $destination))
$info = 'Файл успешно загружен';
else
$error = 'Не удалось загрузить файл';
}
else
$error = 'Размер файла больше допустимого';
}
else
$error = 'У файла недопустимое расширение';
}
else
{
// массив ошибок
$error_values = array(
UPLOAD_ERR_INI_SIZE =>
'Размер файла больше разрешенного директивой upload_max_filesize в php.ini',
UPLOAD_ERR_FORM_SIZE =>
'Размер файла превышает указанное значение в MAX_FILE_SIZE',
UPLOAD_ERR_PARTIAL => 'Файл был загружен только частично',
UPLOAD_ERR_NO_FILE => 'Не был выбран файл для загрузки',
UPLOAD_ERR_NO_TMP_DIR => 'Не найдена папка для временных файлов',
UPLOAD_ERR_CANT_WRITE => 'Ошибка записи файла на диск'
);
$error_code = $_FILES['userfile']['error'];
if (!empty($error_values[$error_code]))
$error = $error_values[$error_code];
else
$error = 'Случилось что-то непонятное';
}
return array('info' => $info, 'error' => $error);
}
/////////////////////////////////////////////////////////////////////
$extensions = array('jpg', 'jpeg', 'png', 'gif');
$upload_dir = 'images';
// Запускаем функцию
if(!empty($_POST['upload_submit']))
{
$message = uploadHandle(200, $extensions, $upload_dir);
// Выводим сообщение
echo $message['error'] ? $message['error'] : $message['info'];
}
?>
<form name="add" method='post' action='pu_add.php' enctype="multipart/form-data">
<table width="650" cellspacing="5" cellpadding="5">
<tr>
<td width="200" valign="top"><b>Название организации:</b></td>
<td width="550" align="left" style='background-color:#f0f0f0'>
<input value= "<?php echo $_GET['title']; ?>" type="text" name="title">
<tr>
<td><input type="radio" name="logo" value="old"> оставить старый логотип<br></td>
<td><img src="<?php echo $_GET['logo']; ?>"></td>
</tr><tr>
<td><input type="radio" name="logo" value="new"> загрузить новый<br> </td>
<td> <input type="file" name="filename"></td>
</tr><tr>
<td><input type="radio" name="logo" value="no_im"> нет логотипа</td>
<td></td>
</tr>
</table>
<input name="id_pu" type="hidden" value="<?php echo $_GET['id_pu']; ?>">
<br>
<center>
<label>
<input type="submit" name="submit" id="submit" value="Сохранить изменения">
</label>
</center>
</form>
</td>
</tr>
</table>
|
| |
|
|
|
|
|
|
|
для: Василий
(03.01.2012 в 20:14)
| | 1)где хранится путь к старому логотипу?
2)как Вы выводите старый логотип в браузер? | |
|
|
|
|
|
|
|
для: Slo_Nik
(03.01.2012 в 20:30)
| | старый логотип выводится:
<td><input type="radio" name="logo" value="old"> оставить старый логотип<br></td>
<td><img src="<?php echo $_GET['logo']; ?>"></td>
|
путь хранится в папке img/logo
на странице пользователя его логотип выводится так:
if (!empty($myrow3 ['logo'])) {
printf ("<tr>
<td><img src='%s' align='middle'></td>
<td width='400px'>", $myrow3["logo"]);}
|
| |
|
|
|
|
|
|
|
для: Василий
(03.01.2012 в 20:37)
| | я так понял, что данные о логотипе хранятся у Вас в БД.
А Вы обновили данные в базе после того, как заменили логотип?
Вы же ни где не сохраняете новое имя, поэтому не выводится новый логотип. | |
|
|
|
|
|
|
|
для: Slo_Nik
(03.01.2012 в 20:49)
| | А как же вот это
$destination ="img/logo_pu/" . $_FILES['userfile']['name'];
|
Как туда прописать нужный путь с привязкой id_pu? | |
|
|
|
|
|
|
|
для: Василий
(03.01.2012 в 20:54)
| | ну и что?
на странице пользователя тоже не видно логотипа?
Вы этим скриптом просто грузите файл, а надо ещё и запись с базе обновить, чтобы сохранить новое имя логотипа | |
|
|
|
|
|
|
|
для: Slo_Nik
(03.01.2012 в 21:05)
| | почему же. обновляю.
Title обновляется, а logo вот нет
if (isset($_POST['logo'])) {$logo = $_POST['logo']; if ($logo == '') {unset ($logo);}}
$result = mysql_query ("insert bd SET logo='$logo',
|
| |
|
|
|
|
|
|
|
для: Василий
(03.01.2012 в 21:11)
| | в таком случае, для начала, выведите дам массивов POST и FILES в начале скрипта, посмотрите, что в них находится после отправки формы.
потом посмотрите, что находится в запросе, перед выполнением.
<?php
echo "<pre>";
print_r(POST);
echo "</pre>";
// то же самое сделайте для FILES
// ну и запрос
$query = "INSERT INTO `table` SET `logo` = '".$logo."'";
echo $query;
if(!mysql_query($query)){
echo mysql_error();
}
?>
|
В Вашем запросе что то не так.... | |
|
|
|
|
|
|
|
для: Slo_Nik
(03.01.2012 в 21:51)
| | echo "<pre>";
print_r(POST);
echo "</pre>";
// то же самое сделайте для FILES
Вот так правильно -
echo "<pre>";
print_r(FILES );
echo "</pre>";
|
? | |
|
|
|
|
|
|
|
для: Василий
(03.01.2012 в 22:03)
| | Вот Вы опять тупо скопировали то, что я написал, а я написал с ошибкой.... )))
извините, но исправить Вам прийдётся
<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
// то же самое сделайте для $_FILES
// ну и запрос
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(03.01.2012 в 22:19)
| |
<?php
echo "<pre>";
print_r($_POST);
echo "</pre><hr>";
?>
|
Logo пустой передается
а проверка показывает, что файл есть:
Array
(
[filename] => Array
(
[name] => yutex.png
[type] => image/png
[tmp_name] => /tmp/phpp2aKfg
[error] => 0
[size] => 92734
)
)
|
| |
|
|
|
|
|
|
|
для: Василий
(03.01.2012 в 22:33)
| | получается, что в запросе $logo пустая , правильно?
но берёте Вы её из POST, а надо брать имя из FILES
что показывает дамп массива $_POST ? | |
|
|
|
|
|
|
|
для: Slo_Nik
(03.01.2012 в 22:52)
| | [logo] =>
пусто | |
|
|
|
|
|
|
|
для: Василий
(03.01.2012 в 22:55)
| | Ошибка где-то здесь.
Надо же передавать $_GET['logo']
<?php
if (!empty($_GET['logo'])) {
printf ("<td><input type='radio' name='logo' value='old'> оставить старый логотип<br></td>
<td><img src='%s'></td>
</tr><tr>
<td><input type='radio' name='logo' value='new'> загрузить новый<br> </td>
<td> <input type='file' name='filename'></td>
</tr><tr>
<td><input type='radio' name='logo' value='no_im'> нет логотипа</td>
<td></td>", $_GET["logo"]);}?>
<?php
if (empty($_GET['logo'])) {
printf ("<td><input type='radio' name='logo' value='new'> загрузить логотип<br> </td>
<td> <input type='file' name='filename'></td>
</tr><tr>
<td><input type='radio' name='logo' value='no_im'> нет логотипа</td>
<td></td>", $_GET["logo"]);}?>
</tr>
|
| |
|
|
|
|
|
|
|
для: Василий
(03.01.2012 в 22:58)
| | этим Вы просто выводите изображение, но ни куда не передаёте <img src="<?php echo $_GET['logo']; ?>">
Вам уже помоему писали, что проверяете значение чекбокса, если отмечен чекбокс, что нужен новый логотип, то проверяете массив $_FILES.
C этого массива и берёте название нового логотипа | |
|
|
|
|
|
|
|
для: Slo_Nik
(03.01.2012 в 23:10)
| | вы имеете ввиду вот это?
<?php
if(is_numeric($_POST['id_pu']))
{
$id_pu = (int)$_POST['id_pu'];
// Допустим, у вас есть таблица с предприятиями `business`,
// где поле `id` - идентификатор предприятия. Проверяем что посланный ID существует.
if(mysql_result(mysql_query("SELECT COUNT(*) FROM `business` WHERE `id` = {$id_pu}"), 0))
{
Проверяем загруженный файл
if($_FILES["filename"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit;
}
// Проверяем загружен ли файл
if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
{
// Если файл загружен успешно, перемещаем его
// из временной директории в конечную
$path = $_SERVER['DOCUMENT_ROOT'].'/upload/img/logo/'.$id_pu.'.jpg';
if(move_uploaded_file($_FILES["filename"]["tmp_name"], $path))
{
// Если лого загружается второй раз, то необходимо проверить наличие
уже загруженного лого в базе, в таблице `pu`
if(!mysql_result(mysql_query("SELECT COUNT(*) FROM `pu` WHERE `id_pu` = ".$id_pu), 0))
{
// Делаем insert
mysql_query("INSERT INTO `pu` (`id_pu`, `logo`) VALUES ({$id_pu}, '{$path}')");
}
}
}
else
echo("Ошибка загрузки файла");
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Василий
(03.01.2012 в 23:26)
| | Я имел ввиду, что в базу занесите только имя файла, а путь к нему будете формировать уже при выводе в браузер | |
|
|
|
|
|
|
|
для: Slo_Nik
(03.01.2012 в 23:34)
| | хорошо. как занести-то?
Ведь не заносится, проклятая )) | |
|
|
|
|
|
|
|
для: Василий
(03.01.2012 в 23:37)
| | >хорошо. как занести-то?
так же как и остальные данные Вы заносите | |
|
|
|
|
|
|
|
для: Slo_Nik
(03.01.2012 в 23:47)
| | Люди, подскажите! | |
|
|
|
|
|
|
|
для: Василий
(04.01.2012 в 00:25)
| | Я не "люди", я "slo_nik"....))))
что Вы выполняете этим участком кода ?
<?php
mysql_query("INSERT INTO `pu` (`id_pu`, `logo`) VALUES ({$id_pu}, '{$path}')");
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(04.01.2012 в 00:33)
| | я его не использую. я привел вам его как пример. мой код верхний | |
|
|
|
|
|
|
|
для: Василий
(04.01.2012 в 00:38)
| | ну раз как пример, тогда долго прийдётся Вам ждать помощи....
Определитесь для начала с каким кодом Вы работаете и не морочьте голову ни себе, ни другим... | |
|
|
|
|
|
|
|
для: Slo_Nik
(04.01.2012 в 00:56)
| | с этим кодом
<?php
/**
* Function of uploaded of a file
* Функция загрузки файла (аплоадер)
* @param int $max_file_size максимальный размер файла в килобайтах
* @param array $valid_extensions массив допустимых расширений
* @param string $upload_dir директория загрузки
* @return array сообщение о ходе выполнения
*
* @author IT studio IRBIS-team (www.irbis-team.com)
* @copyright © 2009 IRBIS-team
*/
function uploadHandle($max_file_size = 100, $valid_extensions = array(), $upload_dir = '.')
{
$error = null;
$info = null;
$max_file_size *= 1024;
if ($_FILES['userfile']['error'] === UPLOAD_ERR_OK)
{
// проверяем расширение файла
$file_extension = pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION);
if (in_array($file_extension, $valid_extensions))
{
// проверяем размер файла
if ($_FILES['userfile']['size'] < $max_file_size)
{
$destination ="img/logo_pu/" . $_FILES['userfile']['name'];
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $destination))
$info = 'Файл успешно загружен';
else
$error = 'Не удалось загрузить файл';
}
else
$error = 'Размер файла больше допустимого';
}
else
$error = 'У файла недопустимое расширение';
}
else
{
// массив ошибок
$error_values = array(
UPLOAD_ERR_INI_SIZE =>
'Размер файла больше разрешенного директивой upload_max_filesize в php.ini',
UPLOAD_ERR_FORM_SIZE =>
'Размер файла превышает указанное значение в MAX_FILE_SIZE',
UPLOAD_ERR_PARTIAL => 'Файл был загружен только частично',
UPLOAD_ERR_NO_FILE => 'Не был выбран файл для загрузки',
UPLOAD_ERR_NO_TMP_DIR => 'Не найдена папка для временных файлов',
UPLOAD_ERR_CANT_WRITE => 'Ошибка записи файла на диск'
);
$error_code = $_FILES['userfile']['error'];
if (!empty($error_values[$error_code]))
$error = $error_values[$error_code];
else
$error = 'Случилось что-то непонятное';
}
return array('info' => $info, 'error' => $error);
}
/////////////////////////////////////////////////////////////////////
$extensions = array('jpg', 'jpeg', 'png', 'gif');
$upload_dir = 'images';
// Запускаем функцию
if(!empty($_POST['upload_submit']))
{
$message = uploadHandle(200, $extensions, $upload_dir);
// Выводим сообщение
echo $message['error'] ? $message['error'] : $message['info'];
}
?>
<form name="add" method='post' action='pu_add.php' enctype="multipart/form-data">
<table width="650" cellspacing="5" cellpadding="5">
<tr>
<td width="200" valign="top"><b>Название организации:</b></td>
<td width="550" align="left" style='background-color:#f0f0f0'>
<input value= "<?php echo $_GET['title']; ?>" type="text" name="title">
<tr>
<td><input type="radio" name="logo" value="old"> оставить старый логотип<br></td>
<td><img src="<?php echo $_GET['logo']; ?>"></td>
</tr><tr>
<td><input type="radio" name="logo" value="new"> загрузить новый<br> </td>
<td> <input type="file" name="filename"></td>
</tr><tr>
<td><input type="radio" name="logo" value="no_im"> нет логотипа</td>
<td></td>
</tr>
</table>
<input name="id_pu" type="hidden" value="<?php echo $_GET['id_pu']; ?>">
<br>
<center>
<label>
<input type="submit" name="submit" id="submit" value="Сохранить изменения">
</label>
</center>
</form>
</td>
</tr>
</table>
|
| |
|
|
|
|
|
|
|
для: Василий
(04.01.2012 в 01:05)
| | этот код загружает изображения, но не делает ни каких записей в базу данных....
после загрузки файла Вам надо будет записать ещё его имя в базу данных, потом оттуда его брать и показывать файл пользователю.
но это уже другой вопрос и для другой ветки форума.
надеюсь, что файл у Вас загружается туда, куда Вы хотели.... | |
|
|
|
|
|
|
|
|
для: Василий
(04.01.2012 в 02:09)
| | Тему закрываем! | |
|
|
|