Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP/MySQL बेहतर उपयोगकर्ता खोज

मैंने टिप्पणियों में उल्लेख किया है कि जावास्क्रिप्ट टाइपहेड लाइब्रेरी आपके लिए एक अच्छा विकल्प हो सकती है। मैंने ट्विटर की टाइपहेड लाइब्रेरी और ब्लडहाउंड इंजन को काफी मजबूत पाया है। दुर्भाग्य से, दस्तावेज़ीकरण एक मिश्रित बैग है:जब तक आपको जो चाहिए वह उनके उदाहरणों के समान है, आप सुनहरे हैं, लेकिन कुछ विवरण (उदाहरण के लिए, टोकन के स्पष्टीकरण) गायब हैं।

टाइपहेड के कई प्रश्नों में से एक में यहाँ स्टैक ओवरफ़्लो पर, @JensAKoch कहते हैं:

स्पष्ट रूप से, एक संक्षिप्त जाँच में, कांटा पर प्रलेखन थोड़ा बेहतर दिखता है, अगर और कुछ नहीं। आप इसे देखना चाहेंगे।

सर्वर-साइड कोड:

PHP के पुराने संस्करण का उपयोग करने की सभी चेतावनियाँ लागू होती हैं। मैं PHP 5 के साथ पीडीओ का उपयोग करने के लिए पुन:टूलिंग की अत्यधिक अनुशंसा करता हूं, लेकिन यह उदाहरण अनुरोध के अनुसार PHP 4 का उपयोग करता है।

पूरी तरह से परीक्षण न किया गया PHP कोड। json_encode() बेहतर होगा, लेकिन यह PHP 5 तक दिखाई नहीं देता है। आपका समापन बिंदु कुछ इस तरह होगा:

headers("Content-Type: application/json");
$results = mysql_query(
   "SELECT ID,StageName,AKA1,AKA2,LegalName,SoundEx FROM performers"
);

$fields = array("ID","StageName","AKA1","AKA2","LegalName","SoundEx");

echo "[";

$first =  true;
while ($row = mysql_fetch_array($results)) {
    ($first) ? $first = false : echo ',';

    echo "\n\t,{";
    foreach($fields as $f) {
        echo "\n\t\t\"{$f}\": \"".$row[$f]."\"";
    }
    echo "\n\t}";
}
echo "]";

क्लाइंट-साइड कोड:

यह उदाहरण स्थिर JSON फ़ाइल का उपयोग करता है सभी परिणामों के लिए एक आधार के रूप में। यदि आप अपने परिणाम सेट को 1,000 से अधिक प्रविष्टियों में जाने का अनुमान लगाते हैं, तो आपको remote ब्लडहाउंड का विकल्प . इसके लिए आपको क्वेरी को संभालने के लिए कुछ कस्टम PHP कोड लिखने की आवश्यकता होगी, लेकिन यह काफी हद तक अंतिम बिंदु के समान दिखाई देगा जो सभी (या कम से कम आपके सबसे सामान्य) डेटा को डंप करता है।

var actors = new Bloodhound({
  // Each row is an object, not a single string, so we have to modify the
  // default datum tokenizer. Pass in the list of object fields to be
  // searchable.
  datumTokenizer: Bloodhound.tokenizers.obj.nonword(
    'StageName','AKA1','AKA2','LegalName','SoundEx'
  ),
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  // URL points to a json file that contains an array of actor JSON objects
  // Visit the link to see details 
  prefetch: 'https://gist.githubusercontent.com/tag/81e4450de8eca805f436b72e6d7d1274/raw/792b3376f63f89d86e10e78d387109f0ad7903fd/dummy_actors.json'
});

// passing in `null` for the `options` arguments will result in the default
// options being used
$('#prefetch .typeahead').typeahead(
    {
        highlight: true
    },
   {
        name: 'actors',
        source: actors,
        templates: {
        empty: "<div class=\"empty-message\">No matches found.</div>",
        
        // This is simply a function that accepts an object.
        // You may wish to consider Handlebars instead.
        suggestion: function(obj) {
            return '<div class="actorItem">'
                + '<span class="itemStageName">'+obj.StageName+"</span>"
                + ', <em>legally</em> <span class="itemLegalName">'+obj.LegalName+"</span>"
        }
        //suggestion: Handlebars.compile('<div><strong>{{value}}</strong> – {{year}}</div>')
      },
      display: "LegalName" // name of object key to display when selected
      // Instead of display, you can use the 'displayKey' option too:
      // displayKey: function(actor) {
      //     return actor.LegalName;
      // }
});
/* These class names can me specified in the Typeahead options hash. I use the defaults here. */
    .tt-suggestion {
        border: 1px dotted gray;
        padding: 4px;
        min-width: 100px;
    }
    .tt-cursor {
        background-color: rgb(255,253,189);
    }
    
    /* These classes are used in the suggestion template */
    .itemStageName {
        font-size: 110%;
    }
    .itemLegalName {
        font-size: 110%;
        color: rgb(51,42,206);
    }
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="https://twitter.github.io/typeahead.js/releases/latest/typeahead.bundle.js"></script>


<p>Type something here. A good search term might be 'C'.</p>
<div id="prefetch">
  <input class="typeahead" type="text" placeholder="Name">
</div>

आसानी के लिए, यहां क्लाइंट-साइड कोड का सार है। ।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP का उपयोग करके डेटाबेस में दोहराए बिना यादृच्छिक संख्या कैसे उत्पन्न करें?

  2. मैक ओएसएक्स 10.6 के साथ रेल पर रूबी के लिए mysql2 मणि ​​स्थापित करना

  3. MySQL में SLEEP () का सही तरीके से उपयोग कैसे और कब करें?

  4. पहली तालिका से सभी स्तंभों का चयन करने का बेहतर तरीका और आंतरिक तालिका में दूसरी तालिका से केवल एक स्तंभ का चयन करें

  5. PHP में Password_verify