0

これで私を助けてくれることを願っています。

私はまだ PHP を学んでいて、ループを作ろうとして行き詰まっているので、Dreamweaver を使ってコードを書いています。

Course Provider's Table と Invoices Table があります。

私がやろうとしていること:

請求表でコース プロバイダー ID を確認してください - 存在する場合 - 前月の日付を確認します - 存在する場合 - 何も挿入しないでください。

コース提供者の ID と先月の日付を含むレコードがない場合は、レコードを挿入します。

ページを初めて更新したときに機能するコードは次のとおりですが、日付を先月の日付以外に変更して再度更新すると、レコードが既に存在していても追加され続けます。

私の乱雑なコードを許してください:

mysql_select_db($database_dbconnect, $dbconnect);
$query_rs_get_cps = "SELECT tl_course_providers.cp_id FROM tl_course_providers ";
$rs_get_cps = mysql_query($query_rs_get_cps, $dbconnect) or die(mysql_error());
$row_rs_get_cps = mysql_fetch_assoc($rs_get_cps);
$totalRows_rs_get_cps = mysql_num_rows($rs_get_cps);

$invoiceDate = date("Y-m-d",strtotime("-1 months"));
$dueDate = date("Y-m-d",strtotime("+1 months"));

do{
    $cpid = $row_rs_get_cps['cp_id'];

    $cpid_rs_get_invoices = "-1";
    if (isset($cpid)) {
      $cpid_rs_get_invoices = $cpid;
    }
    mysql_select_db($database_dbconnect, $dbconnect);
    $query_rs_get_invoices = sprintf("SELECT * FROM tl_invoices WHERE tl_invoices.fk_cp_id = %s", GetSQLValueString($cpid_rs_get_invoices, "int"));
    $rs_get_invoices = mysql_query($query_rs_get_invoices, $dbconnect) or die(mysql_error());
    $row_rs_get_invoices = mysql_fetch_assoc($rs_get_invoices);
    $totalRows_rs_get_invoices = mysql_num_rows($rs_get_invoices);

    if($row_rs_get_invoices['invoice_date'] != $invoiceDate)
    {
    // for testing
    echo "CP Table: ".$cpid."<br />";
    echo "Invoice Table: ".$row_rs_get_invoices['fk_cp_id']."<br />";

    $insertSQL = sprintf("INSERT INTO tl_invoices (fk_cp_id, invoice_date, due_date, total, invoice_status) VALUES (%s, %s, %s, %s, %s)",
                           GetSQLValueString($row_rs_get_cps['cp_id'], "int"),
                           GetSQLValueString($invoiceDate, "date"),
                           GetSQLValueString($dueDate, "date"),
                           GetSQLValueString('0', "text"),
                           GetSQLValueString('Due', "text")
                           );

    mysql_select_db($database_dbconnect, $dbconnect);
    $Result1 = mysql_query($insertSQL, $dbconnect) or die(mysql_error());
    }else{
    break;
    }

}while($row_rs_get_cps = mysql_fetch_assoc($rs_get_cps));
4

1 に答える 1

1

そのため、コースプロバイダー ID の先月のレコードが利用できない場合にのみ、レコードを挿入したいと考えています。

コース プロバイダーのすべての請求書を取得し、見つかった (請求書) レコードの 1 つだけを確認します。これが先月の日付と一致するかどうかはかなりランダムに思えます。

tl_invoices のクエリを変更し、探している日付に一致する行のみを取得します (レコードの日付を請求書の日付に一致させることで.

もう 1 つの方法は、見つかったすべての請求書レコードをループ処理し、前月の日付と一致するレコードがない場合にのみ、新しいレコードの挿入を続行することです。

それはあなたの問題を解決しますか?

于 2012-12-19T13:16:43.103 に答える