2017-07-04 12 views
0

Amは既にこのように作成され、完璧ですが、最後の2つのフォームが機能していない場合、警告:未定義変数:reg_noとコストが表示されます。前のフォームと同じアルゴリズムを実行しようとしていますが、何も起こりません。私の目標は、挿入されたデータを更新することであり、ここで私の形であるphpmyadminからデータをエコーすることができません

<!doctype html> 
 
<html> 
 
<head> 
 

 
<meta charset="utf-8"> 
 
<title>Edit invoice</title> 
 
<link rel="stylesheet" href="box_style.css" /> 
 
</head> 
 

 
<body> 
 

 
<?php 
 
\t 
 
include ("db_con.php"); 
 

 
if(isset($_GET['edit_invoice'])){ 
 

 
     $edit_i_id = $_GET['edit_invoice']; 
 

 
     $select_invoice = "select * from invoice where i_id='$edit_i_id'"; 
 

 
     $run_query = mysqli_query($con, $select_invoice); 
 

 
     while ($row_invoice=mysqli_fetch_array($run_query)){ 
 
\t \t \t 
 
\t \t $i_id = $row_invoice['i_id']; \t 
 
     $reg_no = $row_invoice['reg_no']; 
 
     $cost = $row_invoice['cost']; 
 

 
     } 
 
    } 
 

 
?> 
 

 
<div class='form'> 
 
<form action="" method="post" enctype="multipart/form-data" > 
 
\t 
 
<table width="745" align="center" border="2"> 
 
\t 
 
\t 
 
<p style="text-align: center;"><strong><span style="text-decoration: underline;">EDIT INVOICE:</span></strong></p> 
 
\t 
 
\t <tr> \t \t 
 
\t \t <td align="right" bgcolor="#dbe5f1"><strong>Registration Number:</strong></td> 
 
\t \t <td><input type="text" name="reg_no" id="reg_no" size="35" class="text" placeholder="Registration Number" value="<?php echo $reg_no; ?>" required=""/></td> \t \t 
 
\t </tr> 
 
\t 
 
\t <tr> \t \t 
 
\t \t <td align="right" bgcolor="#dbe5f1"><strong>Cost(Tshs):</strong></td> 
 
\t \t <td><input type="text" name="cost" id="cost" size="35" class="text" placeholder="Cost" value="<?php echo $cost; ?>" required=""/></td> 
 
\t </tr> 
 

 
\t 
 
\t <tr> 
 
\t \t <td colspan="6" align="center" bgcolor="#dbe5f1" ><input type="submit" name="update" class="submit-button" value="SAVE CHANGES"></td> \t \t 
 
\t </tr> 
 
\t 
 
\t </table> 
 
\t 
 
</form> 
 
</div> 
 

 

 
</body> 
 

 

 
</html>

+2

HTTPS([** SQLインジェクション攻撃**] ://stackoverflow.com/q/60174/5914775)。 [Little Bobby Tables](http://bobby-tables.com/)に何が起こったのか見てみましょう。 [あなたが入力を逃れている場合でも、安全ではありません!](https://stackoverflow.com/q/5741187/5914775)。代わりに、[prepared parameterized statements](https://php.net/manual/en/mysqli.quickstart.prepared-statements.php)を使用してください。 –

答えて

1

アップデートのようにコードがされるID に基づいて一つのレコードのためにあるので、あなたのPHPコードからループしながら、削除:あなたのスクリプトがする危険性がある

if(isset($_GET['edit_invoice'])){ 
    $edit_i_id = $_GET['edit_invoice']; 
    $select_invoice = "select * from invoice where i_id='$edit_i_id'"; 
    $run_query = mysqli_query($con, $select_invoice); 
    $row_invoice = mysqli_fetch_array($run_query); 

    $i_id = $row_invoice['i_id']; 
    $reg_no = $row_invoice['reg_no']; 
    $cost = $row_invoice['cost']; 
} 
+0

これを試していますが、データベースからのエコーデータがありません –

+0

$ edit_i_idでそのIDを取得するには、edit_invoiceパラメータに値を渡していますか? – Gyan

+0

はい、私はそれをしました。 –

1

isset($_GET['edit_invoice'])が偽であれば、あなたの$reg_noは(あなたがそれをエコーする場所)以降のスクリプトには存在しません。

あなたのisset($ _ GET ...)チェックの上に$ reg_noを入れて、それにヌルまたは空の文字列を設定します。

$reg_no = null; 
if (isset($_GET['edit_invoice'])) { 
    // your code... 
} 

編集:$cost$i_idのために同じことを行います。)

SQLインジェクションとトムUddingsのコメントをご検討ください!

+0

この方法では未定義の変数はすべてクリアしますが、データベースのデータは表示されず、データをデータベースに戻すこともできません(更新中)。 –

+1

ありがとう、その作業! :) –

関連する問題