Miloš Němec, osobní stránka

Vážení čtenáři, nacházíte se v dočasném archivu starých článků. Proto tu nevidíte žádnou navigaci, vyhledávání ani další prvky.

Navštivte můj nový projekt Venkohled - blog o aktivním pohybu na čerstvém vzduchu!

AJAXový našeptávač

15.12.2008 | 19 099x přečteno | 58 komentářů TiskTisk

AJAX (Asynchronous Javascript and XML) je obecné označení pro technologie vývoje interaktivních webových aplikací, které mění obsah svých stránek bez nutnosti jejich znovunačítání [Wikipedia]. AJAX je jen "marketingové" označení, ve skutečnosti se nejedná o žádnou novou technologii. Znáte-li HTML, Javascript a případně nějaký ten serverový skriptovací jazyk, máte cestu k vytváření AJAXových aplikací otevřenou.

Následující článek popisuje použití AJAXu při vytváření našeptávače, tedy textového pole, pod nímž se při psaní nabízejí položky načítané z databáze. Takový našeptávač lze vidět například na stránkách google.com, seznam.cz, idos.cz atd.

Ukázka

Funkčnost je demonstrována na ukázce našeptávače názvů knih, jejichž krátké recenze si můžete přečíst na těchto stránkách v sekci Tipy pro návštěvu knihovny. Ukázka nemá žádné praktické uplatnění, slouží jen jako příklad. Tady je:

Začněte psát text:
Začnete-li psát do textového pole, budou se vám nabízet neustále aktualizované názvy knih načítané s každým stisknutím klávesy z databáze, aniž by docházelo ke znovunačtení celé stránky.

Implementace

Výše uvedená ukázka je implementována následujícím způsobem. Formulář je jednoduchý a obsahuje pouze jednu položku:

<form>
<input type="text" id="inputText" style="width:300px" autocomplete="off"
  onKeyUp="generujNaseptavac(event);" onKeyDown="posunNaseptavac(event);"><br>
<div id="naseptavacDiv"></div>
</form>

Vlastní našeptávač je realizován jako multiple SELECT. Možností je samozřejmě víc, lze použít například tabulku (google), odstavce (seznam), odrážky (idos), atd. V takovém případě je ale třeba stylovat vzhled našeptávače při změně výběru položky. Multiple SELECT už je v tomto ohledu připraven.

Na událost onKeyUp v editačním poli je pověšeno volání javascriptové metody generujNaseptavac(event). Ta odesílá klíčový request obsahující zadaný řetězec na server. URL je název skriptu pro generování obsahu našeptávače a aktuální obsah editačního pole se předává jako parametr adresy. Odpověď zpracovává metoda processRequest(). Pokud server vrátí pouze text EMPTY, pak nebyla nalezena žádná data a našeptávač je skryt. V opačném případě se odpověď serveru (sestavený SELECT) nastaví do divu našeptávače. Na událost onKeyDownn je volána metoda posunNaseptavac(event) obhospodařující posun vybraného pole v našeptávači pomocí šipek. getResultClickHandler() reaguje na kliknutí na vybranou položku našeptávače - našeptávač je skryt.

<script type="text/javascript">
// při prvním zobrazení stránky našeptávač skryjeme
document.getElementById("naseptavacDiv").style.visibility = "hidden";
var lastSelected;

function GetKeyCode(e) {
  if (e) {
    return e.charCode ? e.charCode : e.keyCode;
  }
  else {
    return window.event.charCode ? window.event.charCode : window.event.keyCode;
  }
} 

function generujNaseptavac(e) {
  var unicode = GetKeyCode(e);
  var str = document.getElementById("inputText").value;
  if (unicode != 38 && unicode != 40 && str != lastSelected) {
    if (str != "") {
      // IE/zbytek světa
      if (window.ActiveXObject) {
      httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
      } else {
        httpRequest = new XMLHttpRequest();
      }
      var url = "naseptavacKnih.php?str=" + encodeURI(str);
      httpRequest.open("GET", url, true);     
      httpRequest.onreadystatechange= function () {processRequest(); } ;
      httpRequest.send(null);     
    }
    else {     
      document.getElementById("naseptavacDiv").style.visibility = "hidden";
    }
  }
}

