Я разрабатываю поисковую систему, основанную на курсе Мудрый, Субъект, вводя ключевое слово или вопрос. Здесь я запрашиваю базу данных на основе поиска по 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> "; } } } ?>
Я вызываю следующую функцию addQuestion (), когда я нажимаю ссылку Add to Question Bank.
<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>
Сценарий выше показывает окно подтверждения, когда я нажимаю кнопку «Мой вопрос». После подтверждения я хочу вставить свой вопрос в новую таблицу в базе данных и отобразить сообщение «Вопрос добавлено» перед вопросом навсегда, поскольку я знаю, что могу 't писать PHP внутри функции JQuery Любая помощь может быть оценена.
Вы можете достичь этого, включив ajax. поместите код ajax, который может выглядеть следующим образом:
if(conf){ $.ajax({ type: "POST", url: "$$phpfilepath", data: {param:'$$value'}, success: function(data) { // do the message display code } }); }
Не забудьте включить ссылку jquery cdn в тег заголовка страницы html.
вам необходимо отправить запрос ajax. вам нужно отправить его либо по почте, либо получить метод в php-скрипт, который вернет json, чтобы вы могли быть обновлены на странице с результатами. в приведенном выше ответе приведен пример сценария ajax, отправленный с помощью метода post: данные должны быть выделены, если вы отправляете их через форму или массив.
это должно помочь вам http://www.w3schools.com/php/php_ajax_database.asp https://api.jquery.com/serialize/
Onclick – вам нужно сделать это с помощью ajax. Таким образом, в основном вам нужен PHP плюс javascript. Вы можете использовать JQuery аналогичной JS-библиотеки для легкой поддержки 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 параметр этой функции сохранения, который должен захватить значение из ввода html с идентификатором «title». На этой странице, где есть html, вам нужно включить упомянутую jquery (или аналогичную) библиотеку, а также включить кусок функции javascript для генерации запроса ajax, который здесь называется «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>
Когда будет выполняться функция javascript, которую вы назвали save (), она отправит запрос POST в ваш pathpath / yourfile.php
Там вы можете легко получить свои данные POST по адресу yourpath / yourfile.php:
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) }