Есть форма для загрузки файлов. Код ниже: HTML: <!DOCTYPE HTML> <html> <head> <title>Загрузка файлов из формы</title> <meta charset=UTF-8> </head> <body> <h2><p><b> Форма для загрузки файлов </b></p></h2> <form action="DZ12A.php" method="post" enctype="multipart/form-data"> <input type="file" name="filename"><br> <input type="submit" value="Загрузить"><br> </form> </body> </html> Также есть php код, обрабатывающий эту форму: PHP: if(is_uploaded_file($_FILES["filename"]["tmp_name"])) { move_uploaded_file($_FILES["filename"]["tmp_name"], "D:\Марина диск E" . $_FILES["filename"]["name"]); echo 'Файл успешно загружен'; } else { echo 'При загрузке файла произошла ошибка'; } Необходимо задать формат нового имени загружаемого файла на выбор (т. е., грубо говоря, при загрузке файла изменять его имя): - формат 1: текущий год-месяц-день - формат 2: текущий год-месяц-день часы: минуты - формат 3: случайное имя длиной 5 символов Я сделал это следующим образом. PHP: //формат 1, формат 2 $t1 = time(); $arr[0] = date('Y-m-d', $t1); $arr[1] = date('Y-m-d H:i', $t1); //формат 3 $name = null; $i = 0; $arra = array ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9','0'); While ($i != 5){ $a = array_rand ($arra); $name = $name . $a; $i++; } $arr[2] = $name; //Вот сама строчка, изменяющая имя $_FILES["filename"]["name"] = array_rand ($arr); Но фишка вот в чём: Необходимо сверстать форму с загрузкой файлов, где есть ПЕРЕКЛЮЧАТЕЛЬ, ИЗМЕНЯЮЩИЙ ИМЯ. То-есть input type = "radio". При этом формат 3: случайное имя длиной 5 символов (где цифра 5 - текстовое поле, которое можно менять). Как это сделать я вообще понятия не имею. Чисто кодом написал, но вот как сделать изменения имени через переключатели... а в особенности через текстовое поле... помогите плиз
у тебя как-то не в той последовательности получилось изучать стек. ты можешь что-то наваять на пхп, но совершенно не знаешь хтмл, хотя по сути результатом работы пхп в 99% случаев является именно хтмл. давай для начала ты просто сверстаешь какую-нибудь форму, где у тебя есть контроллер выбора файла и радиокнопки переключения формата имени. код в студию. --- Добавлено --- Ладно, с хтмл я погорячился. Но все равно давай от простого к сложному реши свою задачу. Уношу в "новички" ибо "профи" тут не пахнет. --- Добавлено --- Судя по регулярном DZ-число - это какие-то домашние задания. Почему ты не задашь все свои вопросы своим учителям?
Форму и выбор файла можно увидеть в коде выше, а как сделать радиокнопки переключения формата имени - это и был мой основной вопрос, так что мне совершенно не понятно, как я должен это сделать. И да, насчёт "совершенно не знаешь хтмл" - это, на мой взгляд, совершенно необоснованная критика. И как можно по какой-то захудалой форме судить о знаниях html мне тоже не понятно.
Ты читать не умеешь? Я уже выше сказал, что про хтмл погорячился. И читать ты похоже не умеешь. От тебя попросили простую форму. Приходится учить тебя вместо тех ребят которые тебе домашние задания задают. Поменьше спорь.
HTML: <form method="post" name="form1" action="send.php" enctype="multipart/form-data"> <p>Ваше имя:</p> <p><input type="text" name="name" required></p> <p>Ваш емейл:</p> <p><input type="text" name="email" required></p> <p>Ваш телефон:</p> <p><input type="text" name="phone"></p> <p>Сообщение:</p> <p><textarea name="text" required></textarea></p> <p>Доп. информация:</p> <input type="file" name="filename"><br> <input type="submit" value="Загрузить"><br> </form>
Отлично. Теперь напиши "обработчик" этой формы, который выведет значения всех переданных в _POST полей.
PHP: $name = $_POST['name']; echo $name; $email = $_POST['email']; echo $email; $phone = $_POST['phone']; echo $phone; $text = $_POST['text']; echo $text; $filename = $_POST['filename']; echo $filename; --- Добавлено --- PHP: $name = $_POST['name']; echo $name; $email = $_POST['email']; echo $email; $phone = $_POST['phone']; echo $phone; $text = $_POST['text']; echo $text; $filename = $_POST['filename']; echo $filename;
PHP: $name = $_POST['name']; echo $name; $email = $_POST['email']; echo $email; $phone = $_POST['phone']; echo $phone; $text = $_POST['text']; echo $text; $filename = $_FILES['userfile']['name']; echo $filename;
@DimaP, у тебя поле типа file имеет другое имя, не userfile, поэтому и ключ в массиве другой будет. Осталось теперь посмотреть в руководстве по HTML, как делаются элементы <input> типа "переключатель"
теперь объедини этот "обработчик" с самой формой, чтоб они оказались в одном файле, но "обработчик" срабатывал только когда отправлена форма.
PHP: <!DOCTYPE HTML> <html> <head> <meta charset=UTF-8> <title>proba</title> </head> <body> <form method="post" name="form1" enctype="multipart/form-data"> <p>Ваше имя:</p> <p><input type="text" name="name" required></p> <p>Ваш емейл:</p> <p><input type="text" name="email" required></p> <p>Ваш телефон:</p> <p><input type="text" name="phone"></p> <p>Сообщение:</p> <p><textarea name="text" required></textarea></p> <p>Доп. информация:</p> <input type="file" name="filename"><br> <input type="submit" value="Загрузить" name="submit"><br> </form> <?php if (isset($_POST['submit'])) { $name = $_POST['name']; echo $name; $email = $_POST['email']; echo $email; $phone = $_POST['phone']; echo $phone; $text = $_POST['text']; echo $text; $filename = $_FILES['filename']['name']; echo $filename; } ?> </body> </html> --- Добавлено --- [QUOTE=" --- Добавлено --- Судя по регулярном DZ-число - это какие-то домашние задания. Почему ты не задашь все свои вопросы своим учителям?[/QUOTE] Потому что учитель находится за 3000км. от меня, а мне дана куча дз на 2 недели, причём это дз мы даже примерно на уроке не разбирали.
Лучше проверять не наличие какого-то поля в посте, а текущий метод запроса. Теперь добавь в фору радио-контроллер с тремя значениями, а в обработчике - вывод выбранного значения.
Вывод выбранного значения так делать? Я знаю, что выбранное изначально - это checked, но как узнать, что именно выбрано - насчёт этого не знаю PHP: if ($_POST['radio']==="Вариант 1") { echo "<b>Вариант 1</b>"; } if ($_POST['radio']==="Вариант 2") { echo "<b>Вариант 2</b>"; } if ($_POST['radio']==="Вариант 3") { echo "<b>Вариант 3</b>"; }]
Ну да, верно. А ещё есть такая штука, как switch: https://secure.php.net/manual/ru/control-structures.switch.php
HTML: <!DOCTYPE HTML> <html> <head> <meta charset=UTF-8> <title>proba</title> </head> <body> <form method="post" name="form1" enctype="multipart/form-data"> <p>Ваше имя:</p> <p><input type="text" name="name" required></p> <p>Ваш емейл:</p> <p><input type="text" name="email" required></p> <p>Ваш телефон:</p> <p><input type="text" name="phone"></p> <p>Сообщение:</p> <p><textarea name="text" required></textarea></p> <p>Доп. информация:</p> <input type="file" name="filename"><br> <input type="submit" value="Загрузить" name="submit"><br> <p>Радио-контроллер</p> <p><input type="radio" name="radio">Вариант 1</p> <p><input type="radio" name="radio">Вариант 2</p> <p><input type="radio" name="radio">Вариант 3</p> </form> [php]<?php if (isset($_POST['submit'])) { $name = $_POST['name']; echo $name; $email = $_POST['email']; echo $email; $phone = $_POST['phone']; echo $phone; $text = $_POST['text']; echo $text; $filename = $_FILES['filename']['name']; echo $filename; } if ($_POST['radio']==="Вариант 1") { echo "<b>Вариант 1</b>"; } if ($_POST['radio']==="Вариант 2") { echo "<b>Вариант 2</b>"; } if ($_POST['radio']==="Вариант 3") { echo "<b>Вариант 3</b>"; } ?>[/php] </body> </html> --- Добавлено --- PHP: <!DOCTYPE HTML> <html> <head> <meta charset=UTF-8> <title>proba</title> </head> <body> <form method="post" name="form1" enctype="multipart/form-data"> <p>Ваше имя:</p> <p><input type="text" name="name" required></p> <p>Ваш емейл:</p> <p><input type="text" name="email" required></p> <p>Ваш телефон:</p> <p><input type="text" name="phone"></p> <p>Сообщение:</p> <p><textarea name="text" required></textarea></p> <p>Доп. информация:</p> <input type="file" name="filename"><br> <input type="submit" value="Загрузить" name="submit"><br> <p>Радио-контроллер</p> <p><input type="radio" name="radio">Вариант 1</p> <p><input type="radio" name="radio">Вариант 2</p> <p><input type="radio" name="radio">Вариант 3</p> </form> <?php if (isset($_POST['submit'])) { $name = $_POST['name']; echo $name; $email = $_POST['email']; echo $email; $phone = $_POST['phone']; echo $phone; $text = $_POST['text']; echo $text; $filename = $_FILES['filename']['name']; echo $filename; } if ($_POST['radio']==="Вариант 1") { echo "<b>Вариант 1</b>"; } if ($_POST['radio']==="Вариант 2") { echo "<b>Вариант 2</b>"; } if ($_POST['radio']==="Вариант 3") { echo "<b>Вариант 3</b>"; } ?> </body> </html>
Ты не передаешь никакого значения. Тот текст, который ты пишешь рядом с инпутом - просто инлайн текст. Можно было оформить его лейблом, тогда по клике на текст будет переставляться радиокнопка. Но мы сейчас не об этом. У твоих радио нет значения. Не имеет смысла ловить что-то обработчиком.
PHP: <!DOCTYPE HTML> <html> <head> <meta charset=UTF-8> <title>proba</title> </head> <body> <form method="post" name="form1" enctype="multipart/form-data"> <p>Ваше имя:</p> <p><input type="text" name="name" required></p> <p>Ваш емейл:</p> <p><input type="text" name="email" required></p> <p>Ваш телефон:</p> <p><input type="text" name="phone"></p> <p>Сообщение:</p> <p><textarea name="text" required></textarea></p> <p>Доп. информация:</p> <input type="file" name="filename"><br> <input type="submit" value="Загрузить" name="submit"><br> <p>Радио-контроллер</p> <p><input type="radio" name="radio">Вариант 1</p> <p><input type="radio" name="radio">Вариант 2</p> <p><input type="radio" name="radio">Вариант 3</p> </form> <?php if (isset($_POST['submit'])) { $name = $_POST['name']; echo $name; $email = $_POST['email']; echo $email; $phone = $_POST['phone']; echo $phone; $text = $_POST['text']; echo $text; $filename = $_FILES['filename']['name']; echo $filename; if ($_POST['radio']==="Вариант 1") { echo "<b>Вариант 1</b>"; } if ($_POST['radio']==="Вариант 2") { echo "<b>Вариант 2</b>"; } if ($_POST['radio']==="Вариант 3") { echo "<b>Вариант 3</b>"; } } ?> </body> </html>
PHP: <!DOCTYPE HTML> <html> <head> <meta charset=UTF-8> <title>proba</title> </head> <body> <form method="post" name="form1" enctype="multipart/form-data"> <p>Ваше имя:</p> <p><input type="text" name="name" required></p> <p>Ваш емейл:</p> <p><input type="text" name="email" required></p> <p>Ваш телефон:</p> <p><input type="text" name="phone"></p> <p>Сообщение:</p> <p><textarea name="text" required></textarea></p> <p>Доп. информация:</p> <input type="file" name="filename"><br> <input type="submit" value="Загрузить" name="submit"><br> <p>Радио-контроллер</p> <p><input type="radio" name="radio" value="Вариант 1">Вариант 1</p> <p><input type="radio" name="radio" value="Вариант 2">Вариант 2</p> <p><input type="radio" name="radio" value="Вариант 3">Вариант 3</p> </form> <?php if (isset($_POST['submit'])) { $name = $_POST['name']; echo $name; $email = $_POST['email']; echo $email; $phone = $_POST['phone']; echo $phone; $text = $_POST['text']; echo $text; $filename = $_FILES['filename']['name']; echo $filename; if ($_POST['radio']==="Вариант 1") { echo "<b>Вариант 1</b>"; } if ($_POST['radio']==="Вариант 2") { echo "<b>Вариант 2</b>"; } if ($_POST['radio']==="Вариант 3") { echo "<b>Вариант 3</b>"; } } ?> </body> </html>
Не хочешь какой-нибудь из вариантов сделать активным по умолчанию? И примени дельный совет господина @mkramer относительно switch.