2017-07-04 2 views
0

Am wurde bereits Formular wie folgt erstellt und funktioniert perfekt, aber auf den letzten beiden Formen nicht funktioniert, zeigt es Warnung-Undefinierte Variable: reg_no und Kosten. Ich versuche, Algorithmus wie vorherige Formen zu folgen, aber nichts passiert. Mein Ziel ist es eingeblendeten Daten zu aktualisieren und hier ist meine FormKann nicht Daten von phpmyadmin Echo

<!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

Ihr Skript ist in Gefahr [** SQL-Injection-Angriff **] (https : //stackoverflow.com/q/60174/5914775). Schau dir an, was mit [Little Bobby Tables] passiert ist (http://bobby-tables.com/). Sogar [wenn Sie Eingaben entgehen, ist es nicht sicher!] (Https://stackoverflow.com/q/5741187/5914775). Verwenden Sie stattdessen [vorbereitete parametrisierte Anweisungen] (https://php.net/manual/en/mysqli.quickstart.prepared-statements.php). –

Antwort

1

entfernen, während Schleife von Ihrem PHP-Code seit Update für einen Datensatz basiert auf id Der Code wird wie sein:

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

Ich versuche dies, aber es nicht echo Daten aus der Datenbank –

+0

Übergeben Sie den Wert zu edit_invoice Parameter, um diese ID in Ihrem $ edit_i_id zu bekommen? – Gyan

+0

Ja, das habe ich getan. –

1

wenn isset($_GET['edit_invoice']) falsch ist, Ihr $reg_no in späterer Skript nicht vorhanden ist (wo man es echo will).

Setzen Sie $ reg_no über Ihr isetset ($ _ GET ...) und überprüfen Sie, ob es eine leere oder leere Zeichenfolge ist.

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

Edit: Das gleiche für $cost und $i_id;)

BITTE Tom Uddings Kommentar mit SQL-Injections betrachten!

+0

Auf diese Weise alle nicht definierten Variablen löschen, aber es zeigt keine Daten aus der Datenbank und ich kann auch keine Daten an die Datenbank (Aktualisierung) zurückgeben. –

+1

Danke, es funktioniert! :) –