Не сложный скрипт на php, но работает не корректно

Тема в разделе "PHP программирование", создана пользователем Guest, 27 дек 2003.

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

    Guest Гость

    Насколько я понимаю результат должен появлятся в новом окне. На практике, внизу текущего окна появляется строка "Результат Вашего действия равен" и всё. У меня почему-то такое ощущение, что при выполнения скритпа, функция calc() не отрбатывается вообще.
    Вот листинг.
    Код (Text):
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <title>Calculator</title>
    </head>
    <body>
    <?
     function show()
      {
      global $action;
      ?>
     <FORM metod=Get action="calc.php" target "_blank">
     Первое число
     <input type="text" name="first">
     Второе число
    <input type="text" name="second">
    <select size="1" name="action">
     <option value="sum">Сложить</option>
     <option value="min">Вычесть</option>
     <option value="mult">Умножить </option>
     <option value="dev">Разделить</option>
     <option value="stepen">Возвести в степень</option>
     <option value="procent">Процент от числа</option>
     <option value="koren">Корень</option>
    </select>
    <br><input type="submit" value="Выполнить">
    </form>
    <?
    }    
    function calc()
    {
    global $action, $result, $first, $second;
    switch($action)
    {
     case "sum": $result = $first+$second; break;
     case "min": $result = $first-$second; break;
     case "mult": $result = $first*$second; break;
     case "dev":
     if (!$second)      
     {
      exit("Неверное значение второго аргумента");
     }
     $result=$first/$second; break;
     case "procent": $result = $first*($second/100); break;
     case "stepen": $result = pow($first, $second); break;
     case "koren": $result = pow($first,0.5); break;
    }
    ?>
    Результат Вашего действия равен <b>
    <? echo $result; ?>
    </b>
    <?
    }          

    if ($action) calc(); else show();
    ?>
    </body>
    </html>
    Не работает.
     
  2. Belfisher

    Belfisher Гость

    Вот так попробуй написать :)
    Код (Text):
    if (isset($action)) {
    calc();
    }
    else {
    show();
    }
     
  3. impullz

    impullz Гость

    а еще пхп могет ругаться на сокращенную запись открывающего тега....
    проверь настройки сервера, если все-таки решил использовать их..
     
  4. impullz

    impullz Гость

    Belfisher прав не спорю....
    но ты знаешь у меня твой код ваще отказался работать ссылаясь на:


    Notice: Undefined variable: result in x:\home\localhost\www\theone.php on line 21
    на имена файлов и номера строк не обращай внимания...просто переменная не определена...
     
  5. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    Guest
    сли у тебя register_globals =off то у тебя $action пустая.


    надо писать везде так: $_GET['action']
    например:
    if ($_GET['action']) calc(); else show();

    тоже самое с другими переменными


    PS: если данные будешь POSTом передавать, то : $_POST['action']

    и проверь в php.ini
    Код (Text):
    ; Allow the <? tag. Otherwise, only <?php and <script> tags are recognized.
    short_open_tag = On
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей