2016-09-13 11 views
0

私は基本的なオークションサイトを作成していますが、現在の入札額を上回っているにも関わらず、私はこれが私の意見では非常にきちんとしたアプローチではないので、私は現在の入札を得る方法と関係していると思う。jQuery変数にMySQL値を割り当てることができる「クリーナー」な方法はありますか?

ページ上のオークションを取得し、一覧表示されますので、私のHTML/PHP:

$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>"; 

あなたが見ることができるように、私は列/値を包む「CurrentBid」でのIDのIDを持つdiv要素でMySQL。

 $(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(); 

      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", 
      data: {bidname: bidname, bid: bid, id: id, itemdesc: itemdesc}, 
      success: function(data){ 
       $('#bid'+id).fadeIn('slow', function() { 
        $(this).delay(1500).fadeOut('slow'); 
       }); 
      } 
     }); 
     return false; 

     }); 
    }); 

あなたはこのコードからわかるように、私はのdivコンテナのIDを選択することにより、変数「currentbid」を割り当てる:誰かが入札を置いたときに続いて、次のjQuery/AJAXコードが呼び出される

その中のテキストを引っ張っていく。

これが私の問題を引き起こしているのかどうかはわかりませんが、現時点では高価なものを入れているにもかかわらず、時には「入札が低すぎます」という理由がわかりません入札単価

理想的には、jQuery変数 'c​​urrentbid'にMySQLからの直接の値を割り当てたいと思いますが、これが可能かどうかは分かりません。

誰でも私がこれを行う方法を知っていますか?または、変数に値を割り当てることができるより良い方法はありますか?

ありがとうございました

+0

if(){} else {}条件を指定すると、最初の条件がfalseの場合、「入札は低すぎます!」というアラートメッセージが表示されます。別のコードは実行可能ではありません。最初に条件を確認し、どのロジックを実行したいかを明確にしてください。 – KinjalMistry

+0

1) 'parseFloat()'を使って数字を比較していることを確認してください。 2)JSであなたの小切手をしないでください!代わりにサーバー上でチェックを行い、ユーザーがそれらを操作することはできません。 –

+0

'理想的には、jQuery変数 'c​​urrentbid'にMySQLの値を直接割り当てたいと思いますが、これが可能なのかどうかは確信していません。これは、JSONをHTMLマークアップに挿入するか、ajax -要求。これは何らかの教育プロジェクトですか、あるいはこのコードを実際のユーザーに使用したいですか?ユーザビリティの観点から、これは恐ろしい90年代のコードなので。 – Thomas

答えて

1

数値の代わりに文字列を比較しています。比較する前に値を浮動小数点にキャストする必要があります。

また、サーバ側で入札する際に、すでに変更されている可能性があるため、データベースからcurrentBidを確認する必要があります。

+0

こんにちは、応答ありがとうございます。これは今働いているようだ。しかし、問題は少しランダムだったので、それが再び起こったら私はあなたに知らせます。助けてくれてありがとう。 – Barnold

+0

問題が解決したらアンサーを受け入れてください – svn

+0

はい私はタイマーを待っていました。 – Barnold

関連する問題