2016-09-13 7 views
0

私は基本的なオークションサイトを作成しており、このコミュニティの助けを借りて非常に遠くになっています。私はこれを終える段階に近づいていますが、サーバー側の検証には若干の問題があります。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エラーを処理している

おかげ

+0

ここでセッションをクリアしていますか? – madalinivascu

+0

ajaxの後にこのメッセージをどのように更新していますか? – madalinivascu

+0

@madalinivascu申し訳ありませんが私はそれをやるだろうか分からない。どのメッセージ? – Barnold

答えて

0

方法は非常に良いではありません。 AJAXオブジェクトで

、コンソールに実際のエラーを記録し1で現在のエラーコールバックを置き換える:

error: function(jqXHR, textStatus, errorThrown) { 
       console.log(textStatus, errorThrown); 
      } 

error: function() { 
       alert("bid too low"); 
      } 

を交換し、あなたが知っていますよエラーが何であるかを確認してください

+0

こんにちは、コメントのおかげで、私は次の応答を取得します: 'SyntaxError:JSON.parse:JSONデータの第1行第1列の予期しないデータ終了'。私はこれがどういう意味なのかよく分かりません – Barnold

+0

どちらの場合も同じエラーが表示されますか(あまりにも低いか、より高い入札)? –

+0

はい、適切に機能します(つまり、入札単価を上乗せした場合、低い入札を掲載するとMySQLが更新されます)が、高すぎたり低すぎたりしても同じエラーが発生します。 – Barnold

関連する問題