修正された問題:ブラウザがGETリクエストをキャッシュしています。jQueryにランダムな値を追加すると、問題が修正されます。例えば:
$.get(templateDir + "/inc/quote-update.php", { FlightID: FlightID, returnorigin: valuefrom, returndestination: valueto, returnpax: valuepax, returndate: valueret, "_": $.now()},
私はこれに対する解決策をどこでも探しましたが、それを見つけることができません。これが以前に投稿されたことがある場合は、お詫び申し上げます。
問題はこれです。ユーザーがWebサイトにアクセスすると、フライトを検索します。詳細はデータベースに保存されます。これは正常に機能します。
その後、ユーザーはフライトを変更して追加することができます。これは問題なく機能します-乗客数を除いて。
どういうわけか、乗客数フィールドの更新で奇妙なバグが発生しています。値を以前の値に変更しても、更新されません。以前に変更していない値に変更すると、正常に更新されます。
たとえば、ユーザーが最初に6人の乗客のフライトを検索した後、それを4人の乗客に変更した場合、6人の乗客に戻すことはできません。ただし、3、5、7などに変更することはできます。
これがphpmyadminのフィールドの設定方法です。
4 pax bigint(20) UNSIGNED No None
そしてこれは私のコードです:
<?php
$FlightID = isset($_GET["FlightID"]) ? $_GET['FlightID'] : null;
$db = new PDO('mysql:host=localhost;dbname=databasename', 'database-table', 'afgafha', array(PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
// Start a counter for errors
$error = 0;
if (!is_null($FlightID)) {
$stmt = $db->prepare("SELECT * FROM database-table WHERE FlightID = ?");
$stmt->execute(array($FlightID));
if ($stmt->rowCount() <= 0){
// Do Nothing //
} elseif ($stmt->rowCount() == 1){
$origin = isset($_GET['origin']) ? $_GET['origin'] : null;
$destination = isset($_GET['destination']) ? $_GET['destination'] : null;
$pax = isset($_GET['pax']) ? $_GET['pax'] : null;
$depdate = isset($_GET['depdate']) ? $_GET['depdate'] : null;
if (!is_null($origin) && !is_null($destination) && !is_null($pax) && !is_null($depdate)){
$data = array($origin, $destination, $depdate, $pax, $FlightID);
$stmt = $db->prepare("UPDATE database-table SET origin=?, destination=?, depdate=?, pax=? WHERE FlightID=?");
$stmt->execute($data);
$affected_rows = $stmt->rowCount();
echo $affected_rows.' were affected';
print_r ($data);
} else {
// Validation failed
$error++;
}
} else {
$error++;
}
} else {
$error++;
}
if($error > 0) {
}
?>
誰かアイデアはありますか?これが本当にnoobの問題である場合は申し訳ありませんが、PHP/SQLアプリケーションを自分で作成するのはこれが初めてでした。
そして事前に-ありがとう!