2017-01-03 10 views
0

私は過去2時間問題を修正しようとしていますが、運がない。更新クエリが更新されて挿入されています

私はランキングを更新しているページがあります。しかし、問題は、私が送信ボタンをクリックしてデータを更新し、同じデータの新しい行を挿入することです。私は間違っていることをしません。助けてください!

<?php 
require_once('connection.php'); 
if(!isset($_SESSION)) { 
    session_start(); 
} 

if(isset($_GET['company']) && isset($_GET['city']) && isset($_GET['state']) && isset($_GET['country'])) { 
    if(isset($_SESSION['email'])) { 
     $email = $_SESSION['email']; 
     $company = $_GET['company']; 
     $city = $_GET['city']; 
     $state = $_GET['state']; 
     $country = $_GET['country']; 

     $result = mysqli_query($conn, "SELECT * FROM companies_active_accounts WHERE Company_Name='$company' AND City='$city' AND `State/Province`='$state' AND Country='$country'"); 

     $result2 = mysqli_query($conn, "SELECT * FROM register WHERE email='$email'"); 
     while($row = $result2->fetch_assoc()) { 
      $username = $row["username"]; 
     } 

     $result1 = mysqli_query($conn, "SELECT * FROM review WHERE company_name='$company' AND city='$city' AND state='$state' AND country='$country' AND username='$username'"); 
     $rowcount = mysqli_num_rows($result1); 

     if(isset($_POST['rating'])) { 
      $input1 = $_POST['input-1']; 
      $input2 = $_POST['input-2']; 
      $input3 = $_POST['input-3']; 
      $input4 = $_POST['input-4']; 
      $input5 = $_POST['input-5']; 

      $sql1 = "UPDATE `review` SET `respectful` = '$input1', `assurance` = '$input2', `tangibles` = '$input3', `empathy` = '$input4', `responsiveness` = '$input5' WHERE company_name='$company' AND city='$city' AND `state`='$state' AND country='$country'";  
      if ($conn->query($sql1) === TRUE) { 
       header('Location:myrating.php'); 
       exit(); 
      } 
     } 
    } 
} else { 
    header('Location: '.'index.php'); 
    exit(); 
} 

