2016-02-03 5 views
1

Я ищу, чтобы создать цикл для загрузки нескольких документов (точнее, 49 !!!). Я совершенно новичок в циклах, поэтому любое направление или помощь были бы замечательными. Вот мой текущий код:Создать цикл для загруженного документа в PHP

$folder="uploads/"; 

    if(isset($_FILES["t1url"])) { 
     $t1urlextension = end(explode(".", $_FILES["t1url"]["name"])); 
     $t1urlname = "M1s1t1url"; 
     $t1urldoc_loc = $_FILES['t1url']['tmp_name']; 
     move_uploaded_file($t1urldoc_loc,$folder.$t1urlname.".".$t1urlextension); 
    } 

    if(isset($_FILES["t2url"])) { 
     $t2urlextension = end(explode(".", $_FILES["t2url"]["name"])); 
     $t2urlname = "M1s1t2url"; 
     $t2urldoc_loc = $_FILES['t2url']['tmp_name']; 
     move_uploaded_file($t2urldoc_loc,$folder.$t2urlname.".".$t2urlextension); 
    } 

меня эта работа для этих 2, но мысль об изменении это снова и снова 49 раз кажется жестокая.

По существу есть 10 мест, которые нужно было бы увеличить на одну

if(isset($_FILES["t1url"])) { 

"t1url" до "t2url" до "t3url" и т.д.

$t1urlextension = 

"$ t1urlextension" до «$ t2urlextension»до "$ t3urlextension" на пр

end(explode(".", $_FILES["t1url"]["name"])); 

"t1url" до "t2url" до "t3url" до и т.д.

$t1urlname 

"$ t1urlname" на "$ t2urlname" до "$ t3urlname" до и т.д.

"M1s1t1url" 

"M1s1t1url" до "M1s1t2url" до "M1s1t3url" до и т.д.

$t1urldoc_loc 

"$ t1urldoc_loc" на "$ t2urldoc_loc" на "$ t3urldoc_loc" на пр

$_FILES['t1url']['tmp_name']; 

"t1url" до "t2url" в "t3url" до и т.д.

move_uploaded_file($t1urldoc_loc,$folder.$t1urlname.".".$t1urlextension); 

"$ t1urldoc_loc" до "$ t2urldoc_loc" на "$ t3urldoc_loc" на пр

"$ t1urlname" до «$ t2urlname»до "$ t3urlname" на пр

"$ t1urlextension" на "$ t2urlextension" на "$ t3urlextension" на пр

Спасибо за помощь заранее!

UPDATE

Вот решение, которое я смог придумать на основе ответа УЦС:

$url = array("t1url","t2url"); 
    $extension = array("t1ext","t2ext"); 
    // $name = array("t1name","t2name"); 
    $tab = array("M1s1t1url","M1s1t2url"); 
    $loc = array("t1loc","t2loc"); 
    $folder="Uploads/"; 
    $arrlength = count($url); 

    for($x = 0; $x < $arrlength; $x++) { 
     if(isset($_FILES[$url[$x]])) { 
      $extension[$x] = end(explode(".", $_FILES[$url[$x]]["name"])); 
      // $name[$x] = $tab[$x]; 
      $loc[$x] = $_FILES[$url[$x]]['tmp_name']; 
      move_uploaded_file($loc[$x],$folder.$tab[$x].".".$extension[$x]); 
     } 
    } 

работает отлично !!! Благодаря!

ОБНОВЛЕНИЕ

Я говорил в ближайшее время! Я могу заставить это работать на 4, но ничего более 4 не будет работать.Вот код, который работает:

$url = array(
     "t1url", 
     "t2url", 
     "t3url", 
     "t4url"); 
    $extension = array(
     "t1ext", 
     "t2ext", 
     "t3ext", 
     "t4ext"); 
    $tab = array(
     "M1s1t1url", 
     "M1s1t2url", 
     "M1s1t3url", 
     "M1s1t4url"); 
    $loc = array(
     "t1loc", 
     "t2loc", 
     "t3loc", 
     "t4loc"); 
    $folder="Uploads/"; 
    $arrlength = count($url); 

    for($x = 0; $x < $arrlength; $x++) { 
     if(isset($_FILES[$url[$x]])) { 
      $extension[$x] = end(explode(".", $_FILES[$url[$x]]["name"])); 
      $loc[$x] = $_FILES[$url[$x]]['tmp_name']; 
      move_uploaded_file($loc[$x],$folder.$tab[$x].".".$extension[$x]); 
     } 
    } 

В этом по каким-то причинам не работает:

$url = array(
     "t1url", 
     "t2url", 
     "t3url", 
     "t4url", 
     "t5url"); 
    $extension = array(
     "t1ext", 
     "t2ext", 
     "t3ext", 
     "t4ext", 
     "t5ext"); 
    $tab = array(
     "M1s1t1url", 
     "M1s1t2url", 
     "M1s1t3url", 
     "M1s1t4url", 
     "M1s1t5url"); 
    $loc = array(
     "t1loc", 
     "t2loc", 
     "t3loc", 
     "t4loc", 
     "t5loc"); 
    $folder="Uploads/"; 
    $arrlength = count($url); 

    for($x = 0; $x < $arrlength; $x++) { 
     if(isset($_FILES[$url[$x]])) { 
      $extension[$x] = end(explode(".", $_FILES[$url[$x]]["name"])); 
      $loc[$x] = $_FILES[$url[$x]]['tmp_name']; 
      move_uploaded_file($loc[$x],$folder.$tab[$x].".".$extension[$x]); 
     } 
    } 

Вот сообщение об ошибке я получаю в коде, который не работает:

I получите это 5 раз:

Строгие стандарты: только переменные должны передаваться по ссылке C: \ wamp2 \ www \ phpKiosk \ mc1.php на линии 535

Вот строка 535: ""

$ расширение [$ х] = конец (взрываются (, $ _FILES [$ URL [$ х]] ["имя"]));

Я получаю эту ошибку один раз:

Предупреждение: Не удается изменить информацию в заголовке - заголовки уже посланные (выход начался в C: \ wamp2 \ WWW \ phpKiosk \ mc1.php: 535) в C: \ wamp2 \ WWW \ phpKiosk \ mc1.php на линии 773

Вот строка 773:

заголовок («местоположение: http://localhost/phpkiosk/mc1.php»);

Любая помощь была бы замечательной. Я действительно новичок в этом, и я должен игнорировать что-то простое.

+1

Петли широко обсуждаемой темой в базовом программировании. Вам будет полезно читать книгу или проводить более самостоятельные исследования и задавать конкретные вопросы сообщества о проблемах, с которыми вы сталкиваетесь. Большинство из нас не здесь, чтобы писать программы для вас. – Litty

+0

@Litty мои извинения. Я не хотел обидеться. Я действительно новичок в программировании. Я не ищу руки. Вы бы порекомендовали книги? Я всегда стараюсь узнать больше. –

+1

Мы просто строги относительно содержания вопросов и ответов, не нужно беспокоиться! Ресурсы трудно найти, если вы не уверены в том, что ищете. Руководство PHP может быть вашим лучшим выбором прямо сейчас, особенно страницы структуры управления: http://php.net/manual/en/language.control-structures.php – Litty

ответ

1

Вы можете создать array и цикл над ним.

$array = array("file1,file2,file3,file4"); 

foreach($array as $item){ 
// your upload code 
} 

Но более удобный способ, чтобы загрузить файлы будут использовать glob как это.

$files = glob('upload/*'); // get all file names 
foreach($files as $file){ // iterate files 
    if(is_file($file)) 
    // your upload script 
} 

Update: на основе вашей проблемы я хотел бы попробовать использовать это:

$path = $_FILES[$url[$x]]["name"]; 
$extension[$x] = pathinfo($path, PATHINFO_EXTENSION); 

Вместо этого:

$extension[$x] = end(explode(".", $_FILES[$url[$x]]["name"])); 
+1

спасибо! Я обязательно рассмотрю эти два варианта и просмотрю ссылки, которые вы отправили. –

+0

Это прекрасно! Я обновил свой вопрос, чтобы включить мое решение! Благодаря!!! –

+0

Возможно, я слишком скоро говорил. Я предположил, что если 2 будет работать в цикле, то 49 не должно быть проблемой. По какой-то причине с кодом, который у меня есть в моем обновлении, показывая решение, оно не пройдет мимо 5. Я проверил синтаксис и проблем там нет. Я даже пропустил несколько после 5-го, чтобы узнать, есть ли проблема с 6-м или 7-м, и это не исправить. Есть ли у вас какие-либо идеи относительно того, почему это произойдет? Я могу опубликовать полный код, если это необходимо. –

Смежные вопросы