Я хочу вытащить все поля из строки в моей таблице в форму, обновить их и отправить обратно в базу данных. Это то, что у меня есть, все, начиная с моей строки таблицы, втягивается в форму, но когда я обновляю, я получаю неопределенную переменную для $ 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;
?>
Простите меня, если это беспорядок, я совершенно новый для кодирования, я делаю это для проекта в классе разработки прикладных программ, и мой профессор не действительно, кажется, знает, что она является обучением. Заранее спасибо.
$ row только устанавливается в ваш первый фрагмент кода при установке $ _GET ['edit']. На другом пути с чрезмерно избыточными вызовами обновления вы никогда не получаете строку, а строка $ никогда не будет установлена. Кроме того, ваш профессор оставляет вас вдалеке от [SQL-инъекций] (http://bobby-tables.com). –
1 вызов 'mysql_query' для запроса, он не может выполнить бесконечную сумму для вас (хотя вы можете переписать как _one_ query). (И вы действительно не должны использовать устаревшие функции 'mysql_ *'). – Wrikken
Как бы переписать как один запрос? Не могли бы вы дать мне ресурс, чтобы помочь мне с тем, что я пытаюсь сделать? – user3288696