?> 
<?php include('partials/header.php');?> 
<?php include('partials/navbar.php');?> 
<!-- Content --> 
<section id="review"> 
    <div class="container"> 
     <div class="row"> 
     <?php if(isset($_SESSION['email'])) { ?> 
      <div class="col-md-8 col-md-offset-2"> 
       <?php while ($row = mysqli_fetch_assoc($result)) { ?> 
        <h1 class="text-center heading" id="a"><?php echo $row['Company_Name'] ?></h1> 
        <p class="text-center"><span>City: <span id="b"><?php echo $row['City'] ?></span></span> | <span>State/Province: <span id="c"><?php echo $row['State/Province'] ?></span> | </span><span> Country: <span id="d"><?php echo $row['Country'] ?></span></span></p> 
       <?php } ?> 
       <?php if($rowcount > 0) { 
        while ($row = mysqli_fetch_assoc($result1)) { 
       ?> 
         <form method="post" action="edit_rating.php?company=<?php echo $company ?>&city=<?php echo $city ?>&state=<?php echo $state ?>&country=<?php echo $country ?>" id="rating1" > 
          <table> 
           <tr> 
            <td><h2 style="padding-right: 60px;"><span class="hint--top hint--medium" aria-label="A company’s ability to perform the promised service dependably and accurately.">Respectful/Integrity</span></h2></td>  
            <td>     
            <input id="input-1" name="input-1" value="<?php echo $row['respectful']; ?>" class="rating-loading" data-size="sm" productId=1> 
            <script> 
             $(document).on('ready', function(){ 
              $('#input-1').rating({ 
               step: 1, 
               starCaptions: {1: 'Very Poor', 2: 'Poor', 3: 'Ok', 4: 'Good', 5: 'Very Good'}, 
               starCaptionClasses: {1: 'text-danger', 2: 'text-warning', 3: 'text-info', 4: 'text-primary', 5: 'text-success'} 
              }); 
             }); 
            </script> 
           </td> 
          </tr> 
          <tr> 
           <td><h2><span class="hint--top hint--medium" aria-label="The knowledge, competence and courtesy of employees and their ability to convey trust and confidence."> Assurance </span> </h2></td> 
           <td> 
            <input id="input-2" name="input-2" value="<?php echo $row['assurance']; ?>" class="rating-loading" data-size="sm" productId=2> 
            <script> 
             $(document).on('ready', function(){ 
              $('#input-2').rating({ 
               step: 1, 
               starCaptions: {1: 'Very Poor', 2: 'Poor', 3: 'Ok', 4: 'Good', 5: 'Very Good'}, 
               starCaptionClasses: {1: 'text-danger', 2: 'text-warning', 3: 'text-info', 4: 'text-primary', 5: 'text-success'} 
              }); 
             }); 
            </script> 
           </td> 
          </tr> 
          <tr> 
           <td><h2><span class="hint--top hint--medium" aria-label="Physical facilities, equipment and appearances that impress the customer."> Tangibles </span></h2></td> 
           <td> 
            <input id="input-3" name="input-3" value="<?php echo $row['tangibles']; ?>" class="rating-loading" data-size="sm" productId=3> 
            <script> 
             $(document).on('ready', function(){ 
              $('#input-3').rating({ 
               step: 1, 
               starCaptions: {1: 'Very Poor', 2: 'Poor', 3: 'Ok', 4: 'Good', 5: 'Very Good'}, 
               starCaptionClasses: {1: 'text-danger', 2: 'text-warning', 3: 'text-info', 4: 'text-primary', 5: 'text-success'} 
               }); 
              }); 
             </script> 
            </td> 
           </tr> 
           <tr> 
            <td><h2><span class="hint--top hint--medium" aria-label="The level of caring, individualized attention, access, communication and understanding that the customer perceives."> Empathy </span></h2></td> 
            <td> 
            <input id="input-4" name="input-4" value="<?php echo $row['empathy']; ?>" class="rating-loading" data-size="sm" productId=4> 
             <script> 
              $(document).on('ready', function(){ 
               $('#input-4').rating({ 
                step: 1, 
                starCaptions: {1: 'Very Poor', 2: 'Poor', 3: 'Ok', 4: 'Good', 5: 'Very Good'}, 
                starCaptionClasses: {1: 'text-danger', 2: 'text-warning', 3: 'text-info', 4: 'text-primary', 5: 'text-success'} 
               }); 
              }); 
             </script> 
            </td> 
           </tr> 
           <tr> 
            <td><h2><span class="hint--top hint--medium" aria-label="The willingness displayed to help and provide prompt service."> Responsiveness </span></h2></td> 
             <td> 
              <input id="input-5" name="input-5" value="<?php echo $row['responsiveness']; ?>" class="rating-loading" data-size="sm" productId=5> 
              <script> 
               $(document).on('ready', function(){ 
                $('#input-5').rating({ 
                step: 1, 
                starCaptions: {1: 'Very Poor', 2: 'Poor', 3: 'Ok', 4: 'Good', 5: 'Very Good'}, 
                starCaptionClasses: {1: 'text-danger', 2: 'text-warning', 3: 'text-info', 4: 'text-primary', 5: 'text-success'} 
               }); 
              }); 
             </script> 
            </td> 
           </tr> 
          </table> 
          <br> 
         <?php } ?> 
         <button name="rating" id="rating" class="btn btn-success">Update Ratings</button> 
        </form> 
        <?php } else { ?> 
         <h2>Please Review First before editing.</h2> 
        <?php } 
       }?>    
      </div> 
     </div> 
    </div> 
</section> 

