Autor Zpráva
mleassy
Profil *
zdravím všechny, potřebuji poradit ohledně autocomplete. tady na diskuze.jakpsaweb.cz je už mnoho příspěvku ohledně auto... ale chci se zeptat, jestli nelze nějak inkludovat do pole array soubor 'txt' s výrazy. Mám script (php) který mi z databáze MySql uloží všechna klíčková slova a nadpisi do souboru.txt v tomto formátu:

"nadpis_clanku"=>"klicove_slovo","nadpis_clanku2"=>"klicove_slovo2", ...

dlouho jsem kombinoval a zkoušel (fileread, file_get_contents, apd) jak to provést, ale vždy bez úspěšného výsledku.

Ve výsledku mi jde vlastně o to, aby se výrazy, které se později našeptávají v poli pro hledání načítaly z databáze jako nadpisy článku.

dík za jakoukoli radu krom hledej na google.com apd :)
jenikkozak
Profil
mleassy:
dlouho jsem kombinoval a zkoušel (fileread, file_get_contents, apd) jak to provést, ale vždy bez úspěšného výsledku.
Jaké server hlásil chyby nebo jak se neúspěch projevoval?
mleassy
Profil *
no když jsem zkoušel jestli našeptávač vykazuje funkčnost tak to prostě jednoduše nešlo :) jakmile jsem do pole v proměnné $items vložil ručně obsah soubor.txt vše fungovalo..

správně: $items = array("nadpis_clanku"=>"klicove_slovo","nadpis_clanku2"=>"klicove_slovo2");

špatně: $items = array(readfile($file));
špatně: $items = array(file_get_contents($file));
špatně: $items = array(include($file));
1Pupik1989
Profil
Nebude lepší tahat záznamy přímo z databáze namísto souboru?
mleassy
Profil *
no tak na to jsem za celou noc nepřišel .... zkoušel jsem rozjet spoustu scriptů a opravdu řadu hodin, ale co se týče mysql, nerozjel jsem nic :(
abc
Profil
Nějak takto z DB:
$sql = "SELECT nadpis, klicove_slovo FROM tabulka";
$result = mysql_result($sql);
$items = array();
while(list($nadpis, $klic) = mysql_fetch_array($result)){
$items[$nadpis] = $klic;
}
mleassy
Profil *
tohle je javscript:

    $(function() {
        var cache = {};
        $( "#birds" ).autocomplete({
            minLength: 2,
            source: function( request, response ) {
                var term = request.term;
                if ( term in cache ) {
                    response( cache[ term ] );
                    return;
                }

                $.getJSON( "search.php", request, function( data, status, xhr ) {
                    cache[ term ] = data;
                    response( data );
                });
            }
        });
    }); 
</script> 

a search.php:

<?php

sleep( 1 );
// no term passed - just exit early with no response
if (empty($_GET['term'])) exit ;
$q = strtolower($_GET["term"]);
// remove slashes if they were magically added
if (get_magic_quotes_gpc()) $q = stripslashes($q);

$items = array("House Finch"=>"Carpodacus mexicanus",
"Green Heron"=>"Butorides virescens",
"Solitary Sandpiper"=>"Tringa solitaria",
"Heuglin's Gull"=>"Larus heuglini"
);


$result = array();
foreach ($items as $key=>$value) {
    if (strpos(strtolower($key), $q) !== false) {
        array_push($result, array("id"=>$value, "label"=>$key, "value" => strip_tags($key)));
    }
    if (count($result) > 11)
        break;
}

// json_encode is available in PHP 5.2 and above, or you can install a PECL module in earlier versions
echo json_encode($result);

?>

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: