多次使用另一个 table 的值更新 table
Updating table using another table's value multiple times
对我来说,这是一个简单的问题,但我已经搜索了好几天,但没有找到合适的解决方案。
我有三个 table。一份用于联系人,一份用于州,一份用于 yes/no 个问题。联系人 table 是主要的 table,它引用其他两个 table 来获取某些字段的值。 yes/no table 在联系人 table 中被引用了 3 次。状态 table 被引用一次。
我已经能够使用适当的 select 框对插入的 php 文件进行编码,该框显示来自各州和 yes/no tables 的值并将值插入联系人 table。
我遇到的问题是更新 php 文件。我一直无法找到可用于多次使用 yes/no table 来更新联系人 table 中的字段的代码示例。
我将当前版本的 xampp 与当前版本的 php 和 mysql 一起使用。我正在使用 PDO 编码作为与 mysql 的连接。
这是当前更新 mysql 代码(我知道需要与各州建立联系,是的 tables,我只是不知道应该是什么。)
<?php
require '../app/start.php';
if (!empty($_POST)) {
$id = $_POST['id'];
$deceased = $_POST['deceased'];
$active = $_POST['active'];
$realname = $_POST['realname'];
$slug = $_POST['slug'];
$nickname = $_POST['nickname'];
$prefernick = $_POST['prefernick'];
$dob = $_POST['dob'];
$address = $_POST['address'];
$city = $_POST['city'];
$statelookup = $_POST['statelookup'];
$zipcode = $_POST['zipcode'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$emailtwo = $_POST['emailtwo'];
$facebook = $_POST['facebook'];
$twitter = $_POST['twitter'];
$updatePage = $db ->prepare("
UPDATE contacts
SET
deceased = :deceased,
active = :active,
realname = :realname,
slug = :slug,
nickname = :nickname,
prefernick = :prefernick,
dob = :dob,
address = :address,
city = :city,
statelookup = :statelookup,
zipcode = :zipcode,
phone = :phone,
email = :email,
emailtwo = :emailtwo,
facebook = :facebook,
twitter = :twitter,
updated = NOW()
WHERE id = :id
");
$updatePage->execute([
'id' => $id,
'deceased' => $deceased,
'active' => $active,
'realname' => $realname,
'slug' => $slug,
'nickname' => $nickname,
'prefernick' => $prefernick,
'dob' => $dob,
'address' => $address,
'city' => $city,
'statelookup' => $statelookup,
'zipcode' => $zipcode,
'phone' => $phone,
'email' => $email,
'emailtwo' => $emailtwo,
'facebook' => $facebook,
'twitter' => $twitter,
]);
header('Location: ' . BASE_URL . '/adminix/list-contacts.php');
}
if (!isset($_GET['id'])) {
header('Location: ' . BASE_URL . '/adminix/list-contacts.php');
die();
}
$page = $db->prepare("
SELECT *
FROM contacts
WHERE id = :id
");
$page->execute(['id' => $_GET['id']]);
$page = $page->fetch(PDO::FETCH_ASSOC);
require VIEW_ROOT . '/adminix/edit-contacts.php';
这是当前更新的 php 代码和表格(我知道需要更改 select 选项,我只是不知道拉现有值应该是什么来自联系人 table,但也显示来自状态 table 或 yesno table 的可用选项。)
<?php require VIEW_ROOT . '/templates/header.php'; ?>
<?php
// Require SQL Look-ups
$yesno1 = $db->query("
SELECT *
FROM yesno
ORDER BY yesno_id DESC
")->fetchAll(PDO::FETCH_ASSOC);
$yesno2 = $db->query("
SELECT *
FROM yesno
ORDER BY yesno_id ASC
")->fetchAll(PDO::FETCH_ASSOC);
$states = $db->query("
SELECT *
FROM states
ORDER BY states_id DESC
")->fetchAll(PDO::FETCH_ASSOC);
?>
<h2>EDIT CONTACTS PAGE</h2>
<form action="<?php echo BASE_URL; ?>/adminix/edit-contacts.php" method="POST" autocomplete="off">
<table width="100%" border="1">
<tr>
<td>
<label for="deceased">
Deceased:
</label>
</td>
<td>
<select name="deceased" id="deceased">
<?php
foreach ($yesno1 as $rowone) {
print '<option selected="'.$page['deceased'].'">'.$rowone['yesno'].'</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td>
<label for="active">
Active:
</label>
</td>
<td>
<select name="active" id="active">
<?php
foreach ($yesno2 as $rowtwo) {
print '<option value="'.$rowtwo['yesno_id'].'">'.$rowtwo['yesno'].'</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td>
<label for="realname">
Real Name:
</label>
</td>
<td>
<input type="text" name="realname" id="realname" value="<?php echo escape($page['realname']); ?>">
</td>
</tr>
<tr>
<td>
<label for="slug">
Slug:
</label>
</td>
<td>
<input type="text" name="slug" id="slug" value="<?php echo escape($page['slug']); ?>">
</td>
</tr>
<tr>
<td>
<label for="nickname">
Nick Name:
</label>
</td>
<td>
<input type="text" name="nickname" id="nickname" value="<?php echo escape($page['nickname']); ?>">
</td>
</tr>
<tr>
<td>
<label for="prefernick">
Prefer Nick Name:
</label>
</td>
<td>
<select name="prefernick" id="prefernick">
<?php
foreach ($yesno2 as $rowthree) {
print '<option value="'.$rowthree['yesno_id'].'">'.$rowthree['yesno'].'</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td>
<label for="dob">
Date of Birth:
</label>
</td>
<td>
<input type="date" name="dob" id="dob" value="<?php echo escape($page['dob']); ?>">
</td>
</tr>
<tr>
<td>
<label for="address">
Address:
</label>
</td>
<td>
<input type="text" name="address" id="address" value="<?php echo escape($page['address']); ?>">
</td>
</tr>
<tr>
<td>
<label for="city">
City:
</label>
</td>
<td>
<input type="text" name="city" id="city" value="<?php echo escape($page['city']); ?>">
</td>
</tr>
<tr>
<td>
<label for="statelookup">
State:
</label>
</td>
<td>
<select name="statelookup" id="statelookup">
<?php
foreach ($states as $rowfour) {
print '<option value="'.$rowfour['states_id'].'">'.$rowfour['state_lookup'].'</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td>
<label for="zipcode">
Zip Code:
</label>
</td>
<td>
<input type="text" name="zipcode" id="zipcode" value="<?php echo escape($page['zipcode']); ?>">
</td>
</tr>
<tr>
<td>
<label for="phone">
Phone:
</label>
</td>
<td>
<input type="text" name="phone" id="phone" value="<?php echo escape($page['phone']); ?>">
</td>
</tr>
<tr>
<td>
<label for="email">
Email:
</label>
</td>
<td>
<input type="text" name="email" id="email" value="<?php echo escape($page['email']); ?>">
</td>
</tr>
<tr>
<td>
<label for="emailtwo">
Email Two
</label>
</td>
<td>
<input type="text" name="emailtwo" id="emailtwo" value="<?php echo escape($page['emailtwo']); ?>">
</td>
</tr>
<tr>
<td>
<label for="facebook">
Facebook:
</label>
</td>
<td>
<input type="text" name="facebook" id="facebook" value="<?php echo escape($page['facebook']); ?>">
</td>
</tr>
<tr>
<td>
<label for="twitter">
Twitter:
</label>
</td>
<td>
<input type="text" name="twitter" id="twitter" value="<?php echo escape($page['twitter']); ?>">
</td>
</tr>
<tr>
<td>
<input type="hidden" name="id" value="<?php echo escape($page['id']) ?>">
<input type="submit" value="Submit Edited Contact">
</td>
</tr>
</table>
</form>
<?php require VIEW_ROOT . '/templates/footer.php'; ?>
yesno table 有两个字段,yesno_id 和 yesno,yesno 字段的值为 Yes 和 No。状态 table 有两个字段,states_id和 state_lookup 以及五十个列表 U.S。美国。
如能提供任何帮助,我们将不胜感激。
好的,我想我明白了。 yesno table 的结构不足以满足您的需要。事实上,我建议您根本不要使用 table。而是将 'deceased' 和 'prefernick' 的列类型更改为 enum.
deceased ENUM('Yes', 'No')
prefernick ENUM('Yes', 'NO')
然后在你html
<select name="deceased" id="deceased">
<option <?php echo $page['deceased'] === 'Yes' ? 'selected' : ''; ?> value="Yes">Yes</option>
<option <?php echo $page['deceased'] === 'No' ? 'selected' : ''; ?> value="No">No</option>
</select>
请务必对 'prefernick' select 也执行相同的操作。
在你的PHP中:
//You forgot to prefix the keys with colons.
$updatePage->execute([
':id' => $id,
':deceased' => $deceased,
':active' => $active,
':realname' => $realname,
':slug' => $slug,
':nickname' => $nickname,
':prefernick' => $prefernick,
':dob' => $dob,
':address' => $address,
':city' => $city,
':statelookup' => $statelookup,
':zipcode' => $zipcode,
':phone' => $phone,
':email' => $email,
':emailtwo' => $emailtwo,
':facebook' => $facebook,
':twitter' => $twitter,
]);
希望对您有所帮助
对我来说,这是一个简单的问题,但我已经搜索了好几天,但没有找到合适的解决方案。
我有三个 table。一份用于联系人,一份用于州,一份用于 yes/no 个问题。联系人 table 是主要的 table,它引用其他两个 table 来获取某些字段的值。 yes/no table 在联系人 table 中被引用了 3 次。状态 table 被引用一次。
我已经能够使用适当的 select 框对插入的 php 文件进行编码,该框显示来自各州和 yes/no tables 的值并将值插入联系人 table。
我遇到的问题是更新 php 文件。我一直无法找到可用于多次使用 yes/no table 来更新联系人 table 中的字段的代码示例。
我将当前版本的 xampp 与当前版本的 php 和 mysql 一起使用。我正在使用 PDO 编码作为与 mysql 的连接。
这是当前更新 mysql 代码(我知道需要与各州建立联系,是的 tables,我只是不知道应该是什么。)
<?php
require '../app/start.php';
if (!empty($_POST)) {
$id = $_POST['id'];
$deceased = $_POST['deceased'];
$active = $_POST['active'];
$realname = $_POST['realname'];
$slug = $_POST['slug'];
$nickname = $_POST['nickname'];
$prefernick = $_POST['prefernick'];
$dob = $_POST['dob'];
$address = $_POST['address'];
$city = $_POST['city'];
$statelookup = $_POST['statelookup'];
$zipcode = $_POST['zipcode'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$emailtwo = $_POST['emailtwo'];
$facebook = $_POST['facebook'];
$twitter = $_POST['twitter'];
$updatePage = $db ->prepare("
UPDATE contacts
SET
deceased = :deceased,
active = :active,
realname = :realname,
slug = :slug,
nickname = :nickname,
prefernick = :prefernick,
dob = :dob,
address = :address,
city = :city,
statelookup = :statelookup,
zipcode = :zipcode,
phone = :phone,
email = :email,
emailtwo = :emailtwo,
facebook = :facebook,
twitter = :twitter,
updated = NOW()
WHERE id = :id
");
$updatePage->execute([
'id' => $id,
'deceased' => $deceased,
'active' => $active,
'realname' => $realname,
'slug' => $slug,
'nickname' => $nickname,
'prefernick' => $prefernick,
'dob' => $dob,
'address' => $address,
'city' => $city,
'statelookup' => $statelookup,
'zipcode' => $zipcode,
'phone' => $phone,
'email' => $email,
'emailtwo' => $emailtwo,
'facebook' => $facebook,
'twitter' => $twitter,
]);
header('Location: ' . BASE_URL . '/adminix/list-contacts.php');
}
if (!isset($_GET['id'])) {
header('Location: ' . BASE_URL . '/adminix/list-contacts.php');
die();
}
$page = $db->prepare("
SELECT *
FROM contacts
WHERE id = :id
");
$page->execute(['id' => $_GET['id']]);
$page = $page->fetch(PDO::FETCH_ASSOC);
require VIEW_ROOT . '/adminix/edit-contacts.php';
这是当前更新的 php 代码和表格(我知道需要更改 select 选项,我只是不知道拉现有值应该是什么来自联系人 table,但也显示来自状态 table 或 yesno table 的可用选项。)
<?php require VIEW_ROOT . '/templates/header.php'; ?>
<?php
// Require SQL Look-ups
$yesno1 = $db->query("
SELECT *
FROM yesno
ORDER BY yesno_id DESC
")->fetchAll(PDO::FETCH_ASSOC);
$yesno2 = $db->query("
SELECT *
FROM yesno
ORDER BY yesno_id ASC
")->fetchAll(PDO::FETCH_ASSOC);
$states = $db->query("
SELECT *
FROM states
ORDER BY states_id DESC
")->fetchAll(PDO::FETCH_ASSOC);
?>
<h2>EDIT CONTACTS PAGE</h2>
<form action="<?php echo BASE_URL; ?>/adminix/edit-contacts.php" method="POST" autocomplete="off">
<table width="100%" border="1">
<tr>
<td>
<label for="deceased">
Deceased:
</label>
</td>
<td>
<select name="deceased" id="deceased">
<?php
foreach ($yesno1 as $rowone) {
print '<option selected="'.$page['deceased'].'">'.$rowone['yesno'].'</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td>
<label for="active">
Active:
</label>
</td>
<td>
<select name="active" id="active">
<?php
foreach ($yesno2 as $rowtwo) {
print '<option value="'.$rowtwo['yesno_id'].'">'.$rowtwo['yesno'].'</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td>
<label for="realname">
Real Name:
</label>
</td>
<td>
<input type="text" name="realname" id="realname" value="<?php echo escape($page['realname']); ?>">
</td>
</tr>
<tr>
<td>
<label for="slug">
Slug:
</label>
</td>
<td>
<input type="text" name="slug" id="slug" value="<?php echo escape($page['slug']); ?>">
</td>
</tr>
<tr>
<td>
<label for="nickname">
Nick Name:
</label>
</td>
<td>
<input type="text" name="nickname" id="nickname" value="<?php echo escape($page['nickname']); ?>">
</td>
</tr>
<tr>
<td>
<label for="prefernick">
Prefer Nick Name:
</label>
</td>
<td>
<select name="prefernick" id="prefernick">
<?php
foreach ($yesno2 as $rowthree) {
print '<option value="'.$rowthree['yesno_id'].'">'.$rowthree['yesno'].'</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td>
<label for="dob">
Date of Birth:
</label>
</td>
<td>
<input type="date" name="dob" id="dob" value="<?php echo escape($page['dob']); ?>">
</td>
</tr>
<tr>
<td>
<label for="address">
Address:
</label>
</td>
<td>
<input type="text" name="address" id="address" value="<?php echo escape($page['address']); ?>">
</td>
</tr>
<tr>
<td>
<label for="city">
City:
</label>
</td>
<td>
<input type="text" name="city" id="city" value="<?php echo escape($page['city']); ?>">
</td>
</tr>
<tr>
<td>
<label for="statelookup">
State:
</label>
</td>
<td>
<select name="statelookup" id="statelookup">
<?php
foreach ($states as $rowfour) {
print '<option value="'.$rowfour['states_id'].'">'.$rowfour['state_lookup'].'</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td>
<label for="zipcode">
Zip Code:
</label>
</td>
<td>
<input type="text" name="zipcode" id="zipcode" value="<?php echo escape($page['zipcode']); ?>">
</td>
</tr>
<tr>
<td>
<label for="phone">
Phone:
</label>
</td>
<td>
<input type="text" name="phone" id="phone" value="<?php echo escape($page['phone']); ?>">
</td>
</tr>
<tr>
<td>
<label for="email">
Email:
</label>
</td>
<td>
<input type="text" name="email" id="email" value="<?php echo escape($page['email']); ?>">
</td>
</tr>
<tr>
<td>
<label for="emailtwo">
Email Two
</label>
</td>
<td>
<input type="text" name="emailtwo" id="emailtwo" value="<?php echo escape($page['emailtwo']); ?>">
</td>
</tr>
<tr>
<td>
<label for="facebook">
Facebook:
</label>
</td>
<td>
<input type="text" name="facebook" id="facebook" value="<?php echo escape($page['facebook']); ?>">
</td>
</tr>
<tr>
<td>
<label for="twitter">
Twitter:
</label>
</td>
<td>
<input type="text" name="twitter" id="twitter" value="<?php echo escape($page['twitter']); ?>">
</td>
</tr>
<tr>
<td>
<input type="hidden" name="id" value="<?php echo escape($page['id']) ?>">
<input type="submit" value="Submit Edited Contact">
</td>
</tr>
</table>
</form>
<?php require VIEW_ROOT . '/templates/footer.php'; ?>
yesno table 有两个字段,yesno_id 和 yesno,yesno 字段的值为 Yes 和 No。状态 table 有两个字段,states_id和 state_lookup 以及五十个列表 U.S。美国。
如能提供任何帮助,我们将不胜感激。
好的,我想我明白了。 yesno table 的结构不足以满足您的需要。事实上,我建议您根本不要使用 table。而是将 'deceased' 和 'prefernick' 的列类型更改为 enum.
deceased ENUM('Yes', 'No')
prefernick ENUM('Yes', 'NO')
然后在你html
<select name="deceased" id="deceased">
<option <?php echo $page['deceased'] === 'Yes' ? 'selected' : ''; ?> value="Yes">Yes</option>
<option <?php echo $page['deceased'] === 'No' ? 'selected' : ''; ?> value="No">No</option>
</select>
请务必对 'prefernick' select 也执行相同的操作。
在你的PHP中:
//You forgot to prefix the keys with colons.
$updatePage->execute([
':id' => $id,
':deceased' => $deceased,
':active' => $active,
':realname' => $realname,
':slug' => $slug,
':nickname' => $nickname,
':prefernick' => $prefernick,
':dob' => $dob,
':address' => $address,
':city' => $city,
':statelookup' => $statelookup,
':zipcode' => $zipcode,
':phone' => $phone,
':email' => $email,
':emailtwo' => $emailtwo,
':facebook' => $facebook,
':twitter' => $twitter,
]);
希望对您有所帮助