0

在过去的 4 个小时里,我一直在研究这个问题,一个又一个问题。现在我终于解决了大部分问题,但我似乎无法解决最后的问题。

问题:我必须向学生发送电子邮件(电子邮件存储在数据库中)。在电子邮件中必须有一个带有列表项的无序列表。那部分是简单的部分(html 电子邮件)。我现在面临的问题是我想获取表单的实际名称,而不是值,因为值只是

价值=“1” 价值=“2”

这不会为学生提供关于表格是什么的太多信息。

这些是我的输入字段:

<label id="form"><input type="checkbox" name="form[]" value="3" >DECSP</label>
<label id="form"><input type="checkbox" name="form[]" value="4" >DESNAP</label>

如果您再次注意到该值只是一个数字,我想实际获取 DESCP 和 DESNAP 表单的名称

这是我尝试过的:

$body .= '<ul>';

$forms = $this->input->post('form'); // The check boxes 
$dbforms = $this->queue_model->first10() + $this->queue_model->elev9() + $this->queue_model->twenty_5() + $this->queue_model->twen8thir7() + $this->queue_model->checklists(); // Here I take the forms from the database and combine the arrays


$givenforms = array_intersect_assoc($dbforms, $forms); // Here I do an intersect where form_id matches the value

foreach ( $givenforms as $key => $value) { // If a match is good then give me the form_name
$body .= '<li>' . $value . '</li>';
}

$body .= '</ul>';

我很困惑从这里去哪里。希望大家理解。

我唯一能想到的就是做一个

前锋

遍历在复选框中选中的所有表单,然后在查询中

select * forms where form_id = (检查了什么表单)

然后

返回

表单的实际名称。

但同样,我不知道这是否是一个适当的解决方案。提前感谢你们提供的任何信息。

编辑 1:

复选框必须是一个数组,以便我可以将学生收到的表格存储在数据库中。看看我的另一个问题。

4

3 回答 3

1

PHP 无法知道与给定输入字段关联的文本是什么。您从客户端收到的只是一个键/值对(键是输入字段的名称部分,值是值部分)。

正如您所指出的,您可以再次查询数据库并获取相应的名称。

或者,您可以找到一些其他创造性的方法来传递名称。如:

  • 创建一个隐藏的输入字段,其中包含一个数组的字符串表示形式,其中包含所有输入字段的键/名称对。

  • 您可以使用一些 JS 来使用所选输入字段的名称更新隐藏的输入字段

  • name="hiddenInput_3"使用和为每个输入字段设置一个隐藏的输入字段value="DECSP"。现在您可以将输入字段的值与隐藏输入字段的名称相关联,以获取 PHP 端的名称。

警告:这些只是想法,我建议您不要执行上述任何操作,因为您通过客户端传递数据,它们很容易被更改。最好的方法当然是再次查询数据库或在会话中存储一些输入数组以供以后使用。

于 2013-04-10T22:52:11.687 回答
0

您需要在这里更改一些内容:

<label for="DECSP">DECSP</label><input type="checkbox" name="DECSP" value="3" />

在php中:

$value = $_POST['DECSP'];
于 2013-04-10T22:42:14.037 回答
0

好吧,这工作得很好,而且速度惊人!我什至没有注意到等待时间,所以感谢上帝。

任何其他想要做类似事情的人的代码:

输入字段:

<label id="form"><input type="checkbox" name="form[]" value="4" >DESNAP</label> // Yes I know id should be unique I will change that class asap!

            ...............................................
            $body .= '<ul>';

            foreach ($this->input->post('form') as $form_id) {
                $forms[] = $this->queue_model->getform($form_id);
            }

            foreach ($forms as $givenform) {
                $body .= '<li>' . $givenform . '</li>';
            }

            $body .= '</ul>';
           ............................
           $this->email->message($body);

和完成的结果:

在此处输入图像描述

于 2013-04-10T23:05:57.923 回答