Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как PHP-код написать внутри HTML-формы
 
 автор: gal0865   (18.08.2008 в 10:57)   письмо автору
 
 

Имеем HTML-форму:

<html>
<body>

<form action="price.php" method="post" enctype="multipart/form-data">
  <input type="file" name="filename"  size="10"><br>
  <input type="submit" value="Загрузить abd"><br>
</form>

</body>
</html>


и PHP код
<?php

if(copy($_FILES["filename"]["tmp_name"],"files/".$_FILES["filename"]["name"]))
  {
  echo(
"загружен");
  }
else
  {
  echo(
"Ошибка");
  }
  
?>

  Ответить  
 
 автор: ONYX   (18.08.2008 в 11:10)   письмо автору
 
   для: gal0865   (18.08.2008 в 10:57)
 

Мм не понятно как внутри? Вот так можно:

<html> 
<body> 

<form action="price.php" method="post" enctype="multipart/form-data"> 
  <input type="file" name="filename"  size="10"><br> 
  <input type="submit" value="Загрузить abd"><br> 
<?php 

if(copy($_FILES["filename"]["tmp_name"],"files/".$_FILES["filename"]["name"])) 
  { 
  echo(
"загружен"); 
  } 
else 
  { 
  echo(
"Ошибка"); 
  } 
  
?> 
</form> 

</body> 
</html> 

  Ответить  
 
 автор: sim5   (18.08.2008 в 11:12)   письмо автору
 
   для: ONYX   (18.08.2008 в 11:10)
 

Можно, но не нужно. Вы пытаетесь код обработчика получения файла (причем не самый лучший способ его) вставить в тело формы. Страшного ничего не произойдет, просто там ему совсем не место.

  Ответить  
 
 автор: gal0865   (18.08.2008 в 14:53)   письмо автору
 
   для: sim5   (18.08.2008 в 11:12)
 

<html>
<body>

<form action="PRICE.PHP" method="post" enctype="multipart/form-data">
<input type="file" name="filename" size="10"><br>
<input type="submit" value="Загрузить abd"><br>
<?php

if(copy($_FILES["filename"]["tmp_name"],"files/".$_FILES["filename"]["name"]))
{
echo("загружен");
}
else
{
echo("Ошибка");
}
?>
</form>

</body>
</html>
В этом примере есть ссылка на внешний php-код, а нужно, чтобы код находился в самой форме. Поэтому и прошу помочь расположить в самой форме. Я могу расположить его только в другой директории, а ссылка action="content/files/price.php]" не работает ,К тому же иногда удобней располагать маленький PHP код в форме.
А какой код получения Вы предлагаете?

  Ответить  
 
 автор: sim5   (18.08.2008 в 15:14)   письмо автору
 
   для: gal0865   (18.08.2008 в 14:53)
 

1 способ ) Назовите свой фал как price.php.
2 способ ) action="?" или action="" или action="$_SERVER['PHP_SELF']" и т.п..
Код обработчик формы уж никак не стоит помещать в нутри самого HTML-кода формы, я об этом говорил. Если ошибка, то нужно сообщать ошибку (вверху фомы, например), и выводить форму. Если не хотите багов при загрузке файлов, используйте лучше функции is_uploaded_file() и move_uploaded_file(), это я о втором.

  Ответить  
 
 автор: gal0865   (18.08.2008 в 16:44)   письмо автору
 
   для: sim5   (18.08.2008 в 15:14)
 

Не понял, если не внутри кода, то как вызвать в HTML-форме (index_price.html) модуль c PHP-кодом (price.php)находящимся в директории content/files/ . У меня он не выдает ошибок, просто файл не загружается.

  Ответить  
 
 автор: sim5   (18.08.2008 в 16:57)   письмо автору
 
   для: gal0865   (18.08.2008 в 16:44)
 

Что вы вкладываете в понятие "внутри кода"? Код в вашем случае, это вывод формы пользователю (HTML-часть), и проверка принятых от пользователя данных - если они отвечают вашим требованиям, то сохранить файл, нет - значит повторный вывод формы пользователю с соответсвующими сообщениями (РНР-часть). При этом, местоположение вывода формы и ее проверка относительно друг друга значения не имеет, просто структура вашего кода должна быть читаема и удобна для восприятия, вами же в первую очередь.
То что у вас не работает (не сохраняется файл), то это не от того, что вы вставили РНР-кусочек приведенного вами, в не то место в вашем коде, а в том, что у вас не верно код написан, если только то, что вы привели не весь код, и вы ожидаете чтобы он загрузил вам что-то.

  Ответить  
 
 автор: gal0865   (18.08.2008 в 17:38)   письмо автору
 
   для: sim5   (18.08.2008 в 16:57)
 