function posunNaseptavac(e) {
  var unicode = GetKeyCode(e);
  var naseptavac = document.getElementById("naseptavac");
  if (unicode == 40) {
    // šipka dolů
    naseptavac.options.selectedIndex = 
      naseptavac.options.selectedIndex >= 0 && 
      naseptavac.options.selectedIndex < naseptavac.options.length-1 ?
      naseptavac.options.selectedIndex+1 : 0;
    getChangeHandler();
    return;
  }
  else if (unicode == 38) {
    // šipka nahoru			

    naseptavac.options.selectedIndex = 
      naseptavac.options.selectedIndex > 0 ? 
      naseptavac.options.selectedIndex-1 : naseptavac.options.length-1;
    getChangeHandler();
    return;
  }
  else if (unicode == 13) {
    lastSelected = document.getElementById("inputText").value;
    // na enter ve textovém poli nechceme odesílat formulář
    if (window.event)
      e.returnValue = false;
    else
      e.preventDefault();
    document.getElementById("naseptavacDiv").style.visibility = "hidden";
  }
} 

function processRequest() {
  if (httpRequest.readyState == 4) {
    if(httpRequest.status == 200) {
      var response = httpRequest.responseText;
      if (response == 'EMPTY') {
        document.getElementById("naseptavacDiv").style.visibility = "hidden";
      }
      else {        
        document.getElementById("naseptavacDiv").innerHTML = response;
        document.getElementById("naseptavac").size =
          document.getElementById("naseptavac").options.length;
        document.getElementById("naseptavacDiv").style.visibility = "visible";
      } 
    }
    else {
      alert("Chyba při načítání stránky"

        + httpRequest.status +":"+ httpRequest.statusText);
    }
  }
}

function getChangeHandler() {
  var select = document.getElementById("naseptavac");
  var nazev = select.options[select.selectedIndex].innerHTML;
  document.getElementById("inputText").value = nazev.replace(/\&amp;/g,'&');
}
 
function getResultClickHandler() {
  getChangeHandler();
  lastSelected = document.getElementById("inputText").value;  
  document.getElementById("naseptavacDiv").style.visibility = "hidden";
} 

</script>

Skript generující obsah našeptávače na základě dotazů do databáze může vypadat například následovně.

<?php
  // následující funkce budou zřejmě umístěny někde v common ...

  /**
  * Není-li zapnutá direktiva magic_quotes_gpc, pak doplníme
  * \ před každý  nebezpečný znak typu ' - ochrana před SQL injection.
  */
  function gpc_addslashes($str) {
    return (get_magic_quotes_gpc() ? $str : mysql_real_escape_string($str));
  }

  /**
   * Připojení k databázi
   */
  function connect() {
    include "dbparams.inc.php"; // nastavení parametrů připojení
    mysql_connect($host, $username, $password) or die (mysql_error());
    mysql_select_db($db);
    mysql_query("SET NAMES 'UTF8'");
  }

  // a vlastní skript ...

  $params = array();
  parse_str($_SERVER['QUERY_STRING'], $params);   
  $str = urldecode($params['str']);
  connect();
  $query = "SELECT k.nazev FROM knihy k WHERE UPPER(k.nazev) LIKE
    CONCAT(UPPER('" .  gpc_addslashes($str) . "'),'%') 
    ORDER BY k.nazev LIMIT 0,15";   
  $result = mysql_query($query) or die(mysql_error());
  if (mysql_num_rows($result)==0 || 
    (mysql_num_rows($result)==1 && 
      strcmp(mysql_result($result, 0, "nazev"),$str)==0))
    echo "EMPTY";
  else {
    // nastavíme pointer zpět na začátek
    mysql_data_seek($result, 0);    
    echo "<select id=\"naseptavac\" style=\"width:300px; position:absolute;\" 
      multiple onClick=\"getResultClickHandler();\" 
      onChange=\"getChangeHandler();\" >";
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
      echo "<option>".$row["nazev"]."</option>";
    }
    echo "</select>";          
  }
  mysql_close();
?>

Závěrem

A to je vše. Znalci Javascriptu jistě vymyslí mnohem hezčí řešení, objektové, robustnější, bezpečnější, po všech stranách dokonalejší.





Diskuze:

ViPEr*CZ*
Nefunkční
29.12.2009 22:20
Chtěl jsem to ozkoušet a je to nefunkční... element s id naseptavac je null.

Miloš Němec
Re: Nefunkční
31.12.2009 20:59
Opraveno, díky za upozornění.

forward
Funkcni
10.3.2010 13:51
Konecne jsem po dlouhem hledani narazil pouzitelny priklad. Diky.

martin
m
10.3.2010 14:39
funguje i na asp.net ?

Miloš Němec
Re: m
11.3.2010 19:52
Mnou uvedená ukázka skriptu generujícího obsah našeptávače je v PHP. Nic Vám ale nebrání přepsat ji do ASP.NET.

abc
Naseptavac
31.5.2010 13:18
Pise mi to chybu pri nacitani stranky0() nebo tak neco a mam tam textbox i ten javascript kod.. v cem je tedy chyba ?

Miloš Němec
Re: Naseptavac
31.5.2010 20:22
Jakou přesně chybu? Neumím věštit z křišťálové koule. Funguje Vám skript generující obsah našeptávače? Ukázka u článku Vám funguje?

abc
Re: Re: Naseptavac
1.6.2010 11:53
zde uvedena ukazka na tomto webu funguje.. a chybu to pise "chyba pri nacteni stranky 0:" vzdy kdyz kliknu na textbox a napisu jakekoliv prvni pismeno..

Miloš Němec
Re: Re: Re: Naseptavac
2.6.2010 07:30
httpRequest.status je 0. To je zvláštní, měl by být 200. Zkuste v metodě generujNaseptavac(e) použít absolutní URL (včetně http://...), namísto relativního.

nuninek
Re: Re: Re: Re: Naseptavac
7.12.2011 20:19
Ahoj me to neustale hází 404. Nevíš čím to je dávám absolutni url.

Miloš Němec
Re: Re: Re: Re: Re: Naseptavac
8.12.2011 07:44
A když to URL zkusíte použít přímo v adresním řádku prohlížeče, tak funguje?

Martin
nefunkční
31.5.2010 17:01
Nefunguje v IE a v opeře se zobrazuje select pořád.

Miloš Němec
Re: nefunkční
31.5.2010 20:25
V jakých verzích? Koukám na to v IE 8 a Opeře 10.53 a v obou to funguje. Nefunguje Vám Vaše implementace, nebo moje ukázka v článku?

Martin
Re: Re: nefunkční
1.6.2010 14:50
Poslední verze. Nefunguje mi moje implementace na locále, tady je vidět že to funguje. Takže jsem někde určitě pochybyl. Ale nevadí našel jsem si jiné řešení. Vypadalo to že to půjde jednoduše, ale nakonec mě to odradilo (dost to spěchalo) a stáhl jsem si http://jquery.com/
Hezký den.

Miloš Němec
Re: Re: Re: nefunkční
2.6.2010 07:34
Na localhostu Vám musí běžet web server, třeba Apache. Jinak jQuery rozhodně doporučuji. I když jsem se setkal i s problémem s funkčností v Opeře, ale to byla hodně stará verze, dnes už to snad mají vyřešené.

František
Poděkování
10.8.2010 16:19
Děkuji moc za tento článek.

kuba
nefunkční
9.10.2010 14:14
chtěl bych se zeptat co je v souboru naseptavacKnih.php na řádku var url = "naseptavacKnih.php?str=" + encodeURI(str); a jestli zrovna tohle může být zdrojem chyby, vypíše mi to všechny položky najednou bez možnosti vyhledávání

Miloš Němec
Re: nefunkční
13.10.2010 08:00
Zmiňovaný řádek není v souboru naseptavacKnih.php, ale přímo v JavaScriptu na stránce s našeptávačem. Do proměnné url je přiřazena adresa skriptu generujícího obsah našeptávače, spolu s parametrem str obsahujícím hledaný řetězec. Pokud se Vám vypisují všechny položky, zkuste nejprve zavolat (přímo z adresního řádku) samotný php skript a odladit jeho výstup.

PK
nefunkuje
20.10.2010 21:53
hlásí velice pěknou chybu:

Warning: mysql_connect() [function .mysql-connect]: Can't connect to local MySQL server through socket '/var/run/mysqld /mysqld.sock' (2) in /disk_1 /www/cz/card-club/ administrace /naseptavac.php on line 129
Can't connect to local MySQL server through socket '/var/run /mysqld/mysqld.sock' (2)

Miloš Němec
Re: nefunkuje
21.10.2010 06:41
Nefunguje Vám připojení k MySQL databázi. To vůbec nesouvisí se samotným JavaScriptovým našeptávačem. Nejprve si odlaďte php skript generující obsah našeptávače (ve Vašem případě naseptavac.php) - třeba voláním přímo z adresního řádku, a pak se teprve pusťte do implementace JavaScriptu.

Tom
Perfektní!
25.10.2010 14:20
Díky za článek, je to super.

n
Díky ale mám malinký problém...
27.10.2010 11:35
...musím rozdělit slovo delší než 25 vždyť to nefunguje.... :-(

Miloš Němec
Re: Díky ale mám malinký problém...
27.10.2010 15:12
Do diskuze nelze odeslat příspěvek obsahující slova delší než 25 znaků. Je to jen obrana proti nesmyslům. V normální mluvě na taková slova nenarazíte. Čas od času totiž někoho nenapadne nic lepšího, než chvilku podržet nějakou klávesu a pak to odeslat. Chápu, že při vkládání částí zdrojových kódů nebo URL adres může toto omezení způsobit problémy. Mám jedinou radu - dlouhý řetězec prostě rozdělte mezerou a pak to půjde. Bude-li to smysluplný příspěvek, mezeru odstraním.

radek
dotázek
27.10.2010 11:36
Díky za kódy jedou super, ale chtěl jsme si aplikaci rozšířit a v naseptavac.php jsem si přidal položku value='' do <option> </option> a obsah value chci předávat dál do proměnné... Změna php skriptu pouze: <option value="Nejaky textovy obsah bez cz znaku"></option> do funkce getResultClickHandler() jsem si cvičně přidal tento kód: var obsah_value_option = document.getElementById("naseptavac"); alert(obsah_value_option.value); var promenna = obsah_value_option.value; Všude kromě IE 6 se alertuje správně obsah value prokliklého <Option>, za boha nevím proč to v IE 6 nejede a ukládá to prázdnou proměnnou?

Miloš Němec
Re: dotázek
27.10.2010 15:35
Doporučil bych připravit si jednoduchou statickou HTML stránku se SELECTem a odladit si jak se dostat k value v IE6. Hádal bych, že to bude něco jako
var select = document.getElementById("naseptavac");
alert(select.options[select.selectedIndex].value);
ale ověřit to nemůžu, IE6 tu po ruce nemám.

Amut.NET
chyba v IE
15.3.2011 15:25
Zpráva: 'document. getElementById (...)'
má hodnotu null nebo není objekt.
Řádek: 119 je tam ten return;
Znak: 9
Kód: 0

// šipka nahoru

naseptavac. options. selectedIndex =
naseptavac. options. selectedIndex > 0 ?
naseptavac. options. selectedIndex-1 : naseptavac. options. length-1;
getChangeHandler();
return;
}

Miloš Němec
Re: chyba v IE
15.3.2011 15:31
V jaké verzi IE? Koukám na to právě v IE8 a vše je pořádku.

Amut.NET
Re: Re: chyba v IE
15.3.2011 17:01
mam 8, nefunguje to na me strance, zde je to funkcni... tak nevim, kde je chyba = poslal jsem odkaz na email

Miloš Němec
Re: Re: Re: chyba v IE
16.3.2011 07:49
Odpovídal jsem Vám na mail. Malá chyba ve Vaší implementaci - nejsou-li nalezeny žádné výsledky, musí návratová hodnota PHP skriptu (v ukázkovém případě "EMPTY") sedět s testem návratové hodnoty v JavaScriptu ve funkci processRequest().

Martin
Problem
16.8.2011 16:34
Pri implementaci vaseho navrhu mi neustale pri zadani znaku vybehne pod inputem druhy duplicitni imput. Nejedna se o potiz prohlizece, nebot to dela ve vsech.
Dale mi nemizi vypisovany select z PHP, ale to jsem obesel IFem.
Muzete mi poradit kde je chyba, nebot ikdyz jsem koukal dokodu docela dlouho , nenasel jsem nic kloudneho.

Miloš Němec
Re: Problem
17.8.2011 07:17
Nevidím Váš kód ani nasazené řešení, takže každá rada je těžká. Začal bych odladěním PHP skriptu - vrací skutečně jen sestavený SELECT? Můžete to zkusit třeba voláním přímo z adresního řádku. Pokud PHP funguje správně, pak bude chyba někde v JavaScriptu - možná ve funkci processRequest(), která se stará o vykreslení obnoveného našeptávače.

Martin
Re: Re: Problem
17.8.2011 14:12
dekuji za reakci....jiz jsem prisel na chybu, ktera byla jak je pravidlem na me strane :-) a v JS samozrejme.
Jeste jednou dekuji.

Jirka
Re: Re: Re: Problem
14.4.2012 20:05
Dobrý den,
mám stejný problém a bohužel ho nemohu vyřešit :( viz: varimebezpytliku.cz/ naseptavac.php

Miloš Němec
Re: Re: Re: Re: Problem
14.4.2012 20:23
Skrytí našeptávače při prvním zobrazení stránky je zajištěno voláním document.getElementById("naseptavacDiv").style.visibility = "hidden"; To ale můžete použít až poté, co je naseptavacDiv deklarován, takže to přesuňte z <head> někam za <div id="naseptavacDiv"></div>.

Jiří Endršt
Re: Re: Re: Re: Re: Problem
14.4.2012 20:38
Omlouvám se, zapomněl jsem to zpět přesunout, ale problém není vzřešen :( Myslím spíš, že je problém s PHP scriptem, nejspíš s umístěním. Mám strukturu:
<form>
<JS Script>
<php>
Zkoušel jsem snad všechny možné pořadí, ale stále nic :(
Děkuji za radu

Jiří Endršt
Re: Re: Re: Re: Re: Re: Problem
14.4.2012 22:54
Omouvám se, jsem idiot. Nedošlo mi, že script musí být zvlášť. Moc děkuji. Parádní našeptávač :)

Michal
na enter ve textovém poli nechceme odesílat formulář
9.9.2011 14:38
kod: if (window.event)
e.returnValue = true;
pokud zmenim false na e.returnValue = true; tak mi funguje odesilani v IE a Chrome, ale FF (Mozilla) to dal ignoruje.
Muzete prosim poradit? diky moc

Michal
Re: na enter ve textovém poli nechceme odesílat formulář
9.9.2011 16:52
aby to upresnil, mozna jsem to napsal divne, potrebuji odesilat pomoci stisku klavesy enter a FF mi to ignoruje

Miloš Němec
Re: Re: na enter ve textovém poli nechceme odesílat formulář
11.9.2011 13:16
Pokud chcete odesílat formulář při stisknutí Enteru v našeptávači, pak zkuste vyhodit celou podmínku if (window.event) e.returnValue = false; else e.preventDefault(); Ta je tam právě kvůli zrušení odeslání při Enteru (pro všechny prohlížeče).

Miloslav
po "nevyužití" našeptávač nezmizí
25.1.2012 12:12
Pokud kliknutím, nebo klávesami nevyberete položku z našeptávače, tak zůstane viditelný (při kliknutí mimo našeptávač a při stisknutí TAB kvůli přechodu na jiný input ve formuláři).
Vyřešil jsem to tak, že jsem přidal funkci :
killVisibility(){
document.getElementById("naseptavacDiv").style.visibility = "hidden";
}
která se spustí po kliknutí na jakékoli místo na stránce - <body onClick = "killVisibility()">
a do posunNaseptavac() jsem vlozil :
if (unicode == 9) {
document.getElementById ("naseptavacDiv").style.visibility = "hidden";
}
kvuli stisknutí klávesy TAB

Miloš Němec
Re: po "nevyužití" našeptávač nezmizí
26.1.2012 07:35
Díky moc za doplnění. Spolu s klávesou TAB bych možná odchytával i klávesu ESC.

Miloslav Koštíř
Re: Re: po "nevyužití" našeptávač nezmizí
1.3.2012 17:08
Nejjednodužší asi bude dát INPUTu událost onBlur a tím volat funkci na skrytí našeptávače.

Každopádně v HTML5 už existuje prvek "datalist" který se dá přiřadit prvku INPUT TYPE="TEXT" a plní právě funkci našeptávače. Stačí mu ajaxem vygenerovat obsah a zbytek už nemusíte řešit.

Vlad
nefunguje diakritika.
21.3.2012 09:27
Mám problem s češtinou v databazi používam ut8 jinak všude používam windows-1250, a zobrazuje mi to špatně diakritiku. Vyzkoušel jsem ruzné nastavení, ale vysledek je obdobný. Ale když oužiju přimo odkaz
naseptavacKnih.php ?str=praha
tak je diakritika vpořádku, vypadá to že se diakritika změní až při odkazu přes GET, ale je možné že se mýlim v php se vyznám ale v javascriptu jsem uplny novaček.

Ještě reaguji na
Martin
Re: Re: nefunkční
1.6.2010 14:50
kdy mu nefungoval script na locale ale na serveru ano. Měl jsem stejný problém vyřešil jsem to změněním
onKeyUp onKeyDown
onkeyup onkeydown
nevím proč ale asi můj prohližeč to špatně chypal potom to běželo bez problemu.

Miloš Němec
Re: nefunguje diakritika.
21.3.2012 10:28
Určitě to není odpověď kterou by jsi chtěl slyšet, ale s kódováním windows-1250 si jen přiděláváš práci. Uvažoval jsi o přechodu na UTF-8?

Kdy Ti nefunguje diakritika? Při dotazu (na dotaz s diakritikou se nenajde správná odpověď), nebo až při zobrazení výsledků (naplnění našeptávače)?

Vlad
Re: Re: nefunguje diakritika.
21.3.2012 11:41
Rad bych přešel na kodovani utf-8ale z nějakého důvodu my špatně kdouje ve všech mích stránkách.

Diakritika mi nefunguje až při vystupu našeptavače.

Miloš Němec
Re: Re: Re: nefunguje diakritika.
21.3.2012 12:03
A pokud odkaz na našeptávač napíšeš přímo do příkazového řádku, v jakém kódování se zobrazuje správná diakritika odpovědi?

vlad
Re: Re: Re: Re: nefunguje diakritika.
21.3.2012 12:21
zkus se podivat na scren
slecinky.eu/images/33006738967563224104.jpg
slecinky.eu/images/17573162546802259562.jpg

Miloš Němec
Re: Re: Re: Re: Re: nefunguje diakritika.
21.3.2012 14:21
Porovnejte kódování obou stránek. Předpokládám, že ve druhém případě prohlížeč automaticky nastavil znakovou sadu na UTF-8. Zkuste poladit čtení českých znaků z databáze, to bude problém, který vůbec nesouvisí s našeptávačem.

Tomáš
dotaz
25.7.2012 22:00
Dobrý den,
teprve začínám s tvorbou webu, proto omluvte můj stupidní dotaz, ale nevím jak mám pojmenovat jednotlivé soubory se scripty, tak aby to fungovalo.

Miloš Němec
Re: dotaz
26.7.2012 08:57
HTML stránku můžete pojmenovat jakkoli, pojmenování PHP skriptu generujícího obsah našeptávače musí odpovídat volání v JavaScriptové metodě generujNaseptavac (v mém případě je to naseptavacKnih.php).

Pokud ale s tvorbou webu teprve začínáte, zkuste raději něco jednoduššího, jinak se budete zbytečně trápit.

Tomáš
Re: dotaz
26.7.2012 09:00
ještě bych se chtěl zeptat... vyhazuje mi to následující chybu, co s tím?
Notice:Undefined index: str in C:\ComplexWebServer\ http_docs\vyhledavani.php on line 35

Tomáš
Re: dotaz
26.7.2012 09:01
ještě jsem zapoměl dodat že na řádku 35 mám
$str = urldecode ($params['str']);

Miloš Němec
Re: Re: dotaz
26.7.2012 09:16
Používáte nedefinovanou proměnnou. Nejspíš voláte vyhledavani.php bez vyhledavani.php?str=.

Tomáš
Re: Re: dotaz
26.7.2012 09:22
ta chyba vypadá takto
http://2i.cz/ b73cc1eb38
ani nemohu zadat nic k vyhledávání jestli dobře chápu

Miloš Němec
Re: Re: Re: dotaz
26.7.2012 11:24
Zkuste začít odladěním samotného PHP skriptu generujícího obsah našeptávače. Voláním přímo z adresního řádku. Ve vašem případě musí vyhledavani.php?str=neco vrátit buď sestavený SELECT box, nebo řetězec EMPTY (pokud na dotaz "neco" není v databázi nic nalezeno). Až Vám bude perfektně chodit PHP skript, začněte se trápit s vyhledávacím políčkem a celou JavaScriptovou obsluhou.

Tomáš
Re: Re: Re: Re: dotaz
26.7.2012 18:38
voláním z adresního řádku se dostanu kam chci, dle mého laického úsudku je prostě jenom chyba v tom $str = urldecode ($params['str']); resp. v části, která se nachází v hranatých závorkách, nevím čím mam 'str' nahradit

Tomáš
Re: Re: Re: Re: Re: dotaz
27.7.2012 09:35
už jsem přišel na to, v čem byl "zakopaný pes"... udělal jsem chybu při kopírování a ač je to k nevíře stejnou chybu jsem udělal i při opětovném zkopírování, každopádně Vám děkuji za pomoc, jsem sice začátečník, ale mám rád výzvy a nevzdávam se tak snadno :D

Miloš Němec
Re: Re: Re: Re: Re: Re: dotaz
27.7.2012 11:46
Dobře, jsem rád, že už Vám to funguje :)

Vážení čtenáři, nacházíte se v archivované části webu. Diskuze byla uzavřena.


© 2003-2012 Miloš Němec. E-mail: