2017-08-15 13 views
-1

さて、データベースの値を減算して、どんな方法でも試してみたいが、それでも失敗する。以下のクエリのコードが機能しているかどうかはわからない。コードの論理を理解することは難しいので、私にはうまく説明してください。私は本当に感謝し、私は私のベストを尽くそうとするよありがとう!データベースからチェックボックスを使用して値を減算する方法

borrow.php

<form method="post" action="borrow_save.php"> 
期日 借用
  <div class="span8"> 
        <div class="alert alert-success"><strong>Select Book</strong></div> 
         <table cellpadding="0" cellspacing="0" border="0" class="table" id="example"> 

          <thead> 
           <tr> 

            <th>Acc No.</th>         
            <th>Book title</th>         
            <th>Category</th> 
            <th>Author</th> 
            <th>Publisher name</th> 
            <th>status</th> 
            <th>Add</th> 

           </tr> 
          </thead> 
          <tbody> 

           <?php $user_query=mysqli_query($dbcon,"select * from book where status != 'Archive' ")or die(mysqli_error()); 
           while($row=mysqli_fetch_array($user_query)){ 
           $id=$row['book_id']; 

           $copy=$row['book_copies']; 


           $cn=count($id); 
           for($i=0; $i < $cn; $i++) 

             if($copy > 0){ ?> 
              <tr class="del<?php echo $id ?>"> 


           <td><?php echo $row['book_id']; ?></td> 
           <td><?php echo $row['book_title']; ?></td> 
           <td><?php echo $row ['catalog']; ?> </td> 
           <td><?php echo $row['author']; ?> </td> 
           <td><?php echo $row['publisher_name']; ?></td> 
            <td width=""><?php echo $row['status']; ?></td> 
           <?php include('toolttip_edit_delete.php'); ?> 
           <td width="20"> 
              <input id="" class="uniform_on" name="selector[]" type="checkbox" value="<?php echo $id; ?>"> 

           </td> 

           </tr> 
           <?php } 
           ?> 

           <?php } ?> 
          </tbody> 
         </table> 

      </form> 

<script>   



$(".uniform_on").change(function(){ 
var max= 3; 
if($(".uniform_on:checked").length == max){ 

    $(".uniform_on").attr('disabled', 'disabled'); 
      alert('3 Books are allowed per borrow'); 
    $(".uniform_on:checked").removeAttr('disabled'); 

}else{ 

    $(".uniform_on").removeAttr('disabled'); 
} 
}); 

borrow_save.php

<?php 


    $id=$_POST['selector']; 
$member_id = $_POST['member_id']; 
$due_date = $_POST['due_date']; 

if ($id == ''){ 
header("location: borrow.php"); 

}else{ 




mysqli_query($dbcon,"insert into borrow (member_id,date_borrow,due_date) values ('$member_id',NOW(),'$due_date')")or die(mysqli_error($dbcon)); 
$borrow_id = $row['borrow_id']; 
$borrow_id=$dbcon->insert_id; 
mysqli_query($dbcon,"UPDATE book SET book_copies = book_copies - 1 where book_id='$book_id'"); <!- this is the query that I don't know if it's work --> 


$N = count($id); 

for($i=0; $i < $N; $i++) 
{ 


mysqli_query($dbcon,"insert borrowdetails (book_id,borrow_id,borrow_status) values('$id[$i]','$borrow_id','pending')")or die(mysqli_error($dbcon)); 
} 

} 
?> 
+0

あなたは、クエリに文字列として '$のbook_id'を渡しています、ここでbook_idは整数です。残りのコードをすべてデバッグして、クエリに渡されたときに入力が有効であることを確認しましたか?また、データを挿入するときには(特にクライアント入力の場合)[prepared statements](http://php.net/manual/en/mysqli.prepare.php)を使用する必要があります – MinistryofChaps

+0

あなたの減算クエリで$ book_idはどこで定義されましたか? –

+0

申し訳ありませんが、このコードが既に機能しているので準備されたステートメントを使用しますので、SQLインジェクションを防ぐ方法を知っています。データベースに+ 1値を追加するのは簡単ですが、申し訳ありませんよろしくお願いします – Liza

答えて

0

あなたはすでにでていますあなたのfor -loop内book_idごとにborrowdetailsでsertingので、最も簡単な解決策は、あまりにもそのループにその更新ステートメントを移動するには、次のようになります。

for($i=0; $i<$N; $i++) { 
    $stmt = mysqli_prepare($dbcon,"UPDATE book SET book_copies = book_copies - 1 where book_id=?") or die(mysqli_error($dbcon)); 
    mysqli_stmt_bind_param($stmt, "i", $id[$i]); 
    mysqli_stmt_execute($stmt) or die(mysqli_error($dbcon)); 

    // Your insert-query (still NEEDS protection against SQL-injection!!!) 
    mysqli_query($dbcon,"insert borrowdetails (book_id,borrow_id,borrow_status) values('$id[$i]','$borrow_id','pending')")or die(mysqli_error($dbcon)); 
} 
+0

こんにちは!申し訳ありませんが、私はそれを減算します。しかし、1冊の本を借りると、データベースに2冊の書籍が減ります。返信いただきありがとうございます。D – Liza

+0

を返却すると、本は2冊返されました。どうすれば1冊に変えることができますか?2冊ではありません。 – Liza

+0

"データベースで2冊の本を減算する:あなたの配列に2つの項目がある(' borrowdetails'に2行も挿入する)か、あなたのコードのどこかに 'book'-tableを更新しています。あなたの2番目の質問を理解していない:S –

関連する問題