Das würde ich an Deiner Stelle mit Ajax lösen
PHP-Code:
<div id="header_suche">
<form name="suche" method="post" action="${getPath}/${aSession/language}/article/search">
<strong>${text/such_feld_header}</strong>
<input autocomplete="off" id="inputString" onKeyUp="lookup(this.value,'${getPath}');" name="search" class="textfield" type="text" style="width:180px; height:14px;" tal:attributes="value search | NULL" />
<input type="image" src="${getPath}/assets/images/header_suche_button.png" />
<div class="suggestionsBox" id="suggestions" style="display: none;">
<div class="suggestionInfo">
<span style="float:left; color:#000;">${text/vorschlag_suche}</span>
<span style="float:right;"><a title="close" style="cursor: pointer" onclick="hide('suggestions');">X</a> </span>
</div>
<div class="suggestionList" id="autoSuggestionsList"></div>
</div>
</form>
</div>
mein dazugehörige JS Code:
Code:
function lookup(inputString,CurrentServer)
{
if(inputString.length <= 2)
{
$('#suggestions').hide();
}
else
{
$.post(CurrentServer+"/controller/ajax_article_search.php", {queryString: ""+inputString+""}, function(data)
{
if(data.length >0)
{
$('#suggestions').show();
$('#autoSuggestionsList').html(data);
}
});
}
}
function fill(thisValue)
{
$('#inputString').val(thisValue);
$('#suggestions').hide();
document.suche.submit();
}
und meine Ajax ausführende PHP Datei
PHP-Code:
<?php
date_default_timezone_set('Europe/Berlin');
$dir_root = dirname(__FILE__);
define('DIR_ROOT', str_replace('controller', '', $dir_root));
session_start();
include('Base/Db.php');
$aField = array('sprache', 'bezeichnung', 'artnr');
$db = new db;
$db->setDB('shop');
$db->setTable('Artikeltexte');
$db->addTable('Artikel', 'artnr');
$db->setSelect('Artikel.artnr');
$db->addSelect('Artikeltexte.artnr, Artikeltexte.bezeichnung');
$db->setWhere("Artikeltexte.".$aField['0']." = '?'", $_SESSION['language']);
$db->setWhere("Artikeltexte.".$aField['1']." LIKE '%?%'", $_POST['queryString']);
$db->setWhere("Artikel.aktiv ='?'", 'ja');
for($i=2; $i<count($aField); $i++)
{
$db->addWhere("Artikeltexte.".$aField[$i]." LIKE '%?%'", $_POST['queryString']);
$db->setWhere("Artikeltexte.".$aField['0']." = '?'", $_SESSION['language']);
$db->setWhere("Artikel.aktiv = '?'", 'ja');
$db->setWhere("Artikel.artnr = ?", 'Artikeltexte.artnr');
}
$db->setLimit('15');
$db->setQuery('select', TRUE);
for($i=0; $i<count($db->aValue); $i++)
{
echo '<li onclick="fill(\''.$db->aValue[$i]['bezeichnung'].'\');">'.$db->aValue[$i]['artnr'].' - '.substr($db->aValue[$i]['bezeichnung'],0,60).'</li>';
}
?>