Подсчет в форме и отправка данных, полученных после подсчета в mysql.

Собственно вот код , всё работает , но при открытии файла в базу уходят пустые поля , а потом уже правильные данные. Как исправить ?
И второй вопрос : в поле «умножить на» необходимо , чтобы можно было вставлять и десятичные числа (3.5) например, а в «Итоге» можно округлять .
Пример 10кг3.5= 35 , а не 30 или 40 , а если 1кг3.5 = 4 — это нормально.
toFixed(1) пробовал , но не получилось .

    <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>

<form action="#" method="post">
  <table width="100" height="46" border="1">
    <tr>
        <th scope="col">nomer AWB<input type='text' name='AWB'></th>
        <th scope="col">клиент<input type='text' name='client'></th>
        <th scope="col">email<input type='text' name='e_mail'></th>
        <th scope="col">дата приемки<input type='text' name='datatime'></th>
        <th scope="col">бирки с<input type='text' name='birki_s'></th>
        <th scope="col">бирки по<input type='text' name='birki_po'></th>
        <th scope="col">кол мест<input type='text' name='kol_mest'></th>
        <th scope="col">вес<input name="ves" id="ves" type="text" onChange="summ()"></th>
        <th scope="col">итого<input name="itogo" id="itogo" type="text"></th>
        <th scope="col">плюс<input name='plus' id="plus" type='text' onChange="summ()"></th>
        <th scope="col">всего<input name='vsego' id="vsego" type='text'></th>
        <th scope="col">умножить на<input name="umnozit_na" id="umnozit_na" type="text" onChange="summ()"></th>
        <th scope="col">примечание<input type='text' name='primechanie'></th>
    </tr>
  </table>
</form>

<script>
function summ() {
var value1 = parseInt(document.getElementById("ves").value);
var value2 = parseInt(document.getElementById("umnozit_na").value);
var value3 = parseInt(document.getElementById("plus").value); 
document.getElementById("itogo").value = value1 * value2;
document.getElementById("vsego").value = value1 * value2 + value3;
}
</script>

<form action='#' method='POST'>
 <?php
$host = "localhost";
$user = "root";
$password = "";
$db = "mydatabasaaccess";
if (!$conn = mysql_connect($host, $user, $password))
{
echo "<h2>MySQL Error!</h2>";
exit;
}
$AWB = $_POST['AWB'];
$client = $_POST['client'];
$e_mail= $_POST['e_mail']; 
$datatime= $_POST['datatime'];
$birki_s= $_POST['birki_s'];
$birki_po= $_POST['birki_po'];
$kol_mest= $_POST['kol_mest'];
$ves= $_POST['ves'];
$itogo= $_POST['itogo'];
$plus= $_POST['plus'];
$vsego= $_POST['vsego'];
$umnozit_na= $_POST['umnozit_na'];
$primechanie= $_POST['primechanie'];

mysql_select_db($db);

$result = mysql_query("INSERT INTO `mydatabasaaccess`.`otchet` (AWB, client, e_mail, datatime, birki_s, birki_po, kol_mest, ves, itogo, plus, vsego, umnozit_na, primechanie) VALUES('$AWB', '$client', '$e_mail', '$datatime', '$birki_s', '$birki_po', '$kol_mest', '$ves', '$itogo', '$plus', '$vsego','$umnozit_na', '$primechanie')");

if ($result=='true') 
{$result_add =1;}
else{$result_add =2;}

?>
<script>
function makeReset(){
fr = document.forms[0];

fr.submit();
fr.reset();
}
</script>

<input class=gbbutton type=button value="Занести в базу" onClick="makeReset()">
</body>
</html>

Для округления в PHP есть функции ceil() и floor(). Первая округляет дробь в большую сторону, а вторая — в меньшую.

при открытии файла в базу уходят пустые поля , а потом уже правильные данные. Как исправить?

У вас скрипт автоматически отправляет пустую форму сразу после загрузки страницы.

function makeReset(){
fr = document.forms[0];

fr.submit();
fr.reset();
}

Удалите строку fr.submit().

удалил — не помогло , все равно при открытии файла отправляет пустые данные ...

Удалил этот скрипт целиком , все равно добавляет при открытии файла пустые поля.

 function makeReset(){
    fr = document.forms[0];

    fr.submit();
    fr.reset();
 }

Проверяйте метод запроса при добавлении записи.