Если HTML-форма (price.html) и PHP-код (price.php) находятся в одной директории, то все работает нормально (см. в начало). Если я перемещаю (price.php) в другую директорию в данном случае это в content/files/ и прописываю <form action="content/files/price.php" method="post" enctype="multipart/form-data">, то файл не загружается. То-же самое при


<html>  
<body>  
<?php  

if(copy($_FILES["filename"]["tmp_name"]," content/files/".$_FILES["filename"]["name"]))  
  {  
  echo(
"Yes");  
  }  
else  
  {  
  echo(
"No");  
  }  
  
?>  
<form action="" method="post" enctype="multipart/form-data">  
  <input type="file" name="filename"  size="10"><br>  
  <input type="submit" value="Загрузить"><br>  
</form>  
</body>  
</html>

Возможно где-то и кроется ошибка, поэтому очень прошу Вас помочь. Мне это очень нужно
Здесь я привел весь код который иcпользовал.

  Ответить  
 
 автор: sim5   (18.08.2008 в 17:44)   письмо автору
 
   для: gal0865   (18.08.2008 в 17:38)
 

Ну у меня уже слов нет, честное слово. У вас обработчик загрузки это один файл скрипта, узнаете загружено или нет, это вообще price.html. Вы что издеваетесь и не можете нормальный код написать? Выбросите вы всю эту туфту, посмотрите в разделе, примеров загрузки файлов на сервер уйма, можете и в мануале по РНР глянуть, тоже есть. И почитайте, как сервер распоряжается с временными файлами загруженными в temp каталог.

  Ответить  
 
 автор: gal0865   (19.08.2008 в 08:48)   письмо автору
 
   для: sim5   (18.08.2008 в 17:44)
 

Тогда конкретно есть ли возможность вызвать php-модуль из ДРУГОЙ ДИРЕКТОРИИ.? в Web-странице? Да или Нет. Если Да то как, приведи пример. Если я вопрос задаю на форуме, значит, нигде больше не нашел. Удобство его расположения в данном случае неважно.

  Ответить  
 
 автор: ONYX   (19.08.2008 в 09:05)   письмо автору
 
   для: gal0865   (19.08.2008 в 08:48)
 

Конечно можно
<form action=""></form>
В пареметре action пишите путь до вашего файла и вызываете.

  Ответить  
 
 автор: sim5   (19.08.2008 в 09:07)   письмо автору
 
   для: gal0865   (19.08.2008 в 08:48)
 

Конечно можно, причем любым способом, либо непосредственно ссылкой, либо GET или POST запросом из формы. Ведь зачастую, результат работы РНР-скрипта, это и есть вывод пользователю. У вас проблема не в этом, а в том, что неверно построен код загрузки файла на сервер. Я вам говорил почитать, и если вы читали, то должны знать, что забота о переносе файла из временной директории лежит на вас. Если вы это не сделаете своевременно, то этот файл будет удален из временной директории.
Для того чтобы решить ваш вопрос достаточно всего одного файла срипта, а не так как вы это делаете. Если все это упростить (считая, что этот файл выводит полностью страницу) то примерно это так:
//тут чистый вывод HTML
<html>
<head>
</head>
<body>
<?
//а тут идет РНР код
//сразу проверяем, приходила ли форма от пользователя,
//то есть, была ли загрузка файла.
//здесь обязательно надо проверять, например,
//допустимый ли размер файла, допустимый ли тип его и прочее.
//если что-то не отвечает требованиям определенных вами,
//то в переменную ошибок записываем соответсвующие сообщения
//тоже самое и касается проверки - загружен вообще файл или нет
//и делать это надо функцией не copy, а:
if (move_uploaded_file(... )...)
//если нет ошибок и файл загружен,
//то либо делаем переход далее,
//либо производим иные действия,
//либо выводим опять ошибку, но о том, что фал не загружен
//А ТУТ проверяем -
//если еще форма не приходила, или были ошибки со стороны пользователя,
//то выводим форму либо через print, echo, либо HTML кодом
?>
</body>
</html>     

И все, и это будет одна страница, один код.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования