我正在开发一种基于课程明智的问题搜索引擎,主题明智的是输入关键字或问题。
在这里,我根据针对3个表table_one
,table_two
和table_three
的搜索字词查询数据库。代码如下
<?php
if(isset($_GET['submit']))
{
$query = $_GET['query'];
$query = htmlspecialchars($query);
$query = mysqli_escape_string($link,$query);
$searchTerms = explode(' ', $query);
$searchTermBits = array();
foreach ($searchTerms as $term) {
$term = trim($term);
if (!empty($term)) {
$searchTermBits[] = "question LIKE '%$term%'";
}
}
$subject_id = $_GET['subject'];
$course_id = $_GET['course'];
$min_length = 1;
if(strlen($query) >= $min_length)
{
$res = "SELECT id,course_id,subject_id,question,option_a,option_b,option_c,option_d,option_e,correct_ans,fmge_year,contributor FROM table_one
WHERE (".implode(' OR ', $searchTermBits).") AND (`subject_id` LIKE '%".$subject_id."%') AND (`course_id` LIKE '%".$course_id."%')
UNION ALL
SELECT id,course_id,subject_id,question,option_a,option_b,option_c,option_d,option_e,correct_ans,fmge_year,contributor FROM table_two
WHERE (".implode(' OR ', $searchTermBits).") AND (`subject_id` LIKE '%".$subject_id."%') AND (`course_id` LIKE '%".$course_id."%')
UNION ALL
SELECT id,course_id,subject_id,question,option_a,option_b,option_c,option_d,option_e,correct_ans,fmge_year,contributor FROM table_three
WHERE (".implode(' OR ', $searchTermBits).") AND (`subject_id` LIKE '%".$subject_id."%') AND (`course_id` LIKE '%".$course_id."%')";
$raw_results = mysqli_query($link,$res) or die (mysqli_error());
if(mysqli_num_rows($raw_results) > 0)
{
echo "<h3 style='text-align:center;color:#3366CC'><span style='color:#000000'>Search Results For : </span> $query </h3>";
while($results = mysqli_fetch_array($raw_results))
{
echo "<div class='content'>";
echo"<h4 id=".$results['id'].">" .preg_replace("/".preg_quote($query, "/")."/i", "<span class=\"highlight\">$query</span>", $results['question']) . "</h4>";
echo"<p id=".$results['id']."><span style='padding-left:20px'>option A : " .$results['option_a']."</span> <br><span style='padding-left:20px'> option B : ".$results['option_b']."</span><br/><span style='padding-left:20px'>option C : ".$results['option_c'].
"</span><br><span style='padding-left:20px'>option D : ".$results['option_d']."</span><br><span style='padding-left:20px'> option E : ".$results['option_e']."</span><br><span style='color:#253E66;font-weight:bold;padding-left:20px'>Correct Ans : ".$results['correct_ans'].
"</span><br><span style='padding-left:20px'>Question Year : ".$results['question_year']."</span><br><span style='padding-left:20px'>Contributor : ".$results['contributor']."</span><br />
<a onclick=addQuestion('".$results['id']."') href='#'><span class='button'>Add to Question Bank</span></a></p>";
echo "</div>";
}
}
else{
echo "<span style='height:21px;syle=background-color: #F1F0FF;font-size:25px;color:#CC0000'>Your search - $query - did not match any queries.</span> ";
}
}
}
?>
当我点击Add to Question Bank链接时,我正在调用以下addQuestion()函数。
<script>
function addQuestion(val)
{
var conf=confirm("Are you sure you want to add this question to Question Bank")
if(conf){
//Here I Want some code to update my database.
}
}
</script>
单击按钮时上面的脚本显示确认框, 我的问题是, 确认之后我想将我的问题插入数据库中的新表并在问题前面显示“问题添加”之类的消息,因为我知道我无法在Jquery函数中编写PHP任何帮助可能会有所帮助。
答案 0 :(得分:0)
您可以通过包含ajax来实现此目的。 把ajax代码看起来如下所示:
if(conf){
$.ajax({
type: "POST",
url: "$$phpfilepath",
data: {param:'$$value'},
success: function(data) {
// do the message display code
}
});
}
不要忘记在html页面的head标签中包含jquery cdn链接。
答案 1 :(得分:0)
您需要发送ajax请求。 你需要通过post或get方法将它发送到将返回json的php脚本,这样你就可以在页面上更新结果。 上面的答案有一个使用post方法发送的示例ajax脚本: 如果您通过表单或数组提交数据,则需要进行数据处理。
这应该对你有所帮助 http://www.w3schools.com/php/php_ajax_database.asp https://api.jquery.com/serialize/答案 2 :(得分:0)
Onclick - 你需要用ajax做到这一点。基本上,你需要PHP和javascript参与。您可以使用类似JS库的Jquery来轻松支持ajax。
以jquery库版本1.11.2为例,如何包含:
<head>
<script src="jquery-1.11.2.min.js"></script>
</head>
例如,如果这是您要保存的输入字段,则按钮用于提交:
<input id="title" name="title" />
<input type="submit" value="Save">
将其更改为按钮并为其提供javascript save()函数(可以是您提供的任何名称)。
<input type="button" onclick="save($('#title').val());" value="Save">
在这个例子中,我向该保存函数添加了1个参数,该函数应该从id为“title”的html输入中获取值。 在这个页面上,那个html是,你需要包含提到的jquery(或类似的)库,还包括一段用于生成ajax请求的javascript函数,在这里命名为“save”。
如果您包含jquery库,则必须调用javascript函数以在标记之前保存数据:
<script type"text/javascript">
function save(){
$.ajax({
type: "POST",
url: "yourpath/yourfile.php",
data: {title: title},
success: function(data) {
alert("Ajax save executed!");
}
});
}
</script>
当你命名为save()的javascript函数执行时,它会向你的path / yourfile.php发送POST请求
在那里,您可以通过yourpath / yourfile.php轻松获取POST数据:
if(isset($_POST['title'])){
// do something with POST data, save in db.. (make sure to include security when inserting to db)
}
如果您想通过GET发送,可以轻松地将 POST 替换为 GET :
function save(){
$.ajax({
type: "GET",
以及你写的.php文件:
if(isset($_GET['title'])){
// do something with POST data, save in db.. (make sure to include security when inserting to db)
}