【发布时间】:2015-10-30 07:44:45
【问题描述】:
对我来说,这是一个简单的问题,但我已经寻找了好几天但没有找到合适的解决方案。
我有三张桌子。一份用于联系人,一份用于州,一份用于是/否问题。联系人表是主表,它引用其他两个表以获取某些字段的值。是/否表在联系人表中被引用了 3 次。状态表被引用一次。
我已经能够使用适当的选择框对插入 php 文件进行编码,该选择框显示状态和是/否表中的值并将值插入到联系人表中。
我遇到的问题是更新 php 文件。我无法找到可用于多次使用是/否表来更新联系人表中的字段的代码示例。
我正在使用当前版本的 xampp 和当前版本的 php 和 mysql。我正在使用 PDO 作为与 mysql 的连接进行编码。
这是当前更新 mysql 代码(我知道需要与 states 和 yesno 表建立连接,我只是不知道应该是什么。)
<?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 代码和表单(我知道需要更改选择选项,我只是不知道从联系人表中提取现有值应该是什么,但也显示可用来自 states 表或 yesno 表的选项。)
<?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 表有两个字段,yesno_id 和 yesno,yesno 字段的值是 Yes 和 No。states 表有两个字段 states_id 和 state_lookup 以及美国五十个州的列表。
我们将不胜感激任何可以提供的帮助。
【问题讨论】:
-
你能缩短这个来解决问题吗?很难理解您的要求。
-
当然,我遇到的困难是显示字段“已故”的值,该字段与 yesno 表的 id 相关联,但也显示其他值以更新它。因此,如果“已故”的值为 1,并且 yesno 表中对应的 id 为 1,那么在更新表单上,我想显示是,但有一个下拉菜单显示其他选项,以防需要更改做出来。 @dlporter98
-
问题是我在contacts表的三个字段中使用了yesno表值,所以当我尝试使用我在网上找到的单字段解决方案时会导致错误。 @dlporter98
标签: php mysql forms pdo updates