我已在网上搜索了几个小时,我无法找到原因,如果它在表单中正确显示为什么它不能正确保存到mysql数据库?
在我的表单上,我有一个下拉列表,显示学生姓名,我使用以下代码获取下拉列表的名字和姓氏:
<?php
$stud_sql = "SELECT CONCAT (First_name,' ', Last_name) AS fullname FROM students";
$stud_results = mysqli_query($db_conx, $stud_sql);
echo "<select name='fullname'>";
while ($row = mysqli_fetch_array($stud_results, MYSQLI_ASSOC)){
$fullname = $row['fullname'];
echo "<option value=".$row['fullname'].">" . $row['fullname'] . "</option>";
}
echo "</select>";
?>
表单上的下拉列表显示名字姓氏完美,但是当我尝试发布到我的mysql数据库时,它只保存名字而不是两者名称?
以下是发布到数据库的代码:
if (isset($_POST['fullname']) && ($_POST['fullname'] !='')){
$studentname = $_POST['fullname'];
if (empty($studentname))
{
$errors[] = "Missing student name.";
}
if (count($errors) > 0)
{
//there were validation errors, prepare error message
$response = "<span style=\"color:red;\">";
$response .= "the following errors occured:\n";
$response .= "<ul>";
$response .= '<li>' .implode('</li><li>', $errors) . '</li>';
$response .= "</ul>\n";
$response .= "</span>\n";
}
else
{
//No validation errors, save the dat to database
$studentname = mysqli_real_escape_string($db_conx, $studentname);
$sql = "INSERT INTO incidentform (`studentname`) value ('$studentname')";
$query = mysqli_query($db_conx, $sql);
所以只是为了说明concat会显示例如funky monkey但只有funky会被保存到数据库中。
ok marc B建议这些更改将全名保存到数据库,但现在只在下拉列表中显示1个名称?
Name of Student:
<select name='fullname'>
<option value="$id"><?php echo $fullname; ?></option>
</select>
and
$stud_sql = "SELECT id, CONCAT (First_name,' ', Last_name) AS fullname FROM students";
$stud_results = mysqli_query($db_conx, $stud_sql);
while ($row = mysqli_fetch_array($stud_results, MYSQLI_ASSOC)){
$fullname = $row['fullname'];
}
关于我如何获得完整名单的任何建议?
答案 0 :(得分:0)
看起来您没有正确使用数据库。你应该为学生选择一个ID,以及他们的名字,例如
SELECT id, CONCAT(first_name, ' ', last_name)
FROM students
然后使用
<option value="$id">$fullname</option>
在您的表单中。
提交后,您将$ id值插入您的eventsform,现在您已根据该公共ID字段在事件与学生之间建立了链接。你的系统基本上会搞砸任何碰巧分享名字的学生。例如“John Smith”(身份#42)被拘留,但您只在事件报告中存储“John Smith”。现在John Smith(#37)和John Smith(#203)也陷入困境。
答案 1 :(得分:-1)
您正在尝试插入包含全名的“studentname”字段,但您可以从“First_name”和“Last_name”中检索它。您可以在右侧字段中插入名字和姓氏(我建议使用),也可以在字段中插入全名。
编辑 - 看起来像某人正在玩得很开心,直接低估答案,长大。
答案 2 :(得分:-1)
您有HTML错误。
在这一行
"<option value=".$row['fullname'].">"
您需要在$row['fullnane']
....
"<option value='".$row['fullname']."'>"