if (!empty($_POST)) {
    // Если форма была отправлена.

    $host = "localhost";
    $user = "root";
    $password = "";
    $db = "mydatabasaaccess";
    if (!$conn = mysql_connect($host, $user, $password))
    {
    echo "<h2>MySQL Error!</h2>";
    exit;
    }
    $AWB = $_POST['AWB'];
    $client = $_POST['client'];
    $e_mail= $_POST['e_mail']; 
    $datatime= $_POST['datatime'];
    $birki_s= $_POST['birki_s'];
    $birki_po= $_POST['birki_po'];
    $kol_mest= $_POST['kol_mest'];
    $ves= $_POST['ves'];
    $itogo= $_POST['itogo'];
    $plus= $_POST['plus'];
    $vsego= $_POST['vsego'];
    $umnozit_na= $_POST['umnozit_na'];
    $primechanie= $_POST['primechanie'];

    mysql_select_db($db);

    $result = mysql_query("INSERT INTO `mydatabasaaccess`.`otchet` (AWB, client, e_mail, datatime, birki_s, birki_po, kol_mest, ves, itogo, plus, vsego, umnozit_na, primechanie) VALUES('$AWB', '$client', '$e_mail', '$datatime', '$birki_s', '$birki_po', '$kol_mest', '$ves', '$itogo', '$plus', '$vsego','$umnozit_na', '$primechanie')");

}

А сейчас у вас первая запись в бд добавляется, когда вы открываете страницу в браузере. Вторая — при отправке формы.

Спасибо , с этим исправлением вроде работает !
А как сделать чтобы 3.5 тоже можно было записать в поле2 так , чтобы в поле3 при подсчете например 10*3.5 = 35 , а не 30 ?

function summ() {
var value1 = parseInt(document.getElementById("ves").value);
var value2 = parseInt(document.getElementById("umnozit_na").value.toFixed(1));
var value3 = parseInt(document.getElementById("plus").value); 
document.getElementById("itogo").value = (value1 * value2)\;
document.getElementById("vsego").value = value1 * value2 + value3;
}

Не правильно написал , вот так надо :
А как сделать чтобы 3.5 можно было записать в «umnozit_na» так ,
чтобы в поле «itogo» при подсчете, получалось например 10*3.5 = 35 , а не 30 ?
И соответственно в базу потом уходило 3.5 и результат 35 ?
toFixed вот в таком виде не работает ...

function summ() {
var value1 = parseInt(document.getElementById("ves").value);
var value2 = parseInt(document.getElementById("umnozit_na").value.toFixed(1));
var value3 = parseInt(document.getElementById("plus").value); 
document.getElementById("itogo").value = (value1 * value2)\;
document.getElementById("vsego").value = value1 * value2 + value3;
}

Используйте функцию parseFloat() в JavaScript.

var el = document.getElementById('umnozit_na'), value2;
if (el != null) {
    value2 = parseFloat(el.value); // Получите дробное значение
}

Этот код полностью рабочий .
Вопрос в том , как вывести внизу таблицы, получаемой ПОСЛЕ выборки,
итоговые суммы по столбцам 'kol_mest' , 'ves' , 'plus' , 'itogo' , 'vsego' ?
Понимаю что SELECT SUM ves , но не понимаю как и куда это воткнуть , а потом вывести под столбцами ?

   <?php
session_start();
if($_SESSION['admin'] == '2')
{
 } else { header("Location: http://xxxxxxxxxx/signin.php"); exit();
          } 
?>

<?php
$sql = mysql_connect('xxxxxxx', 'xxxxx', 'xxxxxx');
mysql_select_db('xxxxxx', $sql);
mysql_query('set character_set_client="utf8"');
mysql_query('set character_set_results="utf8"');
mysql_query('SET NAMES "utf8"');
if (empty($_POST)) {
    // Если страницу открыли не POST-ом,
    // перенаправляем на страницу с формой
    header('HTTP/1.1 301 Moved Permamently');
    header('Location: admin/poisk_a.php');
    exit();
}


$posted = null;
$text = null;

if (!empty($_POST['posted'])) {
    // Здесь будет храниться значение выбранного в форме варианта
    $posted = $_POST['posted'];
}

if (!empty($_POST['text'])) {
    $text = mysql_real_escape_string(trim($_POST['text']));
}

// Список вариантов для вывода
$rows = array();

