2014-02-09 3 views
0

Я хочу вытащить все поля из строки в моей таблице в форму, обновить их и отправить обратно в базу данных. Это то, что у меня есть, все, начиная с моей строки таблицы, втягивается в форму, но когда я обновляю, я получаю неопределенную переменную для $ row.Обновление нескольких полей базы данных mysql с использованием формы php

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

$ row только устанавливается в ваш первый фрагмент кода при установке $ _GET ['edit']. На другом пути с чрезмерно избыточными вызовами обновления вы никогда не получаете строку, а строка $ никогда не будет установлена. Кроме того, ваш профессор оставляет вас вдалеке от [SQL-инъекций] (http://bobby-tables.com). –

+0

1 вызов 'mysql_query' для запроса, он не может выполнить бесконечную сумму для вас (хотя вы можете переписать как _one_ query). (И вы действительно не должны использовать устаревшие функции 'mysql_ *'). – Wrikken

+0

Как бы переписать как один запрос? Не могли бы вы дать мне ресурс, чтобы помочь мне с тем, что я пытаюсь сделать? – user3288696

ответ

1

Дайте кнопке submit имя и проверьте, установлено ли оно или нет, и замените все остальные поля в условии if. И перенаправить действие обновления на другую страницу и обновить его там.

Смежные вопросы