使用onclick函数插入数据库

时间:2015-04-06 12:12:12

标签: php jquery

我正在开发一种基于课程明智的问题搜索引擎,主题明智的是输入关键字或问题。 在这里,我根据针对3个表table_onetable_twotable_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任何帮助可能会有所帮助。

3 个答案:

答案 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) 
}