if ($text) {
    // Формируем текст запроса к базе
    if ($posted === 'awb') {
        $query_string = "SELECT * FROM otchet WHERE `awb`='$text'";
    } else if ($posted === 'client') {
        $query_string = "SELECT * FROM otchet WHERE `client`='$text'";
    } else if ($posted === 'birki_s') {
        $query_string = "SELECT * FROM otchet WHERE `birki_s`='$text'";
    } else if ($posted === 'e_mail') {
        $query_string = "SELECT * FROM otchet WHERE `e_mail`='$text'";  
    } else if ($posted === 'datatime') {
        $query_string = "SELECT * FROM otchet WHERE `datatime`='$text'";    
    } else {
        echo 'Вы выбрали некорректное значение: ' . $posted;
        exit();
    }
    $db_result = mysql_query($query_string) or die(mysql_error());

    while ($row = mysql_fetch_assoc($db_result)) {
        $rows[] = $row;
    }
} else {
    echo "Введите текст поискового запроса";
    exit();
}

?><!doctype html>
     <html> 
     <head>
<title>submit_a</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<link rel="stylesheet" href="css/bootstrap.css">
<link rel="stylesheet" href="css/bootstrap-responsive.css">
<link rel="stylesheet" href="https://djyhxgczejc94.cloudfront.net/builds/7ef089af6b2dd1ce613b404cd25fc6abc163336c.css">
<link rel="stylesheet" href="css/divshot-util.css">
<link rel="stylesheet" href="css/divshot-canvas.css">
     </head>
<div class="navbar">
  <div class="navbar-inner">
    <div class="container-fluid">
      <a class="brand">xxxxxxx</a>
      <div class="navbar-content">
        <ul class="nav">
          <li class="active">
            <a href="http://xxxxxx">Домой</a> 
          </li>
          <li class="active">
            <a href="http://xxxxxxx/reg.php">Регистрация</a> 
          </li>
          <li class="active">
            <a href="http://xxxxxxxx/signin.php">Авторизация</a> 
          </li>
          <li class="active">
            <a href="mail_to:xxxxxxxx">Контакт с администрацией</a> 
          </li>
        </ul>
      </div>
    </div>
  </div>
</div>
<div class="container-fluid">
  <div class="row-fluid">
    <div class="span">
      <div>
        <h1 class="align-left">xxxxxxxxxx</h1>
        <p>xxxxxxxxxxxxxxxxxxxxx</p>
        <p class="lead text-error">xxxxxxxxxxxxxxxx</p>
      </div>
      <div class="row-fluid">
        <meta http-equiv="Content-Type" content="text/html; charset=utf8">
        <!-- Bootstrap -->
        <link href="css/bootstrap.min.css" rel="stylesheet" media="screen"> 
      </div>
      <meta http-equiv="Content-Type" content="text/html; charset=utf8">
      <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css">
      <div align="center"></div>
      <b class="align-center"></b>
      <h4>

      </h4>
      <div class="container-fluid">
        <div class="row-fluid">
          <div class="span">
            <div>
              <!-- Bootstrap -->
              <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
              <!-- Le styles -->
              <link href="bootstrap/css/bootstrap.css" rel="stylesheet">
              <link href="css/main.css" rel="stylesheet">
              <link href="bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
              <h5>

                <meta charset="utf8">
                <meta http-equiv="Content-Type" content="text/html; charset=utf8">
                <title>MySQL query example</title>
                <style>
</style>
                <table border="1" cellpadding="10">
                  <tbody>
                    <tr align="center">
                      <th>AWB</th>
                      <th>Клиент</th>
                      <th>e_mail</th>
                      <th>Дата приемки</th>
                      <th>Бирки с</th>
                      <th>Бирки по</th>
                      <th>Кол мест</th>
                      <th>Вес</th>
                      <th>Итого</th>
                      <th>Плюс</th>
                      <th>Всего</th>
                      <th>Умножить на</th>
                      <th>Примечание</th>
                    </tr>
                    <?php foreach ($rows as $row): ?>

            <tr>
                <td><?php echo $row['awb']?></td>
                <td><?php echo $row['client']?></td>
                <td><?php echo $row['e_mail']?></td>
                <td><?php echo $row['datatime']?></td>
                <td><?php echo $row['birki_s']?></td>
                <td><?php echo $row['birki_po']?></td>
                <td><?php echo $row['kol_mest']?></td>
                <td><?php echo $row['ves']?></td>
                <td><?php echo $row['itogo']?></td>
                <td><?php echo $row['plus']?></td>
                <td><?php echo $row['vsego']?></td>
                <td><?php echo $row['umnozit_na']?></td>
                <td><?php echo $row['primechanie']?></td>
            </tr>

            <?php endforeach ?>
                  </tbody>
                </table>
              </h5>
              <h2></h2>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
