www.webdeveloper.com
Results 1 to 5 of 5

Thread: Live Keyword Search

  1. #1
    Join Date
    Apr 2013
    Posts
    23

    Live Keyword Search

    Good morning programmers,

    I'm looking to create a live keyword search using PHP, MySQL, and Javascript.

    I have a pagination script which works fine.

    How would one create a form that allows users to fill in a form and results are produced after pushing send without refreshing the page?

    Is this possible to do with PHP alone, or would I need to use something like Javascript and / or jQuery?

    Thanks

  2. #2
    Join Date
    Dec 2012
    Posts
    264
    You'll need to use some Ajax to search for keywords asynchronously (without reloading the page). You need to create a separate PHP script to process the Ajax request sent from JavaScript. Here's a quick example.

    HTML Code:
    <form id="keywordForm">
        <input id="keyword" type="text"/>
        <input type="submit" value="Search"/>
    </form>
    
    <script>
        var form = document.getElementById('keywordForm');
        form.addEventListener('submit',function(e) {
            var search = form.keyword.value;
            var xhr = new XMLHttpRequest();
            xhr.open("GET","keywordsearch.php?search="+search,true);
            xhr.send();
            xhr.onreadystatechange = function() {
                if(xhr.readyState == 4 && xhr.status == 200) {
                    var response = xhr.response;
                }
            }
            e.preventDefault();
        });
    </script>
    Then in keywordsearch.php you'd have something like this to except the search parameter sent by a GET request through Ajax then search the database for matching rows.

    PHP Code:
    if(isset($_GET['search'])) {
        
    $pdo = new PDO("mysql:host=localhost;dbname=keywordDB',$user,$pass);
        
    $query = $pdo->prepare("SELECT keyword FROM keywords WHERE keyword LIKE ?");
        
    $query->execute(array($_GET['search']."%"))
        
    $keywords = array();
        while(
    $keyword = $query->fetch()) {
            
    $keywords[] = $keyword['keyword'];
        }
        echo json_encode(
    $keywords);


  3. #3
    Join Date
    Apr 2013
    Posts
    23

    Re:

    How do you execute the AJAX function?

    Also do I need to use XML? as currently I do not

  4. #4
    Join Date
    Dec 2012
    Posts
    264
    This part of the example I gave is the AJAX request

    HTML Code:
            var xhr = new XMLHttpRequest();
            xhr.open("GET","keywordsearch.php?search="+search,true);
            xhr.send();
            xhr.onreadystatechange = function() {
                if(xhr.readyState == 4 && xhr.status == 200) {
                    var response = xhr.response;
                }
            }
    That opens a request to a page called keywordsearch.php, sending through a keyword to search for as a GET request, and then waits for a response from that page which is then assigned to the "response" variable.

    The short PHP script I just made to process the request searches a database table for the keyword and then returns the results as a JSON array which can then be read by JavaScript.

  5. #5
    Join Date
    Apr 2013
    Posts
    23
    I appreciate the help but I don't know how to use the JSON command. How do you turn the JSON array into something in PHP / HTML?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center

"

"

X vBulletin 4.2.2 Debug Information

  • Page Generation 0.17672 seconds
  • Memory Usage 2,881KB
  • Queries Executed 15 (?)
More Information
Template Usage (34):
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_global_above_footer
  • (1)ad_global_below_navbar
  • (1)ad_global_header1
  • (1)ad_global_header2
  • (1)ad_navbar_below
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)ad_thread_first_post_content
  • (1)ad_thread_last_post_content
  • (2)bbcode_html
  • (1)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)headinclude_bottom
  • (5)memberaction_dropdown
  • (1)navbar
  • (4)navbar_link
  • (1)navbar_moderation
  • (1)navbar_noticebit
  • (1)navbar_tabs
  • (2)option
  • (5)postbit
  • (5)postbit_onlinestatus
  • (5)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available (6):
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files (26):
  • ./showthread.php
  • ./global.php
  • ./includes/class_bootstrap.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/functions_navigation.php
  • ./includes/class_friendly_url.php
  • ./includes/class_hook.php
  • ./includes/class_bootstrap_framework.php
  • ./vb/vb.php
  • ./vb/phrase.php
  • ./includes/functions_facebook.php
  • ./includes/functions_calendar.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_notice.php
  • ./packages/vbattach/attach.php
  • ./vb/types.php
  • ./vb/cache.php
  • ./vb/cache/db.php
  • ./vb/cache/observer/db.php
  • ./vb/cache/observer.php 

Hooks Called (72):
  • init_startup
  • friendlyurl_resolve_class
  • init_startup_session_setup_start
  • database_pre_fetch_array
  • database_post_fetch_array
  • init_startup_session_setup_complete
  • global_bootstrap_init_start
  • global_bootstrap_init_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • load_show_variables
  • load_forum_show_variables
  • global_state_check
  • global_bootstrap_complete
  • global_start
  • style_fetch
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • strip_bbcode
  • friendlyurl_clean_fragment
  • friendlyurl_geturl
  • forumjump
  • cache_templates
  • cache_templates_process
  • template_register_var
  • template_render_output
  • fetch_template_start
  • fetch_template_complete
  • parse_templates
  • fetch_musername
  • notices_check_start
  • notices_noticebit
  • process_templates_complete
  • friendlyurl_redirect_canonical
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • memberaction_dropdown
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • build_navigation_data
  • build_navigation_array
  • check_navigation_permission
  • process_navigation_links_start
  • process_navigation_links_complete
  • set_navigation_menu_element
  • build_navigation_menudata
  • build_navigation_listdata
  • build_navigation_list
  • set_navigation_tab_main
  • set_navigation_tab_fallback
  • navigation_tab_complete
  • fb_like_button
  • showthread_complete
  • page_templates