рассчитать значение выбранных флажков - PullRequest
0 голосов
/ 05 октября 2011

У меня есть страница PHP, отображающая результаты запроса MySQL. Это добавляет флажки для каждой строки. Выбранные строки затем вставляются в другую таблицу при отправке.

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

Может кто-нибудь подсказать мне, как добавить эту функцию на мою существующую страницу.

Мой код в настоящее время показан ниже:

<?php
    mysql_connect("localhost", "username", "password")or die("cannot connect");    
    mysql_select_db("databasename")or die("cannot select DB");
    $sql="SELECT `crtd dept`,`customer`,`case no`,`gross mass` from despgoods_alldetails where transporttypename= 'localpmb'";
    $result=mysql_query($sql);
    $count=mysql_num_rows($result);
?>
<table border=1>
    <tr>
        <td>
            <form name="form1" method="post">
                <table>
                    <tr>
                        <td>#</td>
                        <td>Dispatch Area</td>                      
                        <td>Customer</td>  
                        <td>Case Number</td>
                        <td>Weight</td> 
                    </tr>
<?php
    while($rows=mysql_fetch_array($result)){
?>
                    <tr>
                        <td><input type="checkbox" name=check[]  value="<?php echo $rows['case no']; ?>"></td>
                        <td><?php echo $rows['crtd dept']; ?></td>
                        <td><?php echo $rows['customer']; ?></td>
                        <td><?php echo $rows['case no']; ?></td>
                        <td><?php echo $rows['gross mass']; ?></td>
                    </tr>                                   

<?php
    }
?>
                    <tr>
                        <td colspan=3><input name="Next" type="submit" id="Next" value="Next"></td>
                    </tr>
                    <?php



                            $check=$_POST['check'];

                        if($_REQUEST['Next']=='Next'){
 {
                            $sql="INSERT INTO loaddetails (dispatcharea,Customer, casenumber, weight,LOCStatus) 
                            SELECT `crtd dept`,Customer,`case no`,`gross mass`,'in Load Creation'
                            FROM despgoods_alldetails WHERE `Case No` = '$val'";

                            foreach($check as $key=>$value)
                            {
                            $sql="INSERT INTO loaddetails (dispatcharea,Customer, casenumber, weight,LOCStatus)
                            SELECT `crtd dept`,Customer,`case no`,`gross mass`,'in Load Creation'
                            FROM despgoods_alldetails WHERE `Case No` = '$value'";
                            $final=mysql_query($sql);
                            if($final)
                            {
                            echo "<meta http-equiv=\"refresh\" content=\"0;URL=planlocalpmbstep2.php\">";
                            }                                            } 
                                }
                                }
                    // Check if delete button active, start this



// if successful redirect to php.php

mysql_close();
?>
</table>
</form>
</td>
</tr>
</table>

Вывод вышеуказанного кода показан ниже: enter image description here

Ответы [ 4 ]

0 голосов
/ 05 октября 2011

Как уже говорили другие, вам придется делать это в Javascript, так как это будет на стороне клиента.Я предполагаю, что вы не используете библиотеку, такую ​​как jQuery или Prototype, на этой странице, и если это все, что вы делаете, было бы огромным излишним использовать одну из них.

Сначаладобавьте HTML-элемент, который будет содержать вашу общую сумму:

<div>Total: <span id="total">0</span></div>

Бит информации, который вам действительно нужно знать, - это вес, соответствующий каждому флажку.Простейшим способом было бы сохранить его на самом элементе флажка.Добавьте атрибут с именем data-weight.Например:

<input type="checkbox" name="check[]" value="12" data-weight="1234" />

Затем добавьте javascript:

<script>
    (function () {
        var totalEl = document.getElementById('total'),
            total = 0,
            checkboxes = document.form1['check[]'],
            handleClick = function () {
                total += parseInt(this['data-weight'], 10) * (this.checked ? 1 : -1);
                totalEl.innerHTML = total;
            },
            i, l
        ;
        for (i = 0, l = checkboxes.length; i < l; ++i) {
            checkboxes[i].onclick = handleClick;
        }
    }());
</script>

Ааа, и вот рабочая демоверсия для вас!http://jsbin.com/ipeduf

0 голосов
/ 05 октября 2011

Я думаю, что вы можете использовать функцию JavaScript.Добавьте атрибут onClick для каждого флажка (если вы не хотите кнопку отправки):

<INPUT TYPE="checkbox" NAME="switchBox" onclick="myfunction(this)">

Тогда myfunction должна вычислить значение следующим образом:

<script language="javascript">
var total; 
myfunction(checkboxId){
total = total + checkboxId.value;
}
</script>

Обратите вниманиечто это непроверенный пример, только чтобы дать вам представление о решении.

0 голосов
/ 05 октября 2011

Чтобы избежать необходимости отправлять и обновлять страницу с изменениями, я бы использовал javascript / jQuery.

Что бы я сделал:

  1. присоединить все отдельные значения weight к строкам таблицы (или флажкам ...), используя атрибут данных html5: <tr data-weight="1604"> для первой строки;
  2. при изменении значения флажка, переберите все строки, у которых установлен флажок, чтобы получить и сгенерировать вашу сумму. Это было бы что-то вроде:

    $ ( "вход"). Изменение (функция () { var total_sum = 0; . $ ( 'Вход') является ( ': проверено') каждый (функция () {. total_sum + = $ (this) .parents ("tr"). data ("weight"); }); });

    (не удается правильно отформатировать ...)

  3. отобразите сумму в нужной ячейке.

0 голосов
/ 05 октября 2011

Предполагая, что вам не нужно обновлять страницу каждый раз, когда пользователь меняет выбор, вы должны сделать это в браузере, в Javascript, а не в PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...