2016-12-16 12 views
1

私のコードは:(答えから提案後を編集)削除ボタンが機能しないのはなぜですか?

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>SomuFinance - Personal Finance Manager</title> 
    <link rel="stylesheet" type="text/css" href="indexStyle.css"> 
    <script src="scripts/jquery-3.1.0.min.js"></script> 
</head> 
<body> 
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
     <div id="container"> 
      <input type="submit" class="button" name="edit" value="Edit" /> 
      <input type="button" class="button" name="delete" value="Delete" /> 
      <input type="text" id="action" name="action"> 
      <table id="listDB"> 
       <tr> 
        <th>Select</th> 
        <th>ID</th> 
        <th>Category ID</th> 
        <th>Shop</th> 
        <th>Item</th> 
        <th>Quantity</th> 
        <th>Unit</th> 
        <th>Price Based On</th> 
        <th>MRP</th> 
        <th>Seller's Price</th> 
        <th>Last Updated On</th> 
       </tr> 
       <?php 
        $dbc = mysqli_connect('localhost','root','atlantis2016','itemDB') 
           or die("Error Connecting to Database"); 

        if(isset($_POST['submit'])) 
        { 
         echo "Action Set to ".$_POST['action']; 
         if($_POST['action']=='confirmDelete') 
         { 
          echo "Now Deleting!!"; 
          foreach ($_POST['selected'] as $delete_id) 
          { 
           $query = "DELETE FROM grocery WHERE id = $delete_id"; 
           mysqli_query($dbc, $query) 
            or die('Error querying database.'); 
          } 
         } 
        } 

        $query1 = "SELECT DISTINCT category FROM grocery"; 
        $result1 = mysqli_query($dbc, $query1) 
           or die("Error Querying Database"); 

        while($row = mysqli_fetch_array($result1)) 
        { 
         $category = $row['category']; 
         $query2 = "SELECT * FROM grocery WHERE category='$category' ORDER BY item ASC"; 
         $result2 = mysqli_query($dbc, $query2) 
           or die("Error Querying Database"); 

         echo '<tr>'; 
          echo '<td class="catHead" colspan=11>'.$category.'</td>'; 
         echo '</tr>'; 
         $catCount=1; 

         while($inRow = mysqli_fetch_array($result2)) 
         { 
          $id = $inRow['id']; 
          $shop = $inRow['shop']; 
          $item = $inRow['item']; 
          $qnty = $inRow['quantity']; 
          $unit = $inRow['unit']; 
          $price_based_on = $inRow['price_based_on']; 
          $mrp = $inRow['MRP']; 
          $sellers_price = $inRow['sellers_price']; 
          $last_updated_on = $inRow['last_updated_on']; 

          echo '<tr>'; 
           echo '<td><input type="checkbox" value="' . $id . '" name="selected[]" /></td>'; 
           echo '<td>'.$id.'</td>'; 
           echo '<td>'.$catCount.'</td>'; 
           echo '<td>'.$shop.'</td>'; 
           echo '<td class="leftAligned">'.$item.'</td>'; 
           echo '<td>'.$qnty.'</td>'; 
           echo '<td>'.$unit.'</td>'; 
           echo '<td>'.$price_based_on.'</td>'; 
           echo '<td class="pri">₹'.$mrp.'</td>'; 
           echo '<td class="pri">₹'.$sellers_price.'</td>'; 
           echo '<td>'.$last_updated_on.'</td>'; 
          echo '</tr>'; 

          $catCount++; 
         } 
        } 

        mysqli_close($dbc); 
       ?> 
       <input type="submit" value="Submit"> 
      </table> 
     </div> 

     <div class="dialogBG"> 
      <div id="deleteConfirmDialog" class="dialog"> 
       <div class="closeDialog"></div> 
       <p>Sure you want to delete the selected Data?</p> 
       <input type="submit" id="confirmDelete" class="dialogButton" name="edit" value="Delete" /> 
       <input type="button" class="dialogButton cancelButton" name="delete" value="Cancel" /> 
      </div> 
     </div> 
    </form> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
      $('.button').click(function(){ 
       if($(this).val()=="Delete") 
       { 
        $(".dialogBG").fadeIn(200); 
        $("#deleteConfirmDialog").show(200); 
        $("#action").val('confirmDelete'); 
       } 
       else if($(this).val()=="Edit") 
       { 

       } 
      }); 

      $('#confirmDelete').click(function(){ 
       $(".closeDialog").trigger("click"); 
      }); 
      $('#cancelDelete').click(function(){ 

      }); 
      $(".closeDialog").click(function (e){ 
       $(this).parent(".dialog").hide('200').parent(".dialogBG").fadeOut('200'); 
      }); 
      $(".cancelButton").click(function (e){ 
       $(this).parent(".dialog").hide('200').parent(".dialogBG").fadeOut('200'); 
      }); 
      $("form").submit(function(e){ 
       alert("Form is being sumbitted!"); 
      }); 
     }); 
    </script> 
</body> 
</html> 

I []が選択されたPHPの配列に含まれているチェックボックスが選択された要素は、データベースから削除したいです。削除する前に、 "submit"ボタンを含む確認ダイアログボックスを開きます。これにより、実際の削除が行われます。しかし、何らかの理由で上記のコードが動作しません。投稿echo "Action Set to ".$_POST['action'];は出力を返さないので、投稿が送信されているかどうかはわかりません。助けてください。

私はこのコードのセクション全体が(手動テストから)動作していないと信じています。

if(isset($_POST['submit'])) 
    { 
     echo "PHP Working here!"; 
     echo "Action Set to ".$_POST['action']; 
     if($_POST['action']=='confirmDelete') 
     { 
      echo "Now Deleting!!"; 
      foreach ($_POST['selected'] as $delete_id) 
       { 
        $query = "DELETE FROM grocery WHERE id = $delete_id"; 
        mysqli_query($dbc, $query) 
         or die('Error querying database.'); 
       } 
     } 
    } 

なぜでしょうか?

答えて

1

これらの入力をフォームに入れてアクションを設定する必要があります。以下のように:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" role="form"> 
    <input></input> 
    <input></input> 
</form> 

これはあなたのコード

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>SomuFinance - Personal Finance Manager</title> 
    <link rel="stylesheet" type="text/css" href="indexStyle.css"> 
    <script src="scripts/jquery-3.1.0.min.js"></script> 
</head> 
<body> 
    <div id="container"> 
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" role="form"> 
     <input type="submit" class="button" name="edit" value="Edit" /> 
     <input type="button" class="button" name="delete" value="Delete" /> 
     <input type="text" id="action" name="action"> 
     <table id="listDB"> 
      <tr> 
       <th>Select</th> 
       <th>ID</th> 
       <th>Category ID</th> 
       <th>Shop</th> 
       <th>Item</th> 
       <th>Quantity</th> 
       <th>Unit</th> 
       <th>Price Based On</th> 
       <th>MRP</th> 
       <th>Seller's Price</th> 
       <th>Last Updated On</th> 
      </tr> 
      <?php 
       $dbc = mysqli_connect('localhost','root','atlantis2016','itemDB') 
          or die("Error Connecting to Database"); 

       if(isset($_POST['submit'])) 
       { 
        echo "Action Set to ".$_POST['action']; 
        if($_POST['action']=='confirmDelete') 
        { 
         echo "Now Deleting!!"; 
         foreach ($_POST['selected'] as $delete_id) 
         { 
          $query = "DELETE FROM grocery WHERE id = $delete_id"; 
          mysqli_query($dbc, $query) 
           or die('Error querying database.'); 
         } 
        } 
       } 

       $query1 = "SELECT DISTINCT category FROM grocery"; 
       $result1 = mysqli_query($dbc, $query1) 
          or die("Error Querying Database"); 

       while($row = mysqli_fetch_array($result1)) 
       { 
        $category = $row['category']; 
        $query2 = "SELECT * FROM grocery WHERE category='$category' ORDER BY item ASC"; 
        $result2 = mysqli_query($dbc, $query2) 
          or die("Error Querying Database"); 

        echo '<tr>'; 
         echo '<td class="catHead" colspan=11>'.$category.'</td>'; 
        echo '</tr>'; 
        $catCount=1; 

        while($inRow = mysqli_fetch_array($result2)) 
        { 
         $id = $inRow['id']; 
         $shop = $inRow['shop']; 
         $item = $inRow['item']; 
         $qnty = $inRow['quantity']; 
         $unit = $inRow['unit']; 
         $price_based_on = $inRow['price_based_on']; 
         $mrp = $inRow['MRP']; 
         $sellers_price = $inRow['sellers_price']; 
         $last_updated_on = $inRow['last_updated_on']; 

         echo '<tr>'; 
          echo '<td><input type="checkbox" value="' . $id . '" name="selected[]" /></td>'; 
          echo '<td>'.$id.'</td>'; 
          echo '<td>'.$catCount.'</td>'; 
          echo '<td>'.$shop.'</td>'; 
          echo '<td class="leftAligned">'.$item.'</td>'; 
          echo '<td>'.$qnty.'</td>'; 
          echo '<td>'.$unit.'</td>'; 
          echo '<td>'.$price_based_on.'</td>'; 
          echo '<td class="pri">₹'.$mrp.'</td>'; 
          echo '<td class="pri">₹'.$sellers_price.'</td>'; 
          echo '<td>'.$last_updated_on.'</td>'; 
         echo '</tr>'; 

         $catCount++; 
        } 
       } 

       mysqli_close($dbc); 
      ?> 
     </table> 
     </form> 
    </div> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
      $('.button').click(function(){ 
       if($(this).val()=="Delete") 
       { 
        $(".dialogBG").fadeIn(200); 
        $("#deleteConfirmDialog").show(200); 
        $("#action").val('confirmDelete'); 
       } 
       else if($(this).val()=="Edit") 
       { 

       } 
      }); 

      $('#confirmDelete').click(function(){ 
       $(".closeDialog").trigger("click"); 
      }); 
      $('#cancelDelete').click(function(){ 

      }); 
      $(".closeDialog").click(function (e){ 
       $(this).parent(".dialog").hide('200').parent(".dialogBG").fadeOut('200'); 
      }); 
      $(".cancelButton").click(function (e){ 
       $(this).parent(".dialog").hide('200').parent(".dialogBG").fadeOut('200'); 
      }); 
     }); 
    </script> 

    <div class="dialogBG"> 
     <div id="deleteConfirmDialog" class="dialog"> 
      <div class="closeDialog"></div> 
      <p>Sure you want to delete the selected Data?</p> 
       <input type="submit" id="confirmDelete" class="dialogButton" name="edit" value="Delete" /> 
       <input type="button" class="dialogButton cancelButton" name="delete" value="Cancel" /> 
     </div> 
    </div> 
</body> 
</html> 
+0

それを行いました。まだ動作しません。その他の提案/アイデア? –

+1

コードは非常に長く、時間がかかります。私は試してみるが、約束はしない。 – ab29007

+0

時間を割いていただきありがとうございます。 –

1

ソリューションは簡単だっただろう。問題のセクションのif(isset($_POST['submit']))の代わりにif(isset($_POST['confirmDelete']))が必要です。フォーム全体に「送信」というボタンがないためです。

関連する問題