过去4个小时我一直在研究这个问题。现在我终于结束了我的大多数问题,我似乎无法找到最终问题的解决方案。
问题:我必须向学生发送电子邮件(电子邮件存储在数据库中)。在电子邮件中,必须有一个包含列表项的无序列表。那部分是简单的部分(html电子邮件)。我现在面临的问题是我想获取表单的实际名称,而不是值,因为值只是
value =“1”value =“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
表单的NAME这就是我的尝试:
$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>';
我很困惑从哪里开始。希望你们明白。
我唯一能想到的就是做一个
的foreach
遍历所有在复选框中选中的表单,然后在查询中
选择*表格,其中form_id =(检查了什么形式)
然后
返回
表单的实际名称。
但同样,我不知道这是否是一个合适的解决方案。提前感谢您传递的任何信息。
修改1:
复选框必须是一个数组,以便我可以存储在形成学生的数据库中。看看我的other question.
答案 0 :(得分:1)
PHP无法知道与给定输入字段关联的文本内容。您从客户端收到的所有内容都是一个键/值对(键是输入字段的名称部分,值是值部分。)
正如您所指出的,您可以再次查询数据库并获取相应的名称。
或者,您可以找到其他一些传递名称的创造性方法。如:
创建一个隐藏的输入字段,其中包含数组的字符串表示形式,其中包含所有输入字段的键/名称对。
您可以使用一些JS来更新隐藏的输入字段,其中包含所选输入字段的名称
为name="hiddenInput_3"
和value="DECSP"
的每个输入字段设置一个隐藏的输入字段。现在,您可以将输入字段的值与隐藏输入字段的名称相关联,以获取PHP端的名称。
警告:这些只是想法,我建议不要做任何上述操作,因为您通过客户端传递数据,在那里可以轻松地更改数据。最好的方法当然是再次查询db或在会话中存储一些输入数组供以后使用。
答案 1 :(得分:0)
你需要在这里改变一些事情:
<label for="DECSP">DECSP</label><input type="checkbox" name="DECSP" value="3" />
在php中:
$value = $_POST['DECSP'];
答案 2 :(得分: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);
和完成的结果: