我是PHP的初学者。现在,我要设置发送电子邮件。但不幸的是,我在某些字段中使用“ ID”,并显示“ Name”。 例如:
<div class="form-group">
<label for="contact_departement_id"><?php echo $lang['contact_departement_id'] ?></label>
<select class="form-control" name="contact_departement_id" id="contact_departement_id">
<option value="x"><?php echo $lang['chooseone'] ?></option>
<?php foreach($listDepartement['datas'] as $departement): ?>
<option
<?php
echo ($state == 'edit') && ($departement->departement_id == $datas->contact_departement_id) ? 'selected="selected"': '';
?>
value="<?php echo $departement->departement_id ?>">
<?php echo $departement->departement_name ?>
</option>
<?php endforeach ?>
</select>
</div>
然后我设置了电子邮件
$contact_name = $_POST['contact_name'];
$contact_ext = $_POST['contact_ext'];
$contact_direktorat_id = $_POST['contact_direktorat_id'];
$contact_departement_id = $_POST['contact_departement_id'];
$contact_lokasi_id = $_POST['contact_lokasi_id'];
//$mail->SMTPSecure = 'tls'; // Enable encryption, 'ssl' also accepted
$message = file_get_contents('mail.html');
$message = str_replace('%contact_name%', $contact_name, $message);
$message = str_replace('%contact_ext%', $contact_ext, $message);
$message = str_replace('%contact_direktorat_id%', $contact_direktorat_id, $message);
$message = str_replace('%contact_departement_id%', $contact_departement_id, $message);
$message = str_replace('%contact_lokasi_id%', $contact_lokasi_id, $message);
输出:
Dear All,
New Extention has been added. Here are details:
Contact Name: test
Ext: 123
Directorate: 2
Department: 2
Location: 4
我需要一些指导以显示“名称”而不是“ ID”
答案 0 :(得分:0)
该表单提交option
元素的value属性中的内容,而不是标签的内容。您需要提供名称映射,例如:
$departments = [
'1' => 'Sales',
'2' => 'Support',
'3' => 'Accounts',
];
您应该在使用提交的值之前对其进行验证(因为客户端可能会提交垃圾邮件,黑客攻击等),然后通过数组将它们映射,例如:
if (!array_key_exists($_POST['contact_direktorat_id'], $departments)) {
$contact_direktorat_name = $departments[$_POST['contact_direktorat_id']];
} else {
$contact_direktorat_name = 'Unknown';
}
用所需的许多重复此操作,根据需要定义任意数量的数组,或者在数据库中查找值以验证它们而不是使用数组(尽管请确保不要对SQL注入攻击开放自己) -您有大致的想法。