Autor | Zpráva | ||
---|---|---|---|
jakub67 Profil * |
#1 · Zasláno: 17. 1. 2011, 00:25:31
http://digitarald.de/project/autocompleter/1-1/showcase/request-html/
Upravil jsem si vyhledavani (viz odkaz), aby po kliknuti na vyhledanou polozku rovnou presmerovalo na nejakou stranku. Asi takto: Soubor: Autocompleter.js setSelection: function(finish) { var input = this.selected.inputValue, value = input; window.location = "index.php?q="+value; }, Nevite nekdo jak mohu predat ID, které se generuje ve script.php a predat ho do této funkce (setSelection), abych ho mohl pouzit v odkazu? V JS se bohuzel moc neorientuji. script.php if (is_string($value) ) { $query= mysql_query("SELECT * FROM novinky WHERE titulek LIKE '%$value%'"); while ($row = mysql_fetch_array($query)) { $found[] = $row['titulek']; $foundId[] = $row['id']; } } foreach ($found as $word) { if ($extended) { echo "<li><span>$word</span></li>"; } $i++; } Budu vdecny za kazdou radu, predem diky! |
||
holi Profil |
#2 · Zasláno: 17. 1. 2011, 12:32:37
počka vy chcete kombinovat JS s PHP ?
to asi nepujde ... pošlete tu ide přes post, get, cookies a blablabla prostě přes co chcete a vytvořte soubor Autocompleterjs.php <script type="text/javascript">setSelection: function(<?php echo $_POST['ID'] ?>) { // místo $_POST můžete využít co chcete ale nezapomente že to musíte první odeslat ze script.php var input = this.selected.inputValue, value = input; window.location = "index.php?q="+value; }, </script> |
||
jenikkozak Profil |
#3 · Zasláno: 17. 1. 2011, 12:48:30
holi:
„to asi nepujde“ Kde se chce, tam jde všechno. Aspoň takhle jednoduchá věc by šla. jakub67: Čeho vlastně chceš dosáhnout? Hledáš nějakou frázi, najdeš několik výsledků, chceš je zobrazit, nebo někam přesměrovávat? Pokud chceš přesměrovat, bude na to lepší použít přímo PHP pomocí hlavičky Location, není potřeba do toho míchat JS. header("Location: nejake_url"); A nebo se má přesměrovat po kliknutí na jednu z vyhledaných položek? Na to je nejlepší odkaz. :-) Mimochodem, proč používáš dva cykly za sebou? Myslím tím while a foreach? |
||
AM_ Profil |
#4 · Zasláno: 17. 1. 2011, 12:53:11
jakub67:
co rovnou takhle? script.php if (is_string($value) ) { $query= mysql_query("SELECT * FROM novinky WHERE titulek LIKE '%$value%'"); while ($row = mysql_fetch_array($query)) { echo "<li><a href="index.php?q={$row['id']}">".htmlspecialchars($row['titulek'])."</a></li>"; } } holi: „to asi nepujde ...“ říká se tomu ajax a ten mu funguje „pošlete tu ide přes post, get, cookies“ to bych (ne)chtěl vidět. |
||
jakub67 Profil * |
#5 · Zasláno: 17. 1. 2011, 13:04:26
AM_: ono to jako odkaz neveme, musel by se ten link z toho pote vyprepratovat :-).
jenikkozak: chci ty vysledky, ktere ti našeptávač zobrazí, udělat jako linky. Přesměrování není třeba, ale nevěděl jsem jak jinak. Holi: vyzkousel jsem to, jak si mi poradil, bohuzel to nefunguje |
||
jakub67 Profil * |
#6 · Zasláno: 17. 1. 2011, 13:11:18
jenikkozak: zkoušel jsem použít pouze while cyklus, ale nefunguje to, musí se použít spolu s foreach
|
||
AM_ Profil |
#7 · Zasláno: 17. 1. 2011, 13:46:31
jakub67:
„zkoušel jsem použít pouze while cyklus, ale nefunguje to, musí se použít spolu s foreach“ zřejmě jsi to měl špatně, samozřejmě oba cykly jsou zbytečné. „ono to jako odkaz neveme, musel by se ten link z toho pote vyprepratovat :-)“ tak možná budeš muset sáhnout do kódu toho AutoCompleteru, aby při kliknutí na nějakou položku místo dosazení do textinputu přesměroval na zadaný odkaz - to by mohlo jít, ale nevím, jak vypadá kód té třídy AutoCompleter. |
||
jakub67 Profil * |
#8 · Zasláno: 17. 1. 2011, 13:50:22
AM:
Odkaz na AutoComplete.js http://digitarald.de/project/autocompleter/1-1/source/Autocompleter.js Do toho souboru jsem jiz sahal, a upravil jsem funkce setSelection takto: setSelection: function(finish) { var input = this.selected.inputValue, value = input; window.location = "index.php?q="+value; }, Problém je, že neumím do toho odkazu dát ID položky místo názvu |
||
jakub67 Profil * |
#9 · Zasláno: 17. 1. 2011, 16:37:01
Uz mi to funguje s jednim cyklem :), ale porad nevim jak na to pridani ID :-(
|
||
holi Profil |
#10 · Zasláno: 17. 1. 2011, 17:18:35 · Upravil/a: holi
počkat ty chceš do tohto "index.php?q="+value; místo value dosadit id ? vygenerované z PHP
|
||
jakub67 Profil * |
#11 · Zasláno: 17. 1. 2011, 17:45:05
Ahoj, přesně tak, ale chtěl bych tam mi ten text i ID (vygenerovane z PHP).
|
||
Tori Profil |
#12 · Zasláno: 17. 1. 2011, 17:54:17
Co vám vrací ten PHP skript - můžete ho sem zkopírovat (jestli je velmi dlouhý, tak stačí tu část, kde se generuje výstup)?
|
||
jakub67 Profil * |
#13 · Zasláno: 17. 1. 2011, 18:42:05
Tori:
Script.php vrací celé tituly, které se shodují s hodnotou $value: ini_set('memory_limit', '128M'); $value = $_POST['value']; if (is_string($value) ) { $query= mysql_query("SELECT * FROM novinky WHERE titulek LIKE '%$value%'"); while ($row = mysql_fetch_array($query)) { $titulek= $row[titulky]; echo "<li><span>$titulek</span></li>"; } } Ono by se to dalo vyresit tak, ze by se pridaly do vypisu nejaky dva tagy a v nich by bylo uschovano id (napr.: <mojeid>$row[id]</mojeid>) a pote ho odchytit v JS, jako to dela ted s s textem uvnitr <span></span>. Ale nevim jak na to... :( |
||
Tori Profil |
#14 · Zasláno: 17. 1. 2011, 19:00:13 · Upravil/a: Tori
Tohle by nefungovalo?
$value = $_POST['value']; if (is_string($value) ) { // z DB stačí číst jen titulek a ID novinky, ostatní je zbytečné. $query= mysql_query("SELECT id, titulek FROM novinky WHERE titulek LIKE '%$value%'"); while ($row = mysql_fetch_array($query)) { echo '<li><a href="novinky.php?id='.$row['id'].'"><span>'.$row['titulek'].'</span></a></li>'; } } edit: Aha, tohle už vlastně radil AM_, nepřečetla jsem si předchozí příspěvky. |
||
jakub67 Profil * |
#15 · Zasláno: 17. 1. 2011, 19:19:30
Funguje, ale problém je v tom, že bez <a href=""></a> byly vypsané tituly článku jako aktivní odkaz (který po kliknutí dal zvolený titul do input. Ja jsem to v autocompleter.js změnil na přesmerovani na index.php?.., viz nahore)
Kdyz přidám tyto dva tagy, tak je aktivní pouze text, a pro zbytek rámečku je stále použivány odkaz z JS. Potřebuju aby celý rámeček byl jako odkaz. Pro mě je složité to popsat, omlouvám se za případnou nesrozumitelnost :). |
||
AM_ Profil |
#16 · Zasláno: 17. 1. 2011, 21:27:48
zkus to do toho <a> místo do href dát do onclick="location.href=...
není to moc čisté řešení, ale koukal jsem na kód toho autocompleteru a taky jsem se v něm moc nevyznal, takže nevím, jak udělat čistější úpravu (možná v sekci JavaScript by ti někdo poradil lépe). |
||
jakub67 Profil * |
#17 · Zasláno: 17. 1. 2011, 21:57:01
AM:
Zkusil jsem, jak jsi napsal: echo "<li><a onclick=\"location.href=index.html\"><span>$song</span></a></li>"; Bohuzel, nepomohlo :-( |
||
Alphard Profil |
#18 · Zasláno: 17. 1. 2011, 21:59:38
jakub67:
Ten onclick dejte na <li>. Zřejmě by fungovalo i sestavit <a><li></li></a>, ale to bylo škaredé :-) |
||
jakub67 Profil * |
#19 · Zasláno: 17. 1. 2011, 22:24:21
Alphard:
Zkusil jsem to dat pred <li>, bohuzel, to nezobrazi uz vubec nic. Kdybych ten link dal klasicicky, tedy pred span a pouzil href, je nejaky zpusob jak udelat aktivni cely ramecek? |
||
holi Profil |
#20 · Zasláno: 17. 1. 2011, 22:33:09
obalis ho taky tagem "a" i kdyz to nevim stoprocentne protoze me nikdy nenapadlo odkazovat inputem, kazdopadne zatim kazdy prvek ktery jsem obalil ackem fungoval jako odkaz
|
||
jakub67 Profil * |
#21 · Zasláno: 17. 1. 2011, 22:40:46
holi:
Ono kdyz neco dam pred <li>, tak to neveme vubec, prestane to fungovat |
||
AM_ Profil |
#22 · Zasláno: 17. 1. 2011, 22:46:51
[#20] holi
problém je v tom, že přesměrování má nastat, pokud uživatel klikne na položku v rozbalovacím menu, nikoli na input. jakub67: asi nezbude než projet ten AutoCompleter nějakým javascript debuggerem, zjistit, co se přesně při kliknutí na položku děje, a jestli se odněkud nedá v tu chvíli vyčíst ID článku. Případně pročíst dokumentaci toho autocompleteru, pokud existuje. |
||
Časová prodleva: 13 let
|
0