0

MySQL/php は初めてですが、xampp を使用して、台帳のように機能する単純な Web ページを作成しようとしています (アカウントの種類の取引を確認するなど)。したがって、新しいレコードを挿入するテーブルに、借方、利得、および残高の列 (およびその他の列) があります。

html

<form id='chk-trans-form' action="example-api.php" method="post">
Detail: <input type='text' name='trans-detail'/><br/>
Date: <input type='text' id='trans-dts'/><br/>
Amount: <input type='text' id='trans-amount'/>
Debit <input type='radio' name='trans-type-group' value='debit' checked/> Gain <input type='radio' name='trans-type-group' value='gain'/>
<button id='submit-trans'>submit</button>
</form>

データベース.php

<?php
   $conn = mysql_connect('localhost', 'root', '');
   $db   = mysql_select_db('financial');
?>

例-api.php

<?php
    include_once('database.php');

    $transDate = $_POST['trans-dts'];
    $transDetail = $_POST['trans-detail'];
  $transAmount = $_POST['trans-amount'];
  $transType = $_POST['trans-type-group'];

  if ($transType == 'debit')
  {
      if(mysql_query("INSERT INTO chktrans (chkDTS, chkDetail, chkDebit) VALUES ('$transDate','$transDetail', '$transAmount')"))
          echo "Successfully Added";
      else
          echo "Insertion Failed"; 
   } else {
    if(mysql_query("INSERT INTO chktrans (chkDTS, chkDetail, chkGain) VALUES ('$transDate','$transDetail', '$transAmount')"))
        echo $transType;
        else
            echo "Insertion Failed";    
   }
?>

これが私が学んだアプローチであり、テーブルにデータを取得するのにうまく機能しますが、それが最善のアプローチであるかどうかはわかりませんが、私が見つけたものだけです。

次の部分については少し確信が持てません....これはトランザクションのようなテーブルなので、Last Balance + (Debit + Gain) = new balance のようなものが必要です。したがって、これがphpで取得しようとするものなのか、mysqlで行うべきものなのかはわかりません....計算のようなフィールドアプローチのトリガーを見つけました(here)が、それがうまくいくかどうかはわかりません最後の値を取得する方法がわからないため、またはこれに対するトリガーを作成するのが最善の方法であるか、値を取得して php を使用して値を取得し、すべてを計算して送り返すのが最善の方法であるかどうかはわかりません。

いつものように、助けや指示をいただければ幸いです。

4

2 に答える 2

1

必要な列だけSELECTを変数に格納し、他の列を取得します。この場合、「chkGain」と借方の必需品を取得します。ステートメントの呼び出しが完了するまで、最後の残高は同じままです。

$currBalance = $currBalance + $debit + $gain;

方程式の「最終残高+(借方+利益)」では、括弧は必要ないことに注意してください。操作の順序、私の友人。

于 2013-03-24T01:09:06.770 に答える
1

次のようなSELECTを使用して残高を計算します

select (currBalance + debit + gain) total_balance from chktrans;

最後の行 (最後に挿入された行) を取得したい場合は、次のようにすることができます。

select * from chktrans where rowid in (select max(rowid) from chktrans);

それが役に立てば幸い。

于 2013-03-24T01:14:41.030 に答える