За последние 24 часа нас посетили 35237 программистов и 1742 робота. Сейчас ищут 1023 программиста ...

ээээ ... не работает :(

Тема в разделе "PHP для новичков", создана пользователем Svoronkov, 26 апр 2006.

Статус темы:
Закрыта.
  1. Svoronkov

    Svoronkov Активный пользователь

    С нами с:
    10 мар 2006
    Сообщения:
    88
    Симпатии:
    0
    Адрес:
    Москва
    Приветствую!
    Есть форма загрузки файлов на сайт.
    PHP:
    1.  
    2.  
    3. if(isset($_FILES['file']))
    4. {
    5.      if (move_uploaded_file($_FILES['file']['tmp_name'],"uploads/".$_FILES['file']['name']))
    6.             {
    7.                 echo "<span class=tablebody>upload ok</span><br>";
    8.                 //пишем в массив инфо о загруженных файлах
    9.                 $_SESSION['uploadfiles']['name'][]=$_FILES['file']['name'];
    10.                 $_SESSION['uploadfiles']['patch'][]="uploads/".$_FILES['file']['name'];
    11.                 $m=1;
    12.                 for ($i=0;$i<count($_SESSION['uploadfiles']['name']);$i++)
    13.                     {
    14.                        echo "<span class=grayhelp>$m</span><span class=tablebody>".$_SESSION['uploadfiles']['name'][$i]."</span><br>";
    15.                    $m++;
    16.                    }
    17.             }
    18.             else
    19.             {
    20.                echo" upload failed<br>";
    21.             }
    22.  echo<<<INFORM
    23. <span class=tablebody>Здесь вы можете загрузить свою аццкую {вырезано цензурой}</span><br>
    24. <form name=up method=POST ENCTYPE='multipart/form-data'>
    25. <input type=file name=file><input type=submit value="загрузить">
    26. </form>
    27. </td></tr></table>
    28. INFORM;
    29.  
    Проблема в следующем:
    1) эта фигня работает только в отдельном файле
    2) стоит мне ее оформить как функцию в скрипте - не работает
    т.е. файл находим, жмыкаем на загрузить - и все, видим опять форму :( а по идее должен строиться списочек загруженных файлов
    3) собссна а в чем дело?
    Спасибо за внимание.
     
  2. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    почитай ман по function() { операторы, тело функции }. Скорее всего ты забыл передать аргументы функции. Другими словами массив $_FILES['file']['name']; в функции не виден. Копай в эту сторону.
     
  3. Svoronkov

    Svoronkov Активный пользователь

    С нами с:
    10 мар 2006
    Сообщения:
    88
    Симпатии:
    0
    Адрес:
    Москва
    Hight
    Вообще-то $_FILES суперглобальный массив и виден везде....
    Или я ошибаюсь?
     
  4. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Svoronkov
    суперглобальный, не спорю ) но не работает же!

    так же любая переменная в функции имеет локальную область видимости. То-есть нюансов много!!!! Парочка на самом деле)))

    ты бы сюда код своей функции кинул.
     
  5. Svoronkov

    Svoronkov Активный пользователь

    С нами с:
    10 мар 2006
    Сообщения:
    88
    Симпатии:
    0
    Адрес:
    Москва
    Hight
    А собссна см. выше :) надо только добавить function upload() { и } в самом конце
     
  6. Belegnar

    Belegnar Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    299
    Симпатии:
    0
    RTFM HTML
    В теге <form> не хватает <form action="...">
     
  7. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    ну тогда понятно. читай ман , там написано как переменные функции по ссылке передавать и в функции делать их глобальными да и дело тут не в передаче переменный по ссылке. Тебе просто надо переменные в функцию передать! например вот так:

    function MOE (&$var1, &$var2)
    {
    тело функции
    }
     
  8. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    блин, ржунимагу )))
     
  9. Svoronkov

    Svoronkov Активный пользователь

    С нами с:
    10 мар 2006
    Сообщения:
    88
    Симпатии:
    0
    Адрес:
    Москва
    Hight
    А какие переменные мне надо передать в функцию? >:-()
    Если обратишь внимание - там два суперглобальных массива. Куда их передавать, если они суперглобальные и везде видны?
     
  10. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Если не ошибаюсь, то в теле функции виден только суперглобальный массив $GLOBALS[];

    а передать функции тебе надо те переменные которые ты в функции используешь. это же очевидно )
     
  11. Svoronkov

    Svoronkov Активный пользователь

    С нами с:
    10 мар 2006
    Сообщения:
    88
    Симпатии:
    0
    Адрес:
    Москва
    Дружище, ты ошибаешься :)
     
  12. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    :D вот косяк то )))) пойду лучше в кс по сетке порубаю )
     
  13. Svoronkov

    Svoronkov Активный пользователь

    С нами с:
    10 мар 2006
    Сообщения:
    88
    Симпатии:
    0
    Адрес:
    Москва
    тоже тема :)
     
  14. Svoronkov

    Svoronkov Активный пользователь

    С нами с:
    10 мар 2006
    Сообщения:
    88
    Симпатии:
    0
    Адрес:
    Москва
    всета-ки осмелюсь вернуться к теме файла....
    есть у кого-нибудь.... эээ.... мысли?
     
  15. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    спроси еще раз в новом топике.
     
Статус темы:
Закрыта.