Autor Zpráva
jakub67
Profil *
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
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
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
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 *
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 *
jenikkozak: zkoušel jsem použít pouze while cyklus, ale nefunguje to, musí se použít spolu s foreach
AM_
Profil
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 *
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 *
Uz mi to funguje s jednim cyklem :), ale porad nevim jak na to pridani ID :-(
holi
Profil
počkat ty chceš do tohto "index.php?q="+value; místo value dosadit id ? vygenerované z PHP
jakub67
Profil *
Ahoj, přesně tak, ale chtěl bych tam mi ten text i ID (vygenerovane z PHP).
Tori
Profil
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 *
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
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 *
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
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 *
AM:
Zkusil jsem, jak jsi napsal: echo "<li><a onclick=\"location.href=index.html\"><span>$song</span></a></li>";
Bohuzel, nepomohlo :-(
Alphard
Profil
jakub67:
Ten onclick dejte na <li>.
Zřejmě by fungovalo i sestavit <a><li></li></a>, ale to bylo škaredé :-)
jakub67
Profil *
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
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 *
holi:
Ono kdyz neco dam pred <li>, tak to neveme vubec, prestane to fungovat
AM_
Profil
[#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.

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: