Autor | Zpráva | ||
---|---|---|---|
slovakCZ Profil |
#1 · Zasláno: 24. 12. 2009, 02:46:50
Zdravim Vas,
resim problem s autodoplnovanim. Nejdrive uvedu zdorjove soubory a kody a ke po nich az dotaz + obrazek uplne dole. zaklad jsem si stahl z: Ukazka - vpiste neco do inputu na strance a nyni mam v kodu toto: <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript"> function lookup(inputString) { if(inputString.length == 0) { // Hide the suggestion box. $('#suggestions').hide(); $('#query').show(); $('#strankovani').show(); } else { $.post("rpc.php", {queryString: ""+inputString+""}, function(data){ if(data.length >0) { $('#suggestions').show(); $('#query').hide(); $('#strankovani').hide(); $('#autoSuggestionsList').html(data); } }); } } // lookup function fill(thisValue) { $('#inputString').val(thisValue); setTimeout("$('#suggestions').hide();", 999200); } </script> v html pote (divy kam se ma zobrazovat vysledek v kodu neuvadim, to neni tak podstatne, jde spis o princip): <form> <fieldset class="filtrovat"> <legend>Filtrovat podle:</legend> <label> <select name="option" > <option value="nick">Uživatelského jména</option> <option value="cas">Poslední přihlášení</option> </select> </label> <br> <input class="box-medium" type="text" size="30" value="" id="inputString" onkeyup="lookup(this.value);" onblur="fill();"></td></tr> </fieldset> </form> no a stranka rpc.php vypada takto: <?php // PHP5 Implementation - uses MySQLi. // mysqli('localhost', 'yourUsername', 'yourPassword', 'yourDatabase'); $db = new mysqli('localhost', 'root' ,'', 'rs'); if(!$db) { // Show error if we cannot connect. echo 'ERROR: Could not connect to the database.'; } else { // Is there a posted query string? if(isset($_POST['queryString'])) { $queryString = $db->real_escape_string($_POST['queryString']); // Is the string length greater than 0? if(strlen($queryString) >0) { // Run the query: We use LIKE '$queryString%' // The percentage sign is a wild-card, in my example of countries it works like this... // $queryString = 'Uni'; // Returned data = 'United States, United Kindom'; // YOU NEED TO ALTER THE QUERY TO MATCH YOUR DATABASE. // eg: SELECT yourColumnName FROM yourTable WHERE yourColumnName LIKE '$queryString%' LIMIT 10 $query = $db->query("SELECT * FROM users WHERE nick LIKE '%$queryString%' LIMIT 10"); if($query) { // While there are results loop through them - fetching an Object (i like PHP5 btw!). while ($result = $query ->fetch_object()) { // Format the results, im using <li> for the list, you can change it. // The onClick function fills the textbox with the result. // YOU MUST CHANGE: $result->value to $result->your_colum //echo '<li onClick="fill(\''.$result->nick.'\');">'.$result->nick.'</li>'; echo "".$result->nick.""; } } else { echo 'ERROR: There was a problem with the query.'; } } else { // Dont do anything. } // There is a queryString. } else { echo 'There should be no direct access to this script!'; } } ?> A o co se mi vlatne jedna? Kdyz se kouknete na HTML tak vidite nejaky select a nejaky input.. nyni, kdyz do inputu vlozim nejake slovo (pismeno nebo znak) tak se provede: SELECT * FROM users WHERE nick LIKE '%$queryString%' LIMIT 10 ovsem ten select tam mam proto, ze bych rad rozlisil v jakem sloupci hledat.. v mem pripade mam select: - uzivatelske jmeno (name=nick) - posledni prihlaseni (name=cas) potrebuji tedy upravit javascript tak, aby spolu s hodnotou inputu odesilal i jmeno selectu (bud nick nebo cas), ktery si pote doplnim do: SELECT * FROM users WHERE ".$OdeslanyNazevSelectu." LIKE '%$queryString%' LIMIT 10 takze vysledny PHP kod by mohl vypadat nejak takto (zmena na 11.,13.,26.radku): <?php // PHP5 Implementation - uses MySQLi. // mysqli('localhost', 'yourUsername', 'yourPassword', 'yourDatabase'); $db = new mysqli('localhost', 'root' ,'', 'rs'); if(!$db) { // Show error if we cannot connect. echo 'ERROR: Could not connect to the database.'; } else { // Is there a posted query string? if(isset($_POST['queryString']) AND isset($_POST['queryName'])) { $queryString = $db->real_escape_string($_POST['queryString']); $queryName = $db->real_escape_string($_POST['queryName']); // Is the string length greater than 0? if(strlen($queryString) >0) { // Run the query: We use LIKE '$queryString%' // The percentage sign is a wild-card, in my example of countries it works like this... // $queryString = 'Uni'; // Returned data = 'United States, United Kindom'; // YOU NEED TO ALTER THE QUERY TO MATCH YOUR DATABASE. // eg: SELECT yourColumnName FROM yourTable WHERE yourColumnName LIKE '$queryString%' LIMIT 10 $query = $db->query("SELECT * FROM users WHERE ".$queryName." LIKE '%$queryString%' LIMIT 10"); if($query) { // While there are results loop through them - fetching an Object (i like PHP5 btw!). while ($result = $query ->fetch_object()) { // Format the results, im using <li> for the list, you can change it. // The onClick function fills the textbox with the result. // YOU MUST CHANGE: $result->value to $result->your_colum //echo '<li onClick="fill(\''.$result->nick.'\');">'.$result->nick.'</li>'; echo "".$result->nick.""; } } else { echo 'ERROR: There was a problem with the query.'; } } else { // Dont do anything. } // There is a queryString. } else { echo 'There should be no direct access to this script!'; } } ?> Predem dekuji za pomoc a jeste ilustracni obrazek pro uplne pochopeni |
||
slovakCZ Profil |
#2 · Zasláno: 24. 12. 2009, 03:42:54
nejak jsem se do toho zamotal :( tady podle tohoto prikladu:
http://www.danvega.org/examples/jquery/select.htm se mi povedlo vybrat value daneho selectu.. ovsem nedokazu ho predat dal na php stranku :( |
||
slovakCZ Profil |
#3 · Zasláno: 24. 12. 2009, 03:54:44
Tak sem to vyresil, tak jednoduche to bylo :D... nemam sily to sem pridavat, jsou 4 rano, tak se jdu na chvili prostpat ;)
|
||
Časová prodleva: 14 let
|
0