Автоматическое вычисление с использованием значений AJAX, представленных в базе данных onchange - PullRequest
1 голос
/ 21 марта 2012

Я понятия не имею, как в основном использовать это.Я думаю об использовании массивов javascipt, хотя.

Ну, у меня есть опция выбора со значениями из базы данных, и выбор является динамическим.Кнопка «Добавить строку» добавит еще один ряд выбора опции:

<td>Items </td>
<td style="text-align:left;">
   <INPUT type="button" value="Add Row" onclick="addRow('dataTable')" />
   <INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" />

   <TABLE id="dataTable" width="350px" >
      <TR>
         <TD><INPUT type="checkbox" name="chk[]"/></TD>
         <TD>
            <select name="ItemNo[]" id="select" value="ItemNo" onChange="this.disabled=true;">  

            <?php 
               $sql2="select * from jewelry_system.item where NumStored !='0' order by ItemName asc"; 
               $result2 = mysql_query($sql2);
               while($row2=mysql_fetch_array($result2)){
            ?>

             <option value="<?php echo $row2['ItemNo']?>"> 
                <?php echo $row2['ItemName'];?>     
                Php:<?php echo $row2['SalePrice'];?> </option>
             <?php } ?>

             </select>
          </TD>
       </TR>
    </TABLE>
</td>
</tr>

Вот что должно быть изменено с помощью ajax?

<tr>
   <td>Total Payment (Php):</td>
   <td> <div id="tpayment">0.00</div> </td>
</tr>

Я хотел вычислить общую сумму платежа при изменении значениязначения в опции выбора.и так как значение может быть изменено только один раз, я должен использовать массивы?Я совершенно невежественен в ajax, пытался учиться в w3schools, но потерпел неудачу.

Пожалуйста, спасибо

1 Ответ

0 голосов
/ 21 марта 2012

Вам может не понадобиться AJAX, если вам не нужно что-то устанавливать в своей базе данных, прежде чем нажать какую-либо кнопку «отправить». Похоже, вы должны иметь возможность хранить всю информацию по вашему выбору, когда вы создаете свою страницу с помощью PHP. Вам нужно будет показать / скрыть ваши выборки в документе, используя JavaScript.

Добавьте ; updateTotal () к выбранному событию onChange:

<select name="ItemNo[]" id="select1" value="ItemNo" onChange="this.disabled=true;updateTotal()">

Затем добавьте эту функцию на свою страницу или в свой файл JavaScript:

<head>
    <script language="javascript" type="text/javascript">
        function updateTotal() {
            var dropdown = document.getElementById('select1');
            var total = 0;
            for (var i=0; i<dropdown.length; i++){
                if (dropdown.options[i].selected) {
                    total += dropdown.options[i].value;
                }
            }
            document.getElementById('tpayment').innerHTML = total;
        }
    </script>
</head>

Поскольку вы собираетесь добавлять / удалять строки, вам нужно будет отслеживать их, как вы упомянули с помощью массива - возможно, глобального.

в начале вашего javascript, объявите глобальный массив для хранения ваших данных, как это:

var selects = new Array();

Вы также хотите обновить ваши добавления / удаления звонков:

<INPUT type="button" value="Add Row" onclick="addRow('dataTable','select1')" />
<INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable','select1')" />

Затем, когда вы вызываете функцию addRow, сделайте следующее:

function addRow(rowname,selectname) {
    /* ... original function stuff ... */
    selects.push(selectname); /* this will add the selectname to the selects array */
}

И также, когда вы вызываете функцию removeRow, сделайте это:

function removeRow(rowname,selectname) {
    /* ... original function stuff ... */
    selects.splice(selects.indexOf(selectname),1);
    updateTotal(); /* since selected items might have been removed */
}

И, наконец, мы изменим нашу исходную функцию следующим образом:

function updateTotal() {
    var total = 0;
    for (var h=0; h<selects.length; h++) {
        var dropdown = document.getElementById(selects[h]);
        for (var i=0; i<dropdown.length; i++){
            if (dropdown.options[i].selected) {
                total += dropdown.options[i].value;
            }
        }
        document.getElementById('tpayment').innerHTML = total;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...