我使用datalist来存储我从MySQL数据库表中检索的所有名称和姓氏。
当有人输入导师的姓名和姓氏并点击" show tutor"时,会调用showTutor()。
<input list="tutorData" name="tutors" id="tutorToShow">
<datalist id="tutorData">
<?php
$sql = "SELECT name, surname FROM tutors ORDER BY surname ASC";
if (!$res = $link->query($sql)) {
trigger_error('error in query ' . $link->error);
} else {
while ($row = $res->fetch_assoc()) {
$name = $row['surname'];
$sName = $row['name'];
?>
<option value="<?php echo "$sName $name" ?>" >
<?php
}
}
?>
</datalist>
<input type="button" value="Weergeven" onclick="showTutor();">
我的数据专家已经填满并完美运作。现在:当调用showTutor时,单击按钮时:
function showTutor(){
var tut = document.getElementById("tutorToShow").value;
}
这给了我像John Smith或Mary Jane Dough这样的东西。
问题是什么,当我用ajax重新加载显示的导师div时,我需要从数据库中检索该导师的ID。
所以我真正需要的是这个SQL:
SELECT ID
FROM tutors
WHERE name LIKE '$name%'
AND surname LIKE '$surname%'
现在我只需要将名称分开。
换句话说,如何在不知道名称或姓氏之间的分隔的情况下从具有列ID,名称,姓氏的表中检索ID?
约翰史密斯:简单,第一个词是姓名,第二个词是姓氏
Mary Jane Dough:现在是什么?
我想添加一个逗号分隔这两个名字的逗号,但那不是很时尚。
另一个选择是在我的数据库中添加一个列,在一个记录中同时包含两个名称,但是当需要添加新的教师时,这是一个麻烦。
答案 0 :(得分:0)
在将数据分配到元素
之前执行此操作if (strpos($sName, ' ') != false) {
// if above string position of space isn't false,
// explode the string at the space into an array of
// individual names.
$sName = explode(' ', $sName);
echo $sNames[0];
echo $sNames[1];
// you will need to look at foreach loop and counting the array length
}
试试这个。
<datalist id="tutorData">
<?php
$sql = "SELECT name, surname FROM tutors ORDER BY surname ASC";
if (!$res = $link->query($sql)) {
trigger_error('error in query ' . $link->error);
} else {
while ($row = $res->fetch_assoc()) {
$surname = $row['surname'];
$first_names = $row['name'];
if (strpos($first_names, ' ') != false) {
/*
if above string position of space isn't false,
explode the string at the space into an array of
individual names.
*/
$first_name = explode(' ', $first_names); // EG: Paul John
$name1 = $first_name[0]; // Paul
$name2 = $first_name[1]; // John
/*
you will need to look at foreach loop and counting
the array length
*/
}
?>
<option value="<?php echo $name1 . ' ' . $name2 . ' ' . $surname" ?>" >
<?php
}
}
?>
</datalist>
答案 1 :(得分:0)
对不起延迟,@ Oli几个星期前帮我聊天。
<input list="tutorData" name="tutors" id="tutorToShow">
<datalist id="tutorData">
<?php
$sql = "SELECT name, surname, id FROM tutors ORDER BY surname ASC";
if (!$res = $link->query($sql)) {
trigger_error('error in query ' . $link->error);
} else {
while ($row = $res->fetch_assoc()) {
$name = $row['surname'];
$sName = $row['name'];
$id = $row['id'];
?>
<option value="<?php echo "$sName $name" ?>" data-id="<?php echo $id; ?>">
<?php
}
}
?>
</datalist>
<input type="button" value="Show" onclick="showTutor();">
所以基本上我只添加了一个数据ID,然后我写了这个javascript:
<script>
function showTutor() {
var tut = document.getElementById("tutorToShow").value;
var list = document.getElementById("tutorData");
var length = list.options.length;
var id;
for (var i = 0; i < length; i++) {
var eachTutor = list.options[i].value.toLowerCase();
if (tut === eachTutor) {
id = list.options[i].getAttribute('data-id');
}
}
}
</script>
我现在有导师的id,没有分隔任何名字。我也将它发布到带有ajax的php页面,但这与问题无关。
再次感谢帮助过的人。