PHP+ форма + новое динамическое окно на JAVA

Тема в разделе "PHP", создана пользователем funman, 25 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. funman

    funman Постоялец

    Регистр.:
    28 дек 2007
    Сообщения:
    146
    Симпатии:
    25
    PHP+ форма + новое динамическое окно на JAVA
    --
    Задача, есть PHP файл с несколькими переменными , в нем же есть форма с несколькими полями в которые пользователь заполняет несколько текстовых полей, после нажатия на кнопку в форме, над данными нужно провести пару простых математических вычислений и через ф-цю javascript создать динамическое окошко...

    Застрял на моменте когда пользователь вводит данные, как их передать назад в PHP чтобы сделать обработку ...
    (тут только в голову приходит , что мне советовали рание по другому вопросу, это использовать AJAX,JsHttpRequest) как бы из этой формы передаем в другую PHP в которой делаем расчеты и возвращаем в первую...(Хотя может есть другой способ что бы не использовать второй скрипт - а все обработки делать в одном скрипте? и из него же создать динамическое окно с ответом.

    Но главная проблема все равно остаеться как полученные данные передать в яваскрипт, чтобы создать новое окно?

    Вобщем чтото я совсем запутался... В идеале это будет типо он-лайн калькулятор , на странице форма с несколькими полями, после ввода данных, данные обрабатываються и генериться новое окошко с ответом...

    может есть какие нибудь готовые примеры как сделать такую связку? или может ктото из форумчан может сделать простой пример? например форму с парой текстовых полей, данные из этих полей перемножаються друг на друга и выводиться на в динамическое окно.
     
  2. waldicom

    waldicom Создатель

    Регистр.:
    15 мар 2009
    Сообщения:
    41
    Симпатии:
    3
    Несовсем понятно, что и куда надо передавать?
    Переменные из пхп в яваскрипт? Или наоборот?
    Если первое, то можно писать например в скрытые поля и с помощью getElementById выьаскивать эти значения.
    Если из яваскрипт в пхп, то писать значения в поля и при перезагрузке скрипта они будут доступны через $_GET ($_POST).

    Или я все не так понял?
     
  3. funman

    funman Постоялец

    Регистр.:
    28 дек 2007
    Сообщения:
    146
    Симпатии:
    25
    Сделал просто передачу Post в другую PHP, в которой после обработки вывел данные на экран. Впринципе это решает частично мою задачу.

    С Ява так и не разобрался, как их связать вместе, как передавать туда переменные и обратно...
     
  4. kud

    kud Постоялец

    Регистр.:
    18 фев 2009
    Сообщения:
    89
    Симпатии:
    11
    А что за форма вообще ? )
    Может нет смысла использовать AJAX ? Если обычные вычисления то можно написать javascript функцию, которая будет делать эти вычисления ?
     
  5. funman

    funman Постоялец

    Регистр.:
    28 дек 2007
    Сообщения:
    146
    Симпатии:
    25
    можно примерчик?
    У меня просто данные для расчетов в массив из файла подгружаються
    но все равно интересно как к этому привязать явускрипт
     
  6. kud

    kud Постоялец

    Регистр.:
    18 фев 2009
    Сообщения:
    89
    Симпатии:
    11
    Пример нельзя, так как не ясно какие расчеты Вы собрались проводить и какие данные Вам нужны для расчетов. На самом деле, пример должны предоставить Вы, что-бы было понятно что нужно вычислить ...
    А данных для расчетов много, какого типа данные (пример, если можно) ? ) Почему в файле их храните ?

    Но вобще, если уж храните данные в файле или БД, то тогда используйте AJAX. Вкратце, с Ajax должно выглядеть так:
    HTML:
    
    <script type='text/javascript'>
    var xmlhttp;
    var reqTimeout;
    
    function loadPage(file) {
    	xmlhttp = null;
        if (window.XMLHttpRequest) {
            try {
                xmlhttp = new XMLHttpRequest();
            } catch (e){}
        } else if (window.ActiveXObject) {
            try {
                xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
            } catch (e){
                try {
                    xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
                } catch (e){}
            }
        }
    	
    	if (xmlhttp) {
            xmlhttp.onreadystatechange = processReqChange;
            xmlhttp.open("GET", file, true);
            xmlhttp.send(null);
            reqTimeout = setTimeout("xmlhttp.abort();", 5000);
        } else {
            alert("Браузер не поддерживает AJAX");
        }
    }
    
    function processReqChange() {
        
        if (xmlhttp.readyState == 4) {
            clearTimeout(reqTimeout);
      
            // only if "OK"
            if (xmlhttp.status == 200) {
                   // xmlhttp.responseText - это то что возвращает php файл (желательно что-б Вы уже сгенерировали html код который будете возвращать из php файла который получает данные)
                   showWindow(xmlhttp.responseText,800,600);
    
            } else {
                alert("Не удалось получить данные:\n" + xmlhttp.statusText);
            }
        } else {
    		// идет загрузка
    	}
    }
    // функция открывает новое окно в которое записавает data. Хотя, впринципе, можно и без Ajax обойтись, а указать что-б эта функция открывала php файл с GET параметрами, нужными для вычисления (window.open("script.php?value1=1&value2=2"...)
    function showWindow(data,winWidth,winHeight) {
    	var tp = Math.ceil((screen.height - winHeight) / 2);
        var lf = Math.ceil((screen.width - winWidth) / 2);
    	var win = window.open("", "new_window", "width=" + winWidth + ",height=" + winHeight + ",top=" + tp + ",left=" + lf);
    	win.document.write(data); 
    }
    
    </script>
    
    Вобщем, пример того что нужно вычислить и какие данные нужны для вычислений, тогда будет ясно как проще все сделать )
     
  7. Ratko

    Ratko Постоялец

    Регистр.:
    13 сен 2008
    Сообщения:
    92
    Симпатии:
    21
    Код:
    <?
    
    // Ваш код
     
    echo 'function Calculate () {
    var param1 = document.GetElementById("value1").value;
    var param2 = document.GetElementById("value2").value;
    var param3 = '.$val.';
    param1 = param1 + param2 + param3;
    param2 = '("newwin.php?param='+param1+',"Write_message", "directories=no,height=300,location=no,menubar=no,resizable=no,scrollbars=no, status=yes, toolbar=no,width=300");';
    
    window.open(param2);
    
    return param1;
    ';
    
    ?>
    
    <form action="#" method="POST">
    <input type="text" id="value1">
    <input type="text" id="value2">
    <input type="Button" OnClick="Calculate();">
    
    </form>
    
    При нажатии на кнопку в новое окошко передадутся вычесленные параметры. value1, value2 Вы вводите сами, $val читается из файла
     
  8. serge666

    serge666 Создатель

    Регистр.:
    20 мар 2009
    Сообщения:
    17
    Симпатии:
    1
  9. Ratko

    Ratko Постоялец

    Регистр.:
    13 сен 2008
    Сообщения:
    92
    Симпатии:
    21
    Код:
    
    <SCRIPT LANGUAGE="JavaScript"> 
    
    function calculator(form) {//Функция подсчета
    a = eval(form.a.value); //Присваем a значение из первого поля a
    b = eval(form.b.value)+a; //Присваем b значение из второго поля b и прибаляем к нему a
    c = b*5; //Присваем с значение и b (к которому мы уже прибавили a) и умножаем на 5
    form.total1.value = c; //выдаем результат
    }
    
    </SCRIPT>
    
    
    Код:
    <form> 
    <input type="text" name="a" size="15">
    <input type="text" name="b" size="15">
    <input type="text" name="total1" size="20" maxlength="40"> 
    <input type="button" value="Рассчитать" onClick="calculator(this.form)">
    </form>
    
     
    ram222 и serge666 нравится это.
  10. serge666

    serge666 Создатель

    Регистр.:
    20 мар 2009
    Сообщения:
    17
    Симпатии:
    1
Статус темы:
Закрыта.