Форма для ввода данных находится в show.tpl
<form action="" method="post">
<b>*Введите № телефона</b><br />
+38
<input name="form[value1]" type="text" size="10" value="<?php echo $POST['value1']; ?>">
<br>
<b>Введите дополнительный № телефона</b><br />
+38
<input name="form[value2]" type="text" size="10" value="<?php echo $POST['value2']; ?>">
<br>
<p><br />
<input name="ok" type="submit" class="стиль3" value="Дать рекламу">
<br/>
</p>
</form>
Обработчик в файле read_controller.php
<?php
/**
* Generation of page of an error at access out of system
* Генерация страницы ошибки при доступе вне системы
*/
if(!defined('IRB_KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('../../404.html'));
}
/**
* We connect a file of the MySQL functions
* Подключаем файл функций MySQL
*/
include './libs/mysql.php';
/**
* Check of the entered data
* Проверка введенных данных
*/
if($ok)
{
if(mb_strlen($POST['value1']) > 10)
$info[] = IRB_LANG_SHORT_TELEFON;
elseif(mb_strlen($POST['value1']) < 10)
$info[] = IRB_LANG_SHORT_TELEFON;
if(!preg_match("|^[\d]*$|",$POST['value1']))
$info[] = IRB_LANG_INVALID_TELEFON;
if(!preg_match("|^[\d]*$|",$POST['value2']))
$info[] = IRB_LANG_INVALID_TELEFON;
}
/**
* The data recording block
* Блок записи информации
*/
if(!count($info))
{
$text = createBBtags($POST['value1'], false);
$text1 = createBBtags($POST['value2'], false);
if(!empty($text)and($text1))
{
mysqlQuery("INSERT INTO `". IRB_DBPREFIX ."link`
SET
`tel` = '". escapeString($POST['value1']) ."',
`tel1` = '". escapeString($POST['value2']) ."'");
$info[] = IRB_LANG_YES_TEXT;
}
else
$info[] = IRB_LANG_NO_TEXT;
}
}
?>
Данные вносятся в бд. Нужно добавить загрузку картинок на сайт.
Новое имя картинки -в бд, саму картинку в папку upload
Понятно что в форму нужно добавить
<p><input type="file" name="form[value3]"></p>
А вот в обработчике не получается. С переменной $_FILES картинка не грузится. Может кто подскажет как сделать?
Заранее спасибо.
Спустя 56 минут, 16 секунд (24.09.2011 - 22:54) Sanchopansa написал(а):
<form action="" method="post" enctype="multipart/form-data">
Спустя 10 часов, 4 минуты, 27 секунд (25.09.2011 - 08:59) copchic написал(а):
Мы вместе с телефонами должны из одной формы (конкретно из этой) отправить файл.
Как отправить отдельно картинку я знаю.
Хорошо, а с помощью какой функции получить файл в моём случае для MVC на сайт ?
И как при этом имя файла засунуть в бд
Как отправить отдельно картинку я знаю.
<?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 = $upload_dir .'/' . $_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 = 'upload';
// Запускаем функцию
if(!empty($_POST['upload_submit']))
{
$message = uploadHandle(200, $extensions, $upload_dir);
// Выводим сообщение
echo $message['error'] ? $message['error'] : $message['info'];
}
?>
<form action="file_upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="userfile" />
<input type="submit" value="Закачать" name="upload_submit" />
</form>
Хорошо, а с помощью какой функции получить файл в моём случае для MVC на сайт ?
И как при этом имя файла засунуть в бд
Спустя 13 минут, 20 секунд (25.09.2011 - 09:12) jeka_pro написал(а):
Ну вы когда получаете массив $_FILES копируйте картинку в папку например images. В бд заносите имя файла, можно с путем можно без, кому как нравиться.
потом вытаскивайте из бд имя файла, и подставляйте значение
<img src"images/<?=$__myfile_name?>">
потом вытаскивайте из бд имя файла, и подставляйте значение
<img src"images/<?=$__myfile_name?>">
Спустя 4 минуты, 23 секунды (25.09.2011 - 09:17) copchic написал(а):
Когда я получаю массив $_FILES у меня контроллер ругается. Не знаю почему. Я думаю возможно ли отправлять и файл и другие данные одновременно?
Спустя 18 минут, 40 секунд (25.09.2011 - 09:35) jeka_pro написал(а):
ajax
Спустя 58 минут, 13 секунд (25.09.2011 - 10:34) copchic написал(а):
Давайте сначала. Вот форма для отправки данных и файла.
Проверяем как передаётся файл на сайт в обработчике.
Выдаёт ошибку! Файл не передаётся! Если без данных [value1] и [value2] - один файл, то передаётся.
Значит что-то не так в форме. Как Сделать?
<form action="" method="post" enctype="multipart/form-data">
<b>*Введите № телефона</b><br />
+38
<input name="form[value1]" type="text" size="10" value="<?php echo $POST['value1']; ?>">
<br>
<b>Введите дополнительный № телефона</b><br />
+38
<input name="form[value2]" type="text" size="10" value="<?php echo $POST['value2']; ?>">
<br>
<input type="file" name="form[value3]">
<p><br />
<input name="ok" type="submit" class="стиль3" value="Дать рекламу">
<br/>
</p>
</form>
Проверяем как передаётся файл на сайт в обработчике.
echo '<pre>';
print_r($_FILES['value3']);
echo '</pre>';
Выдаёт ошибку! Файл не передаётся! Если без данных [value1] и [value2] - один файл, то передаётся.
Значит что-то не так в форме. Как Сделать?
Спустя 17 минут, 5 секунд (25.09.2011 - 10:51) jeka_pro написал(а):
print_r($_FILES['form']['name']['value3'] );
Спустя 25 минут, 34 секунды (25.09.2011 - 11:16) copchic написал(а):
Понял! Данные в моём случае через
<input type="file" name="form[value3]">не отправляются. Нужно использовать
<input type="file" name="userfile" />тогда массив передаётся!
Спустя 1 день, 9 часов, 3 минуты, 48 секунд (26.09.2011 - 20:20) copchic написал(а):
Здравствуйте, ещё один вопрос по загрузке картинок.
Если картинка отсылается вместе с данными всё ОК - но если картинка не выбрана при проверке ругается, что не тот формат файла.
Если файл выбран в форме - отсылается он,
а если не выбран нужно отправить свою картинку (скажем по умолчанию).
Возможно ли так сделать?
Если картинка отсылается вместе с данными всё ОК - но если картинка не выбрана при проверке ругается, что не тот формат файла.
Если файл выбран в форме - отсылается он,
а если не выбран нужно отправить свою картинку (скажем по умолчанию).
Возможно ли так сделать?
Спустя 1 час, 28 минут, 40 секунд (26.09.2011 - 21:49) Evilsoul написал(а):
copchic
Цитата |
не отправляются. Нужно использовать |
не совсем верно, можно использовать любое имя и его же принимать:
<input type="file" name="ivan" />
echo '<pre>';
print_r($_FILES['ivan']);
echo '</pre>';
Все остальные данные которые отправлены не с инпута типа файл будут находится в массиве $_POST в курсе IRBIS этот массив обрабатывается и создается новый $POST
Цитата |
Возможно ли так сделать? |
Не помню в каком виде приходит массив $_FILES если ничего не выбрано...
поэтому напишу два варианта:
1) Можно проверить есть ли что-то в этом массиве, допустим так
if(count($_FILES['userfile']) == 0) echo 'пусто';
2) или так:
if($_FILES['userfile']['size'] == 0) echo 'пусто';
Спустя 5 минут, 30 секунд (26.09.2011 - 21:54) Игорь_Vasinsky написал(а):
Цитата |
Не помню в каком виде приходит массив $_FILES |
в пустом :D
if(empty($_FILES['yourname']['tmp_name']))
echo "тю-тю";
В моём журнале есть статейка - почти все аспекты загрузки картино освещены.
_____________
Я знаю, что ничего не знаю...