</body>

</html>

Код не проверял на живой базе, могут быть опечатки.

$query_string = "SELECT *, SUM(kol_mest) FROM otchet WHERE `awb`='$text' GROUP BY `kol_mest`";
$dbResult = mysql_query($query_string) || die(mysql_error());

if (mysql_num_rows($dbResult)) {

    $firstRow = mysql_fetch_assoc($dbResult);

    // Здесь будет выведена сумма выбранных столбцов
    echo $row['SUM(kol_mest)'];
}

Можно воспользоваться оператором AS, чтобы изменить название индекса ассоциативного массива:

$query_string = "SELECT *, SUM(kol_mest) as sumKolMest FROM otchet WHERE `awb`='$text' GROUP BY kol_mest";
$dbResult = mysql_query($query_string) || die(mysql_error());

if (mysql_num_rows($dbResult)) {

    $firstRow = mysql_fetch_assoc($dbResult);

    // Поменяли индекс посредством "AS"
    echo $row['sumKolMest'];
}

во втором варианте ругается на это
if (mysql_num_rows($dbResult)) {

пишет Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in

убрал || , поставил вместо них or — ошибка ушла , но и подсчет суммы не появился :(

вернее появился , но неизвестно что считает :)

может я не туда вставляю :) — ну никак не хочет писать правильную сумму внизу таблицы.
вот код.

<?php
session_start();
if($_SESSION['admin'] == '2')
{
 } else { header("Location: http://xxxxxxx/signin.php"); exit();
          } 
?> 

<?php
$sql = mysql_connect('xxxxxxxxx', 'xxxxxxx', 'xxxxxx');
mysql_select_db('xxxxxx', $sql);
mysql_query('set character_set_client="utf8"');
mysql_query('set character_set_results="utf8"');
mysql_query('SET NAMES "utf8"');
if (empty($_POST)) {
    // Если страницу открыли не POST-ом,
    // перенаправляем на страницу с формой
    header('HTTP/1.1 301 Moved Permamently');
    header('Location: admin/poisk_a.php');
    exit();
}


$posted = null;
$text = null;

if (!empty($_POST['posted'])) {
    // Здесь будет храниться значение выбранного в форме варианта
    $posted = $_POST['posted'];
}

if (!empty($_POST['text'])) {
    $text = mysql_real_escape_string(trim($_POST['text']));
}

// Список вариантов для вывода
$rows = array();

if ($text) {
    // Формируем текст запроса к базе
    if ($posted === 'awb') {
        $query_string = "SELECT * FROM otchet WHERE `awb`='$text'";
    } else if ($posted === 'client') {
        $query_string = "SELECT * FROM otchet WHERE `client`='$text'";
    } else if ($posted === 'birki_s') {
        $query_string = "SELECT * FROM otchet WHERE `birki_s`='$text'";
    } else if ($posted === 'e_mail') {
        $query_string = "SELECT * FROM otchet WHERE `e_mail`='$text'";  
    } else if ($posted === 'datatime') {
        $query_string = "SELECT * FROM otchet WHERE `datatime`='$text'";    
    } else {
        echo 'Вы выбрали некорректное значение: ' . $posted;
        exit();
    }

    $query_string = "SELECT *, SUM(kol_mest) as sumKolMest FROM otchet WHERE `awb`='$text' GROUP BY kol_mest";
$dbResult = mysql_query($query_string) or die(mysql_error());

if (mysql_num_rows($dbResult)) {

    $firstRow = mysql_fetch_assoc($dbResult);

    // Поменяли индекс посредством "AS"
    echo $row['sumKolMest'];
}


    $db_result = mysql_query($query_string) or die(mysql_error());

    while ($row = mysql_fetch_assoc($db_result)) {
        $rows[] = $row;
    }
} else {
    echo "Введите текст поискового запроса";
    exit();
}



?><!doctype html>
     <html> 
     <head>
<title>submit_a</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<link rel="stylesheet" href="css/bootstrap.css">
<link rel="stylesheet" href="css/bootstrap-responsive.css">
<link rel="stylesheet" href="https://djyhxgczejc94.cloudfront.net/builds/7ef089af6b2dd1ce613b404cd25fc6abc163336c.css">
<link rel="stylesheet" href="css/divshot-util.css">
<link rel="stylesheet" href="css/divshot-canvas.css">
     </head>
