2014-02-09 108 views
0

我想将我表中一行中的所有字段拖入表单中,更新它们并将它们发回数据库。这就是我所拥有的,从我的表格行中的所有东西都拉到表格中,但是当我更新时,我得到了$ row的未定义变量。使用一个PHP表单更新mysql数据库的多个字段

<?php 
include("header.php"); 
include("config.php"); 
if(isset($_GET['edit'])) 
{ 
     $id = $_GET['edit']; 
     $result= mysql_query("SELECT * FROM customers"); 
     $row= mysql_fetch_array($result); 
} 
if (isset($_POST['id'], $_POST['fName'], $_POST['lname'], $_POST['telNum'], $_POST['address'], $_POST['city'], $_POST['state'], $_POST['zip'], $_POST['email'], $_POST['service'], $_POST['notes'])) 
{ 
    $id = $_POST['id']; 
    $fName = $_POST['fName']; 
    $lName = $_POST['lName']; 
    $telNum = $_POST['telNum']; 
    $address = $_POST['address']; 
    $city = $_POST['city']; 
    $state = $_POST['state']; 
    $zip = $_POST['zip']; 
    $email =$_POST['email']; 
    $service = $_POST['service']; 
    $notes = $_POST['notes']; 
    $sqlFn = "UPDATE customers SET fName = $fname WHERE id = $id"; 
    $sqlLn = "UPDATE customers SET lName = $lName WHERE id = $id"; 
    $sqlTelNum = "UPDATE customers SET telNum = $telNum WHERE id = $id"; 
    $sqlAddress = "UPDATE customers SET address = $address WHERE id = $id"; 
    $sqlCity = "UPDATE customers SET city = $city WHERE id = $id"; 
    $sqlState = "UPDATE customers SET state = $state WHERE id = $id"; 
    $sqlZip = "UPDATE customers SET zip = $zip WHERE id = $id"; 
    $sqlEmail = "UPDATE customers SET email = $email WHERE id = $id"; 
    $sqlService = "UPDATE customers SET service = $service WHERE id = $id"; 
    $sqlNotes = "UPDATE customers SET notes = $notes WHERE id = $id"; 
    $result = mysql_query($sqlFn, $sqlLn, sqlTelNum, sqlAdress, sqlCity, 
          sqlState, sqlZip, sqlEmail, sqlService, sqlNotes) 
          or die("Could not update".mysql_error()); 
     echo "<meta http-equiv='refresh' content='0;url=viewClients.php'>"; 
} 

?> 

<form action="edit.php" method="post"> 
    <div class="CSSTableGenerator" > 
<table> 
    <tr> 
    </tr> 
    <tr> 
     <td>ID:</td> 
     <td><input type="text" name="id" value="<?php echo $row[0]; ?>"></td> 
    <tr> 
     <td>First Name:</td> 
     <td><input type="text" name="fName" value="<?php echo $row[1]; ?>"></td> 
    </tr> 
    <tr> 
     <td>Last Name:</td> 
     <td><input type="text" name="lName" value="<?php echo $row[2]; ?>"></td> 
    </tr> 
    <tr> 
     <td>Telephone #:</td> 
     <td><input type="text" name="telNum" value="<?php echo $row[3]; ?>"></td> 
    </tr> 
    <tr> 
     <td>Street Address:</td> 
     <td><input type="text" name="address" value="<?php echo $row[4]; ?>"></td> 
    </tr> 
    <tr> 
     <td>City:</td> 
     <td><input type="text" name="city" value="<?php echo $row[5]; ?>"></td> 
    </tr> 
    <tr> 
     <td>State:</td> 
     <td><input type="text" name="state" value="<?php echo $row[6]; ?>"></td> 
    </tr> 
    <tr> 
     <td>Zip:</td> 
     <td><input type="text" name="zip" value="<?php echo $row[7]; ?>"></td> 
    </tr> 
    <tr> 
     <td>Email:</td> 
     <td><input type="text" name="email" value="<?php echo $row[8]; ?>"></td> 
    </tr> 
    <tr> 
     <td>Service:</td> 
     <td><input type="text" name="service" value="<?php echo $row[9]; ?>"></td> 
    </tr> 
    <tr> 
     <td>Notes:</td> 
     <td><input type="text" name="notes" value="<?php echo $row[10]; ?>"></td> 
    </tr> 
</table> 
</div> 
<div class="CSSTableGenerator" > 
<table> 
    <tr> 
     <td><input type="submit" value="Update"/></td> 
    </tr> 
</table> 
</div> 
</form> 

此外,这些编辑链接中的每一个仅从第一行的主键提取数据。我希望每行最后一列的编辑链接从每行第一列的主键中拉出来。

<?php 
include("header.php"); 
include("config.php"); // connect to database 

mysql_query("INSERT INTO customers (id, fName, lName, telNum, address, city, state, zip, email, service, notes) 
VALUES ('$_POST[id]', '$_POST[fName]', '$_POST[lName]', '$_POST[telNum]', '$_POST[address]', '$_POST[city]', '$_POST[state]', '$_POST[zip]', '$_POST[email]', '$_POST[service]', '$_POST[notes]')") 
    or die(mysql_error()); 
$id = $_POST['id']; 
$fName = $_POST['fName']; 
$lName = $_POST['lName']; 
$telNum = $_POST['telNum']; 
$address = $_POST['address']; 
$city = $_POST['city']; 
$state = $_POST['state']; 
$zip = $_POST['zip']; 
$email = $_POST['email']; 
$service = $_POST['service']; 
$notes = $_POST['notes']; 


echo "<h1>New Client Added</h1>"; 
echo <<<HTML 
<html> 
<head> 
<link rel ="stylesheet" type="text/css" href="sample.css"/> 
<link rel ="stylesheet" type="text/css" href="TableCSSCode.css"/> 
</head> 
<body> 
<div class="CSSTableGenerator"> 
<table> 
    <tr> 
     <td>ID</td> 
     <td>First Name</td> 
     <td>Last Name</td> 
     <td>Telephone #</td> 
     <td>Street Address</td> 
     <td>City</td> 
     <td>State</td> 
     <td>Zip</td> 
     <td>Email</td> 
     <td>Service</td> 
     <td>Notes</td> 
    </tr> 
    <tr> 
     <td>$id</td> 
     <td>$fName</td> 
     <td>$lName</td> 
     <td>$telNum</td> 
     <td>$address</td> 
     <td>$city</td> 
     <td>$state</td> 
     <td>$zip</td> 
     <td>$email</td> 
     <td>$service</td> 
     <td>$notes</td> 
    </tr> 

</table> 
</body> 
</html> 
HTML; 


?> 

原谅我,如果这是一个烂摊子,我完全新的编码,我这样做是为应用程序开发类项目和我的教授并没有真正似乎知道她正在教学。提前致谢。

+0

当$ _GET ['edit']被设置时,$ row只会在您的第一个代码片段中被设置。在高度多余的更新调用的另一个路径中,您永远不会读取一行,$ row永远不会被设置。同样,你的教授正在向[SQL注入攻击](http://bobby-tables.com)敞开大门。 –

+0

1'mysql_query'请求每个查询,它不能为您运行无限量(尽管您可以重写为_one_查询)。 (你真的不应该使用已弃用的'mysql_ *'函数)。 – Wrikken

+0

我将如何重写为一个查询?你能否给我一个资源来帮助我解决我想要做的事情? – user3288696

回答

1

给提交按钮一个名称并检查它是否设置,并替换if条件中的所有其他字段。 然后将更新操作重定向到另一个页面并在那里更新。

相关问题