<?php include('partials/footer.php');?> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#rating").click(function() { 
      var company = $('#a').text(); 
      var city = $('#b').text(); 
      var state = $('#c').text(); 
      var country = $('#d').text(); 
      var input1 = $('#input-1').val(); 
      var input2 = $('#input-2').val(); 
      var input3 = $('#input-3').val(); 
      var input4 = $('#input-4').val(); 
      var input5 = $('#input-5').val(); 
      if(input1 > 0 && input2 > 0 && input3 > 0 && input4 > 0 && input5 > 0) { 
       $.post('rating.php',{input1 : input1, input2 : input2, input3 : input3, input4 : input4, input5 : input5, company : company, city : city, state : state, country : country}); 
       $(this).attr("checked"); 
       window.location.reload(); 
      } else { 
       alert('Please Rate all fields'); 
       return false; 
      } 
     }); 
    }); 
</script> 

ありがとうございます。

+0

貼り付けたコードにINSERTステートメントが表示されません。 'myrating.php'がINSERTをしている可能性はありますか? –

+0

いいえmyrating.phpには選択クエリがあります – Phoenix

+0

上記のコードをreview.phpからコピーして編集しました。 review.phpが挿入されていて、上記のコードが更新中です。 2つのページの間にリンクはありません。 – Phoenix

答えて

0

フェニックス、あなたのコードをリファクタリングしてトラブルをチェックするのをはるかに簡単にしたいと思います。今のところ、混乱している部品が数多く混在しているため、問題を特定するのは難しいです。

まず、別のファイルにセッションと接続するための設定を引き出すには、次のとおりです

<?php 
// display errors 
ini_set('display_errors', 1); 

require_once('connection.php'); 

if(!isset($_SESSION)) { 
    session_start(); 
} 

その後

setup.php、私は別のファイルにJavaScriptを引くと思います。 JavaScriptが一番下にロードされている場合、コード内で参照するすべてのHTML要素の後に、ready()を呼び出す必要はありません。

main.js

// original 
$(document).ready(function() { 
    $("#rating").click(function() { 
     var company = $('#a').text(); 

// shorthand 
$(function() { 
    $("#rating").click(function() { 
     var company = $('#a').text(); 

// no need for ready() check at bottom of page as relevant DOM has loaded 
$("#rating").click(function() { 
    var company = $('#a').text(); 

次に、あなたはあなたの小切手をリファクタリングすることができます。例えば、ISSET()は複数の引数を受け付けますと

は ​​

、本当に、私がチェックすることができる小さな関数にアップし、このコードを壊し始めると思います。

のfunctions.php(またはちょうど今

... 
function sessionHasEmail() { 
    return isset($_SESSION['email']); 
} 

function newPage($page) { 
    header('Location: ' . $page); 
    exit();   
} 

function getVarsSent() { 
    return isset($_GET['company'], $_GET['city'], $_GET['state'], $_GET['country']); 
} 

をsetup.phpに追加、あなたはこのページ上のコードの多くを短縮することができます。アイデアは破るためにある

<?php 
// include other files and functions and start session 
require_once('setup.php'); 
// check for get vars 
if (!getVarsSent()) newPage('index.php') 
// conditionally query if email session var set 
if (sessionHasEmail()) { 
    // these queries can be broken up into functions 
} 
// etc. 

コードを理解し、テストし、再利用するのがはるかに簡単な管理可能なセクションにコード化してください。

また、DBの観点から見ると、あなたが更新したときに一意のIDを列挙し、それらを参照してください。投稿したコードでは分かりません。

最後に、@ jory-geertsは2つの貴重なコメントを投稿しました。 POSTは、重複の点で問題を引き起こしている可能性があります(わかりやすく、わかりやすいコードです)。セキュリティチェックは今すぐ追加する必要があります(SQL準備文とGET/POST var検証)あなたがコードをリファクタリングし、特定のセクションに固定された問題を持っている場合は、アップデートを投稿して、私は助けてくれるでしょう。

関連する問題