2017-10-10 11 views
2

私の "update.php"ファイルに問題があります。私の "update page"に行くのではなく、私のボタンが "index.php"というヘッダ位置に来ます。 これは私ですupdate.phpファイル:データベースを他のページにリダイレクトする

<?php 
    require 'database.php'; 
    $id = null; 
    if (!empty($_GET['ID'])) { 
     $id = $_REQUEST['ID']; 
     } 
    if (null==$id){ 
     header("Location:../index.php"); 
    } 
    if (!empty($_POST)){ 
     $codeError = null; 

     //post values 
     $code = $_POST['codeVal']; 
     //validate input 

     $valid = true; 
     if (empty($code)){ 
      $codeError = 'Please Enter Code'; 
      $valid = false; 
     } 

      // update data 
     if ($valid){ 
      $pdo = Database::connect(); 
      $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      $sql = "UPDATE production SET CODE = ? WHERE ID = ?"; 
      $q = $pdo->prepare($sql); 
      $q->execute(array($code,$id)); 
      Database::disconnect(); 
      header('location:../index.php'); 
      } 
    }else{ 
     $pdo = Database::connect(); 
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $sql = "SELECT * FROM production WHERE ID = ?"; 
     $q = $pdo->prepare($sql); 
     $q->execute(array($id)); 
     $data = $q->fetch(PDO::FETCH_ASSOC); 
     $code = $data['CODE']; 
     Database::disconnect(); 
     } 
?> 

私の他のページはこれです。私は、代わりに、私はファイルをupdate.phpをするために向かうことを期待したが、それは何が起こっているかではありません、私のreport.phpファイルにUPDATEボタンを押したとき、これはだから私のreport.phpファイル

<?php 
      include 'database.php'; 
      $pdo = Database::connect(); 
      $sql = 'SELECT * FROM production ORDER BY ID DESC'; 
      foreach ($pdo->query($sql) as $row) { 
        echo '<tr>'; 
        echo '<td style="text-align:center" width="13%">'. $row['CODE'] . '</td>'; 
        echo '<td style="text-align:center" width=18%>'; 
        echo '<a class="btn btn-success btn-sm" href="update.php?id='.$row['ID'].'">Update</a>'; 
        echo ' '; 
        echo '<a class="btn btn-danger btn-sm" href="delete.php?id='.$row['ID'].'">Delete</a>'; 
        echo '</td>';      
        echo '</tr>'; 
         } 
    Database::disconnect(); 
    ?> 

です私のindex.phpファイルにリダイレクトされています。私はどうしたらいいですか?

そして、この1つは私のフォームは

<div class="form-group form-group-sm"> 
    <label for="codeVal" class="col-sm-2 control-label" style="text-align:right">Order Code</label> 
    <div class="col-sm-2"> 
     <input type="text" id="codeVal" name="codeVal" class="form-control input-sm"style="text-align:center" value=" 
      <?php echo !empty($code)?$code:'';?>"> 
    </div> 
</div> 
+0

{if(null == $ id){ header( "Location:../ index.php");を変更してみてください。 } 'to'(空($ id)){ ヘッダー( "場所:../index.php"); } ' – hungrykoala

+0

ここに問題があります。これはif($ valid)'が実行され、そこでindex.phpにリダイレクトされます。その行を削除すると、update.phpにロードされてそこにとどまります。 – Sand

+0

あなたは私が知っていることを学んでいますが、ここで問題を見つけたら、続行する前にコードのセキュリティを見てください。 $ _GETは安全ではありません。代わりにあなたのアプリケーション/データ/セキュリティのためのより安全なフィルタリングを使用して見てくださいfilter_input() – Chris

答えて

2

$idがある私のupdate.phpをファイル上にあり、残りはnull

$id = null; 
if (!empty($_GET['ID'])) { 
    $id = $_REQUEST['ID']; 
} 

あなたはこのようにあなたのリンクを構築:

echo '<a class="btn btn-success btn-sm" href="update.php?id='.$row['ID'].'">Update</a>'; 
                  ^^ here 

したがって、$_GETの値は$_GET['id']になります$_GET['ID']ではありません。

+1

うわー!とても嬉しい@jeroen^_ ^これは魅力的に働いた – Richelle

関連する問題