
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.143.4.239] |
![]() |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Продолжаю вопросы новичка.
Есть файл index.php В нем есть формы для настройки различных элементов (классов) на странице, напр, цвет фона, цвет текста, размер, прочее... Захотел сделать ещё и поле для использования фонового изображения. Если после <input> прописать type="file", то пропадает текстовое поле рядом, выбор файла происходит, его название прописывается рядом с кнопкой выбора, но при нажатии клавиши "сменить" (она меняет все остальные параметры) ничего не происходит. Значение пробовал забирать и методом $_POST и с помощью $_FILES. Вот такой код (файл стилей не обязательный): ![]() ![]() <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="main.css"> </head> <div> <div class="wrap"> <?php if (isset($_POST['bodystyle'])) {$bodystyle=$_POST['bodystyle'];} /* Задаю первое условие и проверяю, что введено и присваиваю значение */ elseif (empty($bodystyle)) /* Проевряю не пустая ли строка, если пустая - ниже оставляю пустым значение переменной */ { $bodystyle=''; } /* Как правильно то сказать? Инициирую применение стиля */ echo '<style type="text/css";> body {background:'.$bodystyle.';} </style>'; ?> <!-- Ниже подобная схема для квадрата --> <?php if (isset($_POST['wcolor'])) {$wcolor=$_POST['wcolor'] ;} elseif (empty($wcolor)) { $wcolor='';} if (isset($_POST['wtextcolor'])) {$wtextcolor=$_POST['wtextcolor'] ;} elseif (empty($wtextcolor)) { $wtextcolor='';} if (isset($_POST['wwidth'])) {$wwidth=$_POST['wwidth'] ;} elseif (empty($wwidth)) { $wwidth=''; } if (isset($_POST['wbgimg'])) {$wbgimg=$_POST['wbgimg'] ;} elseif (empty($wbgimg)) { $wbgimg=''; } echo '<style type="text/css";> .wrap {background:'.$wcolor.'; background-image:'.$wbgimg.'; color:'.$wtextcolor.'; width:'.$wwidth.'; } </style>'; ?> <!-- Создаю две формы для ввода цвета БОДИ и квадрата --> <form action="index.php" method="post" enctype="multipart/form-data"> цвет фона для БОДИ:<input name="bodystyle" value="" type="text"> <input value="сменить" type="submit"> </form> <form action="index.php" method="post" enctype="multipart/form-data"> цвет фона для Квадрата:<input name="wcolor" value="" type="text"><br> Фоновое изображение: <input name="wbgimg" value="" type="file"><br> цвет текста внутри квадрата:<input name="wtextcolor" value="" type="text"><br> ширина квадрата:<input name="wwidth" value="" type="text"> <input value="сменить" type="submit"> </form> </div> </div> Причем, если в строке Фоновое изображение: <input name="wbgimg" value="" type="file"><br> меняю file на text, то естественно появляется текстовое поле и в нем можно вбить вручную путь к картинке, а потом её применить. Метод с $_FILES пробовал следущими способами: ![]() ![]() if (isset($_POST['wbgimg'])) {$wbgimg=$_FILES['wbgimg'] ;} elseif (empty($wbgimg)) { $wbgimg=''; } ![]() ![]() if (isset($_FILES['wbgimg'])) {$wbgimg=$_FILES['wbgimg'] ;} elseif (empty($wbgimg)) { $wbgimg=''; } |
Сообщ.
#2
,
|
|
|
D-G, так в чем сложность? Что у вас не получается?
|
Сообщ.
#3
,
|
|
|
Цитата Руслан @ Что у вас не получается? Если пишу вот так: ![]() ![]() Фоновое изображение: <input name="wbgimg" value="" type="file"><br> то не работает, видно, что файл выбран, но при нажатии на "Сменить" изображение не применяется А вот в таком виде нет клавиши "Обзор" ![]() ![]() Фоновое изображение: <input name="wbgimg" value="" type="text"><br> |
Сообщ.
#4
,
|
|
|
Цитата D-G @ видно, что файл выбран, но при нажатии на "Сменить" изображение не применяется Возможно ваш пхп скрипт не обрабатывает файл? ![]() Цитата D-G @ А вот в таком виде нет клавиши "Обзор" Дык элемент <input type="text" предназначен для ввода текста, с чего бы на ней возникла кнопка "обзор"? ![]() |
Сообщ.
#5
,
|
|
|
Цитата Руслан @ Дык элемент <input type="text" предназначен для ввода текста, с чего бы на ней возникла кнопка "обзор"? Это я понимаю, зато если вручную вбить путь до файла и имя файла, то изображение загружается и фот применяется Цитата Руслан @ Возможно ваш пхп скрипт не обрабатывает файл? ![]() Честно говоря даже не знаю как это сделать, но фон не применяется |
Сообщ.
#6
,
|
|
|
Цитата D-G @ зато если вручную вбить путь до файла и имя файла, то изображение загружается и фот применяется Загружаются на сервер? ![]() ![]() |
Сообщ.
#7
,
|
|
|
Цитата Руслан @ Загружаются на сервер? ![]() Попробуйте, могу и скрин выложить, фон применяется, хоть для боди, хоть для квадрата |
Сообщ.
#8
,
|
|
|
Цитата D-G @ Попробуйте Когда из браузера передается <input type="text" - файл не передается на сервер. Это точно. Передается строка, текстовая строка, это не файл. Когда вы используете <input name="wbgimg" type="file" - файл передается на сервер, во временное хранилище, отследить его судьбу можно так: var_dump($_FILES['wbgimg'] точней примерно так: ![]() ![]() if (isset($_FILES['wbgimg'])) {var_dump($_FILES['wbgimg']);} |
Сообщ.
#9
,
|
|
|
Цитата Руслан @ if (isset($_FILES['wbgimg'])) {var_dump($_FILES['wbgimg']);} Вот что получилось ![]() ![]() array(5) { ["name"]=> string(9) "gory8.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(24) "D:\xampp\tmp\phpC238.tmp" ["error"]=> int(0) ["size"]=> int(874704) } Иногда вместо ["tmp_name"]=> string(24) выдает ["tmp_name"]=> string(23) |
Сообщ.
#10
,
|
|
|
Цитата D-G @ Вот что получилось Угу, это так сказать структура и содержимое массива $_FILES['wbgimg'] - данные по файлу, который передали на сервер. ![]() $_FILES['wbgimg']['name'] - имя исходного файла. $_FILES['wbgimg']['error'] - 0 если все нормально, или код ошибки. $_FILES['wbgimg']['tmp_name'] - куда, и под каким именем файл ВРЕМЕННО размещен на сервере. Отсюда файл следует переместить куда нибудь. ну а перемещать из временного хранилища можно вот такой функцией: move_uploaded_file. Всё несколько сложней, чем казалось, меняя тип инпута "text" на "file"? ![]() |
Сообщ.
#11
,
|
|
|
Цитата Руслан @ Всё несколько сложней, чем казалось, меняя тип инпута "text" на "file"? ![]() Ну так, никто и не говорил, что жизнь проста для неуча ) Я как всегда тороплюсь и возможно делаю очередную глупость, но поменяв вот так я ничего не добился: ![]() ![]() if (isset($_FILES['wbgimg'])) {$wbgimg=$_FILES["wbgimg"] ; $uploads_dir = 'uploads'; foreach ($_FILES["wbgimg"]["error"] as $key => $error) { if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES["wbgimg"]["tmp_name"][$key]; $name = $_FILES["wbgimg"]["name"][$key]; move_uploaded_file($tmp_name, "$uploads_dir/$name"); var_dump($_FILES["wbgimg"]); } } var_dump($_FILES["wbgimg"]); } Отчет приходит такой же как и раньше. Как можно ещё проверить дальнейшую судьбу файла? И ещё, ведь если просто в текстовом поле прописать путь к файлу, то фон применяется, при этом файл на сервер не грузится. Вот отчет команды ![]() ![]() var_dump($_POST['wbgimg']); ![]() ![]() string(20) "url(image/gory8.jpg)" Может есть вариант выбора и копирования пути? |
Сообщ.
#12
,
|
|
|
Цитата D-G @ Как можно ещё проверить дальнейшую судьбу файла? Проверить наличие файла в том каталоге куда вы его отправили. Вот куда вы его отправили? ![]() |
Сообщ.
#13
,
|
|
|
Цитата Руслан @ Вот куда вы его отправили? Мне казалось, что вот это указание директории: ![]() ![]() $uploads_dir = 'uploads'; Она у меня создана, там пусто |
Сообщ.
#14
,
|
|
|
Цитата D-G @ Она у меня создана, там пусто Попробуйте так: ![]() ![]() if (isset($_FILES['wbgimg'])) { $wbgimg=$_FILES["wbgimg"]; $uploads_dir = 'uploads/'; if(!$_FILES["wbgimg"]["error"]) { $FileName_tmp_InServer=$_FILES["wbgimg"]["tmp_name"]; $FileName_Dest_InServer=$_FILES["wbgimg"]["name"]; move_uploaded_file($FileName_tmp_InServer, $uploads_dir.$FileName_Dest_InServer); } } |
Сообщ.
#15
,
|
|
|
Цитата Руслан @ Попробуйте так: Не выходит, пишет замечание про эти строки: .wrap {background:'.$wcolor.'; background-image:'.$wbgimg.'; color:'.$wtextcolor.'; width:'.$wwidth.'; } ![]() ![]() Notice: Undefined variable: wcolor on line 37 Notice: Undefined variable: wbgimg on line 38 Notice: Undefined variable: wtextcolor on line 39 Notice: Undefined variable: wwidth on line 40 При нажатии на "Сменить" пишет: ![]() ![]() Notice: Array to string conversion on line 38 |