使用数据列表分隔姓名和姓氏
Separation between name and surname using datalists
我正在使用 datalist 来存储我从 MySQL 数据库 table.
中检索到的所有姓名和姓氏
当有人输入导师的姓名 和 姓氏并单击 "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、姓名、姓氏列的 table 中检索 ID?
John Smith:简单,第一个词是名字,第二个词是姓氏
玛丽珍面团:现在怎么办?
我想添加一个逗号来分隔两个名字,但这不是很时尚。
另一种选择是在我的数据库中添加一个列,该列在一条记录中包含两个名字,但是当需要添加新导师时,这会很麻烦。
在将数据分配到元素之前执行此操作
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>
很抱歉耽误了时间,@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();">
所以基本上我只添加了一个data-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,没有分开任何名字。我也 post 它到 php 页面 ajax,但这与问题无关。
再次感谢提供帮助的人。
我正在使用 datalist 来存储我从 MySQL 数据库 table.
中检索到的所有姓名和姓氏当有人输入导师的姓名 和 姓氏并单击 "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、姓名、姓氏列的 table 中检索 ID?
John Smith:简单,第一个词是名字,第二个词是姓氏
玛丽珍面团:现在怎么办?
我想添加一个逗号来分隔两个名字,但这不是很时尚。
另一种选择是在我的数据库中添加一个列,该列在一条记录中包含两个名字,但是当需要添加新导师时,这会很麻烦。
在将数据分配到元素之前执行此操作
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>
很抱歉耽误了时间,@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();">
所以基本上我只添加了一个data-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,没有分开任何名字。我也 post 它到 php 页面 ajax,但这与问题无关。
再次感谢提供帮助的人。