私は基本的なオークションサイトを作成しており、このコミュニティの助けを借りて非常に遠くになっています。私はこれを終える段階に近づいていますが、サーバー側の検証には若干の問題があります。PHPの検証でエラーが発生しました
オークションはhtmlとPHPでPHPページに表示されます。PHPはMySQLクエリを実行して結果を表示します。ここでは例:
$result = mysqli_query($con,"SELECT * From auction WHERE category = 'Bathroom' ORDER BY ID DESC");
while($row = mysqli_fetch_array($result))
{
echo "<form name='auction' id='auction" . $row['ID'] . "'>
<input type='hidden' name='id' value='" . $row['ID'] . "' />
<div class='auction-thumb'>
<div class='auction-name'>" . $row['Item'] . "</div>";
echo "<img class='auction' src='" . $row['ImagePath'] . "' />";
echo "<div class='auction-bid'>Current Bid: £<div class='nospace' id='" . $row['ID'] . "'>" . $row['CurrentBid'] . "</div></div>";
echo "<div class='auction-bid'>Your Name: <input type='text' class='bidder' name='bidname' autocomplete='off'/></div>";
echo "<div class='auction-bid'>Your Bid: <input type='text' class='auction-text' name='bid' autocomplete='off'/></div>";
echo "<div class='auction-bid'><input type='submit' name='submit' value='Place Bid!' /></div>";
echo "<div class='bid-success' id='bid" . $row['ID'] . "'>Bid placed!</div>";
echo "</div></form>";
}
echo "</table>";
mysqli_close($con);
ユーザーが送信ボタンをクリックすると、次のjQueryが実行されます。
:$(document).ready(function(){
$('form[name="auction"]').submit(function(){
var id = $(this).find('input[name="id"]').val();
var bidname = $(this).find('input[name="bidname"]').val();
var bid = $(this).find('input[name="bid"]').val();
var currentbid = $('#'+id).text();
var itemdesc = $(this).find('.auction-name').text();
bid = parseFloat(parseFloat(bid).toFixed(2));
currentbid = parseFloat(parseFloat(currentbid).toFixed(2));
if (bidname == '')
{
alert("No name!")
return false;
}
/* if (bid > currentbid)
{
alert("Bid is greater than current bid");
}
else
{
alert("Bid is too low!");
return false;
}*/
$.ajax({
type: "POST",
url: "auction-handler.php",
dataType: "json",
data: {bidname: bidname, bid: bid, id: id, itemdesc: itemdesc},
success: function(data){
$('#bid'+id).fadeIn('slow', function() {
$(this).delay(1500).fadeOut('slow');
});
//$('#auction' + id).find('.nospace').html(currentbid);
},
error: function() {
alert("bid too low");
}
});
return false;
});
});
をコードPOSTS場合は、以下のPHPコードは、ハンドラ・ページ上で実行されます
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$bidname = $_POST['bidname'];
$bid = $_POST['bid'];
$id = $_POST['id'];
$itemdesc = $_POST['itemdesc'];
$highestbid = mysqli_fetch_row(mysqli_query($con,"SELECT CurrentBid from Auction WHERE ID = '$id'"));
if ($bid <= $highestbid)
{
$_SESSION['errors']['bid'] = 'Sorry, but the bid is too low';
echo json_encode($_SESSION['errors']);
exit;
}
else
{
$query = "UPDATE auction SET CurrentBid = '$bid', Bidder = '$bidname' WHERE ID = '$id'";
$query2 = "INSERT INTO auction_log (Item, Bid, Bidder) VALUES ('$itemdesc','$bid','$bidname')";
mysqli_query($con, $query) or die(mysqli_error());
mysqli_query($con, $query2) or die(mysqli_error());
mysqli_close($con);
投稿された入札が現在MySQLテーブルにあるものより高いかどうかを確認するために、サーバ側の検証を追加しました。
私が午前問題は、私は私が入れたものを入札に関係なく、「申し訳ありませんが、入札が低すぎる」エラーが出るということである。
私は現在の入札よりも高い入札を置く場合は、私が手エラーは、私が下に入札した場合、私はエラーを取得します。
私はそれについても、AJAXの成功のセクションを起動する方法について説明します。
私は非常にシンプルなものが欠けているように感じます。だれかが助けてくれれば偉大になるはずです。
私はなぜそれがdownvotedされているか分からない、私はちょうどいくつかの助けを探しています。それだけであなたがエラーを持っていることを警告していますが、うまくいかないのか分からないので、あなたがAJAXエラーを処理している
おかげ
ここでセッションをクリアしていますか? – madalinivascu
ajaxの後にこのメッセージをどのように更新していますか? – madalinivascu
@madalinivascu申し訳ありませんが私はそれをやるだろうか分からない。どのメッセージ? – Barnold