[PHP] Не считывается переменная

Discussion in 'PHP' started by Indev, 22 Jun 2012.

  1. Indev

    Indev New Member

    Joined:
    23 Dec 2011
    Messages:
    59
    Likes Received:
    3
    Reputations:
    0
    Здравствуйте! Проблема следующая есть код, в котором получается переменная filename и потом используется для открытия файла. Она работает в первом случае (echo $filename), но не работает во втором;
    PHP:
    $filename = ($_POST['select']); 
    $save = ($_POST['save']);

    echo 
    $filename//Первый случай;

    if ($save == 'true')
    {
    echo 
    $filename//Второй случай;

    $text = ($_POST['txt']);
    $descr fopen($filename'w');
    fwrite($descr$text);
    fclose($descr);

    $save 'false';
    }
    Что делать?
     
  2. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Во втором случае не работает потому, что не выполняется условие
    Создай дополнительное скрытое поле с именем save и значением true в форме, которая выполняет отправку файла.
     
  3. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Либо просто убери условие и скобки - выполнится.
     
  4. daniel777

    daniel777 Elder - Старейшина

    Joined:
    8 Jul 2010
    Messages:
    517
    Likes Received:
    90
    Reputations:
    37
    Если в условии if, TRUE ставить в кавычки - оно будет сравнивать как с словом.
    Поэтому нужно без кавычек, или даже так:
    PHP:
    if($save){}
    А в Вашем случае переменная $save будет в любом случае TRUE, поэтому используйте совет, который написал -=lebed=-.
     
  5. Indev

    Indev New Member

    Joined:
    23 Dec 2011
    Messages:
    59
    Likes Received:
    3
    Reputations:
    0
    Хаха. Это часть кода, условие выполняется выше, все действия выполняются кроме
    PHP:
    echo $filename//Второй случай; 
    П.С. со словом true и надо сравнивать...
     
  6. Exandr

    Exandr New Member

    Joined:
    21 Aug 2010
    Messages:
    97
    Likes Received:
    4
    Reputations:
    0
    Так не выполнилось условие, не выполнился этот код.
    Проверяй, что тебе передается в $_POST['save'].
     
  7. Indev

    Indev New Member

    Joined:
    23 Dec 2011
    Messages:
    59
    Likes Received:
    3
    Reputations:
    0
    Условие ВЫПОЛНИЛОСЬ!
    PHP:
    if ($save == 'true')
    {
    echo 
    $filename//Второй случай;

    $text = ($_POST['txt']);
    $descr fopen($filename'w');
    fwrite($descr$text);
    fclose($descr);

    $save 'false';
    }  
    Все остальные команды РАБОТАЮТ, кроме echo $filename;!
     
  8. buktor

    buktor New Member

    Joined:
    24 Jun 2012
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    Проверь есть ли у тебя такая переменная в коде вообще если есть то попробуй echo "$filename" если непомогло то попробуй поискать синтаксические ошибки в данной переменной - возможно она изза ошибки в какой то букве несовпадает с той переменной которой ты задал значение и неможет выполниться.
     
  9. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    и fopen($filename, 'w'); тоже работает?
     
  10. buktor

    buktor New Member

    Joined:
    24 Jun 2012
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    fopen являеться функцией которая открывает либо файл либо юрл поетому fopen($filename, 'w') должно работать если конечтно же значение переменной $filename существует

    Также советую прочитать информацию об этой функции на странице PHP вот юрл
    http://www.php.su/functions/?fopen
     
    #10 buktor, 25 Jun 2012
    Last edited: 25 Jun 2012
  11. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    var_dump перемнной этой зделай.
     
  12. Indev

    Indev New Member

    Joined:
    23 Dec 2011
    Messages:
    59
    Likes Received:
    3
    Reputations:
    0
    Итак, меня решительно никто не хочет понять =)
    PHP:
    $filename = ($_POST['select']); 
    $save = ($_POST['save']);

    var_dump($filename); //Первый случай (вывод 'string(5)');

    if ($save == 'true')
    {
    var_dump($filename); //Второй случай (вывод 'NULL');

    $text = ($_POST['txt']);
    $descr fopen($filename'w');
    fwrite($descr$text);
    fclose($descr);

    $save 'false';

    Есть код, в начале получается значение переменной filename, вар_дамп в первом случае выводит string(5), во втором NULL. Условие выполняется, но значение переменной сбрасывается, хотя между первым и вторым случаем ничего нет.
     
  13. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Значит во втором случае попросту не передаётся $_POST['select'], поэтому и NULL. Как передаёшь переменные то? (select и save).
     
  14. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Код формы покажите
     
  15. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Indev "первый случай" и "второй случай" происходят в одно обращение к скрипту, надеюсь? То есть вот прям на одной странице есть и string(5) и NULL? Простите не верю
     
    _________________________
  16. Indev

    Indev New Member

    Joined:
    23 Dec 2011
    Messages:
    59
    Likes Received:
    3
    Reputations:
    0
    Почти так. Save == 'True', выполняется, когда происходит нажатие кнопки 'Save file'
     
  17. Indev

    Indev New Member

    Joined:
    23 Dec 2011
    Messages:
    59
    Likes Received:
    3
    Reputations:
    0
    PHP:
    //HTML;
    <form method "post">
    <
    textarea name="txt" cols="130" rows="27">';
    </textarea>
    <button type = "sumbit" value="true" name="save">Save file</button>
    </form>
    -----------------------------
    Выше точно таким же образом легко выполняется код:
    PHP:
    //HTML;
    echo '<form method="post">
    <select name = "select" size=1>'
    ;
    //PHP;
    //Находим файловые пути, совпадающие с шаблоном;
    $f glob('*.*');
    //Перебор массива;
    foreach ($f as $fn)
    {
    if ((
    $fn != "indev.php") and ($fn != "action.php") and ($fn != "log.txt"))
    {
    //Выводим оставшиеся;
    echo '<option value = '.$fn.'>'.$fn.'</option>'
    }
    }
    //HTML;
    echo '<button name="submit" type=submit value="true">Open</button>
    </form>'
    ;
    //PHP;
    $submit = ($_POST['submit']); 
    if (
    $submit == 'true')
    {
    $filename = ($_POST['select']); 
    $descr fopen($filename'r');
    $text fread($descr,filesize($filename));
    fclose($descr);
    $sumbit 'false';
    }
     
    #17 Indev, 26 Jun 2012
    Last edited: 26 Jun 2012
  18. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    У вас две формы на одной странице? При нажатии разных сабмитов будет разный массив $_POST.
     
  19. banality

    banality New Member

    Joined:
    13 Aug 2011
    Messages:
    18
    Likes Received:
    3
    Reputations:
    0
    Или другими словами, что бы ТС наверника понял:
    Поменяй неймы кнопкам
     
  20. Indev

    Indev New Member

    Joined:
    23 Dec 2011
    Messages:
    59
    Likes Received:
    3
    Reputations:
    0
    Каким именно кнопкам?