<div class="navbar">
  <div class="navbar-inner">
    <div class="container-fluid">
      <a class="brand">xxxxx</a>
      <div class="navbar-content">
        <ul class="nav">
          <li class="active">
            <a href="http://xxxxxx">Домой</a> 
          </li>
          <li class="active">
            <a href="http://xxxxxx/reg.php">Регистрация</a> 
          </li>
          <li class="active">
            <a href="http://xxxxxxx/signin.php">Авторизация</a> 
          </li>
          <li class="active">
            <a href="mail_to:xxxxxxxxx">Контакт с администрацией</a> 
          </li>
        </ul>
      </div>
    </div>
  </div>
</div>
<div class="container-fluid">
  <div class="row-fluid">
    <div class="span">
      <div>
        <h1 class="align-left">xxxxxxxxxx</h1>
        <p>xxxxxxxx</p>
        <p class="lead text-error">Страница Админа.</p>
      </div>
      <div class="row-fluid">
        <meta http-equiv="Content-Type" content="text/html; charset=utf8">
        <!-- Bootstrap -->
        <link href="css/bootstrap.min.css" rel="stylesheet" media="screen"> 
      </div>
      <meta http-equiv="Content-Type" content="text/html; charset=utf8">
      <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css">
      <div align="center"></div>
      <b class="align-center"></b>
      <h4>
        <a class="btn btn-primary btn-mini" href="http://xxxxxxx">Вернуться домой</a>
        <a class="btn btn-primary btn-mini" href="form_rab.php">Форма ввода данных</a>
        <a class="btn btn-primary btn-mini" href="poisk_a.php">Поиск по базе</a>
        <a class="btn btn-primary btn-mini" href="#">Отправить e_mail клиенту</a>
        <a class="btn btn-primary btn-mini" href="#">Рассылка всем клиентам</a>
        <a class="btn btn-primary btn-mini" href="http://xxxxxx">Вернуться домой</a>
        <a class="btn btn-primary btn-mini" href="http://xxxxxx">Вернуться домой</a> 
      </h4>
      <div class="container-fluid">
        <div class="row-fluid">
          <div class="span">
            <div>
              <!-- Bootstrap -->
              <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
              <!-- Le styles -->
              <link href="bootstrap/css/bootstrap.css" rel="stylesheet">
              <link href="css/main.css" rel="stylesheet">
              <link href="bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
              <h5>

                <meta charset="utf8">
                <meta http-equiv="Content-Type" content="text/html; charset=utf8">
                <title>MySQL query example</title>
                <style>
</style>
                <table border="1" cellpadding="10">
                  <tbody>
                    <tr align="center">
                      <th>AWB</th>
                      <th>Клиент</th>
                      <th>e_mail</th>
                      <th>Дата приемки</th>
                      <th>Бирки с</th>
                      <th>Бирки по</th>
                      <th>Кол мест</th>
                      <th>Вес</th>
                      <th>Итого</th>
                      <th>Плюс</th>
                      <th>Всего</th>
                      <th>Умножить на</th>
                      <th>Примечание</th>
                      <th>Сумма кол мест</th>
                    </tr>
                    <?php foreach ($rows as $row): ?>

            <tr>
                <td><?php echo $row['awb']?></td>
                <td><?php echo $row['client']?></td>
                <td><?php echo $row['e_mail']?></td>
                <td><?php echo $row['datatime']?></td>
                <td><?php echo $row['birki_s']?></td>
                <td><?php echo $row['birki_po']?></td>
                <td><?php echo $row['kol_mest']?></td>
                <td><?php echo $row['ves']?></td>
                <td><?php echo $row['itogo']?></td>
                <td><?php echo $row['plus']?></td>
                <td><?php echo $row['vsego']?></td>
                <td><?php echo $row['umnozit_na']?></td>
                <td><?php echo $row['primechanie']?></td>
                <td><?php echo $row['sumKolMest']?></td>
            </tr>

            <?php endforeach ?>
                  </tbody>
                </table>
              </h5>
              <h2></h2>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
</body>

</html>

не знаю почему код раскидался... — сорри.

Никак не хочет считать ...

ТС, я в SQL-запросах не силен, но могу подсказать, как сделать это на php.

$query_string = "SELECT * FROM otchet WHERE `awb`='$text'";
$dbResult = mysql_query($query_string) or die(mysql_error());

$kol_mest = 0;

while ($row = mysql_fetch_assoc($dbResult)) {
    $rows[] = $row;
    $kol_mest += $row['kol_mest'];
}

// Здесь будет сумма полей `kol_mest` для всех выбранных записей.
echo $kol_mest;

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.