php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.07.2010, 12:48  
Neuer Benutzer
 
Registriert seit: 14.07.2010
Beiträge: 8
PHP-Kenntnisse:
Anfänger
r4lle1882 ist zur Zeit noch ein unbeschriebenes Blatt
Standard AutoSuggest mit Callback Funktion

Hallo Leute!

Ich möchte eine Ajax AutoSuggest Funktion nutzen, dessen Scripts ich mir hier: Ajax auto-suggest / auto-complete | BrandSpankingNew

runtergeladen habe.

Soweit funktioniert auch alles, ausser dass ich ein Veränderung vornehmen möchte.
Wenn jemand etwas sucht und es dann mit Hilfe der Vorschläge findet und anklickt, dann möchte ich nicht dass die Variable ins Suchfeld übernommen wird, sondern direkt mit dem Click zu einer bestimmten URL geschickt wird. Und für jeden Suchbegriff gibt es dann einen anderen direkten Link.

Ist das möglich? Wenn ja wie?

Hier der aktuelle PHP-Code:

PHP-Code:
<?php

/*
note:
this is just a static test version using a hard-coded countries array.
normally you would be populating the array out of a database

the returned xml has the following structure
<results>
    <rs>foo</rs>
    <rs>bar</rs>
</results>
*/


    
$aUsers = array(
        
"Ädams, Egbert",
        
"Altman, Alisha",
        
"Archibald, Janna",
        
"Auman, Cody",
        
"Bagley, Sheree",
        
"Ballou, Wilmot",
        
"Bard, Cassian",
        
"Bash, Latanya",
        
"Beail, May",
        
"Black, Lux",
        
"Bloise, India",
        
"Blyant, Nora",
        
"Bollinger, Carter",
        
"Burns, Jaycob",
        
"Carden, Preston",
        
"Carter, Merrilyn",
        
"Christner, Addie",
        
"Churchill, Mirabelle",
        
"Conkle, Erin",
        
"Countryman, Abner",
        
"Courtney, Edgar",
        
"Cowher, Antony",
        
"Craig, Charlie",
        
"Cram, Zacharias",
        
"Cressman, Ted",
        
"Crissman, Annie",
        
"Davis, Palmer",
        
"Downing, Casimir",
        
"Earl, Missie",
        
"Eckert, Janele",
        
"Eisenman, Briar",
        
"Fitzgerald, Love",
        
"Fleming, Sidney",
        
"Fuchs, Bridger",
        
"Fulton, Rosalynne",
        
"Fye, Webster",
        
"Geyer, Rylan",
        
"Greene, Charis",
        
"Greif, Jem",
        
"Guest, Sarahjeanne",
        
"Harper, Phyllida",
        
"Hildyard, Erskine",
        
"Hoenshell, Eulalia",
        
"Isaman, Lalo",
        
"James, Diamond",
        
"Jenkins, Merrill",
        
"Jube, Bennett",
        
"Kava, Marianne",
        
"Kern, Linda",
        
"Klockman, Jenifer",
        
"Lacon, Quincy",
        
"Laurenzi, Leland",
        
"Leichter, Jeane",
        
"Leslie, Kerrie",
        
"Lester, Noah",
        
"Llora, Roxana",
        
"Lombardi, Polly",
        
"Lowstetter, Louisa",
        
"Mays, Emery",
        
"Mccullough, Bernadine",
        
"Mckinnon, Kristie",
        
"Meyers, Hector",
        
"Monahan, Penelope",
        
"Mull, Kaelea",
        
"Newbiggin, Osmond",
        
"Nickolson, Alfreda",
        
"Pawle, Jacki",
        
"Paynter, Nerissa",
        
"Pinney, Wilkie",
        
"Pratt, Ricky",
        
"Putnam, Stephanie",
        
"Ream, Terrence",
        
"Rumbaugh, Noelle",
        
"Ryals, Titania",
        
"Saylor, Lenora",
        
"Schofield, Denice",
        
"Schuck, John",
        
"Scott, Clover",
        
"Smith, Estella",
        
"Smothers, Matthew",
        
"Stainforth, Maurene",
        
"Stephenson, Phillipa",
        
"Stewart, Hyram",
        
"Stough, Gussie",
        
"Strickland, Temple",
        
"Sullivan, Gertie",
        
"Swink, Stefanie",
        
"Tavoularis, Terance",
        
"Taylor, Kizzy",
        
"Thigpen, Alwyn",
        
"Treeby, Jim",
        
"Trevithick, Jayme",
        
"Waldron, Ashley",
        
"Wheeler, Bysshe",
        
"Whishaw, Dodie",
        
"Whitehead, Jericho",
        
"Wilks, Debby",
        
"Wire, Tallulah",
        
"Woodworth, Alexandria",
        
"Zaun, Jillie"
    
);
    
    
    
$aInfo = array(
        
"Bedfordshire",
        
"index.html",
        
"Cambridgeshire",
        
"Cheshire",
        
"Cornwall",
        
"Cumbria",
        
"Derbyshire",
        
"Devon"
        
"Dorset"
        
"Durham"
        
"East Sussex",
        
"Essex",
        
"Gloucestershire",
        
"Hampshire",
        
"Hertfordshire"
        
"Kent"
        
"Lancashire",
        
"Leicestershire",
        
"Lincolnshire",
        
"Norfolk",
        
"Northamptonshire",
        
"Northumberland"
        
"North Yorkshire"
        
"Nottinghamshire",
        
"Oxfordshire",
        
"Shropshire",
        
"Somerset",
        
"Staffordshire",
        
"Suffolk"
        
"Surrey",
        
"Warwickshire",
        
"West Sussex",
        
"Wiltshire",
        
"Worcestershire"
        
"Durham"
        
"East Sussex",
        
"Essex",
        
"Gloucestershire",
        
"Hampshire",
        
"Hertfordshire"
        
"Kent"
        
"Lancashire",
        
"Leicestershire",
        
"Lincolnshire",
        
"Norfolk",
        
"Northamptonshire",
        
"Northumberland"
        
"North Yorkshire"
        
"Nottinghamshire",
        
"Oxfordshire",
        
"Shropshire",
        
"Somerset",
        
"Staffordshire",
        
"Suffolk"
        
"Surrey",
        
"Warwickshire",
        
"West Sussex",
        
"Wiltshire",
        
"Worcestershire"
        
"Durham"
        
"East Sussex",
        
"Essex",
        
"Gloucestershire",
        
"Hampshire",
        
"Hertfordshire"
        
"Kent"
        
"Lancashire",
        
"Leicestershire",
        
"Lincolnshire",
        
"Norfolk",
        
"Northamptonshire",
        
"Northumberland"
        
"North Yorkshire"
        
"Nottinghamshire",
        
"Oxfordshire",
        
"Shropshire",
        
"Somerset",
        
"Staffordshire",
        
"Suffolk"
        
"Surrey",
        
"Warwickshire",
        
"West Sussex",
        
"Wiltshire",
        
"Worcestershire"
        
"Durham"
        
"East Sussex",
        
"Essex",
        
"Gloucestershire",
        
"Hampshire",
        
"Hertfordshire"
        
"Kent"
        
"Lancashire",
        
"Leicestershire",
        
"Lincolnshire",
        
"Norfolk",
        
"Northamptonshire",
        
"Northumberland"
        
"North Yorkshire"
        
"Nottinghamshire"
    
);
    
    
    
$input strtolower$_GET['input'] );
    
$len strlen($input);
    
$limit = isset($_GET['limit']) ? (int) $_GET['limit'] : 0;
    
    
    
$aResults = array();
    
$count 0;
    
    if (
$len)
    {
        for (
$i=0;$i<count($aUsers);$i++)
        {
            
// had to use utf_decode, here
            // not necessary if the results are coming from mysql
            //
            
if (strtolower(substr(utf8_decode($aUsers[$i]),0,$len)) == $input)
            {
                
$count++;
                
$aResults[] = array( "id"=>($i+1) ,"value"=>htmlspecialchars($aUsers[$i]), "info"=>htmlspecialchars($aInfo[$i]) );
            }
            
            if (
$limit && $count==$limit)
                break;
        }
    }
    
    
    
    
    
    
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
    
header ("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT"); // always modified
    
header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    
header ("Pragma: no-cache"); // HTTP/1.0
    
    
    
    
if (isset($_REQUEST['json']))
    {
        
header("Content-Type: application/json");
    
        echo 
"{\"results\": [";
        
$arr = array();
        for (
$i=0;$i<count($aResults);$i++)
        {
            
$arr[] = "{\"id\": \"".$aResults[$i]['id']."\", \"value\": \"".$aResults[$i]['value']."\", \"info\": \"\"}";
        }
        echo 
implode(", "$arr);
        echo 
"]}";
    }
    else
    {
        
header("Content-Type: text/xml");

        echo 
"<?xml version=\"1.0\" encoding=\"utf-8\" ?><results>";
        for (
$i=0;$i<count($aResults);$i++)
        {
            echo 
"<rs id=\"".$aResults[$i]['id']."\" info=\"".$aResults[$i]['info']."\">".$aResults[$i]['value']."</rs>";
        }
        echo 
"</results>";
    }
?>

Vielleicht macht sich ja jemand die Mühe und durchforstet mal die Geschichte. Würde mich sehr über eine Hilfestellung freuen!

Bye und Gruß aus Berlin
r4lle1882 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.07.2010, 12:56  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Das hat nicht direkt was mit PHP zutun. Denn die Weiterleitung beim Klick auf einen Eintrag muss JavaScript vornehmen! Das sollte eigentlich nicht so schwer sein, den Teil der den angeklickten Wert ins INPUT Feld einfügt kannst du entfernen und entsprechend dort die window.location neu setzen (also weiterleiten).
__________________
▇█▓▒░◕‿‿◕░▒▓█▇
Flor1an ist offline   Mit Zitat antworten
Alt 22.07.2010, 13:10  
Neuer Benutzer
 
Registriert seit: 14.07.2010
Beiträge: 8
PHP-Kenntnisse:
Anfänger
r4lle1882 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi Florian,

viele Dank für deine schnelle Antwort.

Kannst du mal einen Blick auf den JS-Code werfen?

Zitat:
/**
* author: Timothy Groves - Brand Spanking New: It's about design, web development, art, usability, CSS, JavaScript and some other stuff
* version: 1.2 - 2006-11-17
* 1.3 - 2006-12-04
* 2.0 - 2007-02-07
* 2.1.1 - 2007-04-13
* 2.1.2 - 2007-07-07
* 2.1.3 - 2007-07-19
*
*/


if (typeof(bsn) == "undefined")
_b = bsn = {};


if (typeof(_b.Autosuggest) == "undefined")
_b.Autosuggest = {};
else
alert("Autosuggest is already set!");












_b.AutoSuggest = function (id, param)
{
// no DOM - give up!
//
if (!document.getElementById)
return 0;




// get field via DOM
//
this.fld = _b.DOM.gE(id);

if (!this.fld)
return 0;




// init variables
//
this.sInp = "";
this.nInpC = 0;
this.aSug = [];
this.iHigh = 0;




// parameters object
//
this.oP = param ? param : {};

// defaults
//
var k, def = {minchars:1, meth:"get", varname:"input", className:"autosuggest", timeout:4500, delay:500, offsety:-5, shownoresults: true, noresults: "No results!", maxheight: 250, cache: true, maxentries: 25};
for (k in def)
{
if (typeof(this.oP[k]) != typeof(def[k]))
this.oP[k] = def[k];
}


// set keyup handler for field
// and prevent autocomplete from client
//
var p = this;

// NOTE: not using addEventListener because UpArrow fired twice in Safari
//_b.DOM.addEvent( this.fld, 'keyup', function(ev){ return pointer.onKeyPress(ev); } );

this.fld.onkeypress = function(ev){ return p.onKeyPress(ev); };
this.fld.onkeyup = function(ev){ return p.onKeyUp(ev); };

this.fld.setAttribute("autocomplete","off");
};
















_b.AutoSuggest.prototype.onKeyPress = function(ev)
{

var key = (window.event) ? window.event.keyCode : ev.keyCode;



// set responses to keydown events in the field
// this allows the user to use the arrow keys to scroll through the results
// ESCAPE clears the list
// TAB sets the current highlighted value
//
var RETURN = 13;
var TAB = 9;
var ESC = 27;

var bubble = 1;

switch(key)
{
case RETURN:
this.setHighlightedValue();
bubble = 0;
break;

case ESC:
this.clearSuggestions();
break;
}

return bubble;
};



_b.AutoSuggest.prototype.onKeyUp = function(ev)
{
var key = (window.event) ? window.event.keyCode : ev.keyCode;



// set responses to keydown events in the field
// this allows the user to use the arrow keys to scroll through the results
// ESCAPE clears the list
// TAB sets the current highlighted value
//

var ARRUP = 38;
var ARRDN = 40;

var bubble = 1;

switch(key)
{


case ARRUP:
this.changeHighlight(key);
bubble = 0;
break;


case ARRDN:
this.changeHighlight(key);
bubble = 0;
break;


default:
this.getSuggestions(this.fld.value);
}

return bubble;


};








_b.AutoSuggest.prototype.getSuggestions = function (val)
{

// if input stays the same, do nothing
//
if (val == this.sInp)
return 0;


// kill list
//
_b.DOM.remE(this.idAs);


this.sInp = val;


// input length is less than the min required to trigger a request
// do nothing
//
if (val.length < this.oP.minchars)
{
this.aSug = [];
this.nInpC = val.length;
return 0;
}




var ol = this.nInpC; // old length
this.nInpC = val.length ? val.length : 0;



// if caching enabled, and user is typing (ie. length of input is increasing)
// filter results out of aSuggestions from last request
//
var l = this.aSug.length;
if (this.nInpC > ol && l && l<this.oP.maxentries && this.oP.cache)
{
var arr = [];
for (var i=0;i<l;i++)
{
if (this.aSug[i].value.substr(0,val.length).toLowerCase() == val.toLowerCase())
arr.push( this.aSug[i] );
}
this.aSug = arr;

this.createList(this.aSug);



return false;
}
else
// do new request
//
{
var pointer = this;
var input = this.sInp;
clearTimeout(this.ajID);
this.ajID = setTimeout( function() { pointer.doAjaxRequest(input) }, this.oP.delay );
}

return false;
};





_b.AutoSuggest.prototype.doAjaxRequest = function (input)
{
// check that saved input is still the value of the field
//
if (input != this.fld.value)
return false;


var pointer = this;


// create ajax request
//
if (typeof(this.oP.script) == "function")
var url = this.oP.script(encodeURIComponent(this.sInp));
else
var url = this.oP.script+this.oP.varname+"="+encodeURICompon ent(this.sInp);

if (!url)
return false;

var meth = this.oP.meth;
var input = this.sInp;

var onSuccessFunc = function (req) { pointer.setSuggestions(req, input) };
var onErrorFunc = function (status) { alert("AJAX error: "+status); };

var myAjax = new _b.Ajax();
myAjax.makeRequest( url, meth, onSuccessFunc, onErrorFunc );
};





_b.AutoSuggest.prototype.setSuggestions = function (req, input)
{
// if field input no longer matches what was passed to the request
// don't show the suggestions
//
if (input != this.fld.value)
return false;


this.aSug = [];


if (this.oP.json)
{
var jsondata = eval('(' + req.responseText + ')');

for (var i=0;i<jsondata.results.length;i++)
{
this.aSug.push( { 'id':jsondata.results[i].id, 'value':jsondata.results[i].value, 'info':jsondata.results[i].info } );
}
}
else
{

var xml = req.responseXML;

// traverse xml
//
var results = xml.getElementsByTagName('results')[0].childNodes;

for (var i=0;i<results.length;i++)
{
if (results[i].hasChildNodes())
this.aSug.push( { 'id':results[i].getAttribute('id'), 'value':results[i].childNodes[0].nodeValue, 'info':results[i].getAttribute('info') } );
}

}

this.idAs = "as_"+this.fld.id;


this.createList(this.aSug);

};














_b.AutoSuggest.prototype.createList = function(arr)
{
var pointer = this;




// get rid of old list
// and clear the list removal timeout
//
_b.DOM.remE(this.idAs);
this.killTimeout();


// if no results, and shownoresults is false, do nothing
//
if (arr.length == 0 && !this.oP.shownoresults)
return false;


// create holding div
//
var div = _b.DOM.cE("div", {id:this.idAs, className:this.oP.className});

var hcorner = _b.DOM.cE("div", {className:"as_corner"});
var hbar = _b.DOM.cE("div", {className:"as_bar"});
var header = _b.DOM.cE("div", {className:"as_header"});
header.appendChild(hcorner);
header.appendChild(hbar);
div.appendChild(header);




// create and populate ul
//
var ul = _b.DOM.cE("ul", {id:"as_ul"});




// loop throught arr of suggestions
// creating an LI element for each suggestion
//
for (var i=0;i<arr.length;i++)
{
// format output with the input enclosed in a EM element
// (as HTML, not DOM)
//
var val = arr[i].value;
var st = val.toLowerCase().indexOf( this.sInp.toLowerCase() );
var output = val.substring(0,st) + "<em>" + val.substring(st, st+this.sInp.length) + "</em>" + val.substring(st+this.sInp.length);


var span = _b.DOM.cE("span", {}, output, true);
if (arr[i].info != "")
{
var br = _b.DOM.cE("br", {});
span.appendChild(br);
var small = _b.DOM.cE("small", {}, arr[i].info);
span.appendChild(small);
}

var a = _b.DOM.cE("a", { href:"index.html" });

var tl = _b.DOM.cE("span", {className:"tl"}, " ");
var tr = _b.DOM.cE("span", {className:"tr"}, " ");
a.appendChild(tl);
a.appendChild(tr);

a.appendChild(span);

a.name = i+1;
a.onclick = function () { pointer.setHighlightedValue(); return false; };
a.onmouseover = function () { pointer.setHighlight(this.name); };

var li = _b.DOM.cE( "li", {}, a );

ul.appendChild( li );
}


// no results
//
if (arr.length == 0 && this.oP.shownoresults)
{
var li = _b.DOM.cE( "li", {className:"as_warning"}, this.oP.noresults );
ul.appendChild( li );
}


div.appendChild( ul );


var fcorner = _b.DOM.cE("div", {className:"as_corner"});
var fbar = _b.DOM.cE("div", {className:"as_bar"});
var footer = _b.DOM.cE("div", {className:"as_footer"});
footer.appendChild(fcorner);
footer.appendChild(fbar);
div.appendChild(footer);



// get position of target textfield
// position holding div below it
// set width of holding div to width of field
//
var pos = _b.DOM.getPos(this.fld);

div.style.left = pos.x + "px";
div.style.top = ( pos.y + this.fld.offsetHeight + this.oP.offsety ) + "px";
div.style.width = this.fld.offsetWidth + "px";



// set mouseover functions for div
// when mouse pointer leaves div, set a timeout to remove the list after an interval
// when mouse enters div, kill the timeout so the list won't be removed
//
div.onmouseover = function(){ pointer.killTimeout() };
div.onmouseout = function(){ pointer.resetTimeout() };


// add DIV to document
//
document.getElementsByTagName("body")[0].appendChild(div);



// currently no item is highlighted
//
this.iHigh = 0;






// remove list after an interval
//
var pointer = this;
this.toID = setTimeout(function () { pointer.clearSuggestions() }, this.oP.timeout);
};















_b.AutoSuggest.prototype.changeHighlight = function(key)
{
var list = _b.DOM.gE("as_ul");
if (!list)
return false;

var n;

if (key == 40)
n = this.iHigh + 1;
else if (key == 3
n = this.iHigh - 1;


if (n > list.childNodes.length)
n = list.childNodes.length;
if (n < 1)
n = 1;


this.setHighlight(n);
};



_b.AutoSuggest.prototype.setHighlight = function(n)
{
var list = _b.DOM.gE("as_ul");
if (!list)
return false;

if (this.iHigh > 0)
this.clearHighlight();

this.iHigh = Number(n);

list.childNodes[this.iHigh-1].className = "as_highlight";


this.killTimeout();
};


_b.AutoSuggest.prototype.clearHighlight = function()
{
var list = _b.DOM.gE("as_ul");
if (!list)
return false;

if (this.iHigh > 0)
{
list.childNodes[this.iHigh-1].className = "";
this.iHigh = 0;
}
};


_b.AutoSuggest.prototype.setHighlightedValue = function ()
{
if (this.iHigh)
{
this.sInp = this.fld.value = this.aSug[ this.iHigh-1 ].value;

// move cursor to end of input (safari)
//
this.fld.focus();
if (this.fld.selectionStart)
this.fld.setSelectionRange(this.sInp.length, this.sInp.length);


this.clearSuggestions();

// pass selected object to callback function, if exists
//
if (typeof(this.oP.callback) == "function")
this.oP.callback( this.aSug[this.iHigh-1] );
}
};













_b.AutoSuggest.prototype.killTimeout = function()
{
clearTimeout(this.toID);
};

_b.AutoSuggest.prototype.resetTimeout = function()
{
clearTimeout(this.toID);
var pointer = this;
this.toID = setTimeout(function () { pointer.clearSuggestions() }, 1000);
};







_b.AutoSuggest.prototype.clearSuggestions = function ()
{

this.killTimeout();

var ele = _b.DOM.gE(this.idAs);
var pointer = this;
if (ele)
{
var fade = new _b.Fader(ele,1,0,250,function () { _b.DOM.remE(pointer.idAs) });
}
};










// AJAX PROTOTYPE _____________________________________________


if (typeof(_b.Ajax) == "undefined")
_b.Ajax = {};



_b.Ajax = function ()
{
this.req = {};
this.isIE = false;
};



_b.Ajax.prototype.makeRequest = function (url, meth, onComp, onErr)
{

if (meth != "POST")
meth = "GET";

this.onComplete = onComp;
this.onError = onErr;

var pointer = this;

// branch for native XMLHttpRequest object
if (window.XMLHttpRequest)
{
this.req = new XMLHttpRequest();
this.req.onreadystatechange = function () { pointer.processReqChange() };
this.req.open("GET", url, true); //
this.req.send(null);
// branch for IE/Windows ActiveX version
}
else if (window.ActiveXObject)
{
this.req = new ActiveXObject("Microsoft.XMLHTTP");
if (this.req)
{
this.req.onreadystatechange = function () { pointer.processReqChange() };
this.req.open(meth, url, true);
this.req.send();
}
}
};


_b.Ajax.prototype.processReqChange = function()
{

// only if req shows "loaded"
if (this.req.readyState == 4) {
// only if "OK"
if (this.req.status == 200)
{
this.onComplete( this.req );
} else {
this.onError( this.req.status );
}
}
};










// DOM PROTOTYPE _____________________________________________


if (typeof(_b.DOM) == "undefined")
_b.DOM = {};



/* create element */
_b.DOM.cE = function ( type, attr, cont, html )
{
var ne = document.createElement( type );
if (!ne)
return 0;

for (var a in attr)
ne[a] = attr[a];

var t = typeof(cont);

if (t == "string" && !html)
ne.appendChild( document.createTextNode(cont) );
else if (t == "string" && html)
ne.innerHTML = cont;
else if (t == "object")
ne.appendChild( cont );

return ne;
};



/* get element */
_b.DOM.gE = function ( e )
{
var t=typeof(e);
if (t == "undefined")
return 0;
else if (t == "string")
{
var re = document.getElementById( e );
if (!re)
return 0;
else if (typeof(re.appendChild) != "undefined" )
return re;
else
return 0;
}
else if (typeof(e.appendChild) != "undefined")
return e;
else
return 0;
};



/* remove element */
_b.DOM.remE = function ( ele )
{
var e = this.gE(ele);

if (!e)
return 0;
else if (e.parentNode.removeChild(e))
return true;
else
return 0;
};



/* get position */
_b.DOM.getPos = function ( e )
{
var e = this.gE(e);

var obj = e;

var curleft = 0;
if (obj.offsetParent)
{
while (obj.offsetParent)
{
curleft += obj.offsetLeft;
obj = obj.offsetParent;
}
}
else if (obj.x)
curleft += obj.x;

var obj = e;

var curtop = 0;
if (obj.offsetParent)
{
while (obj.offsetParent)
{
curtop += obj.offsetTop;
obj = obj.offsetParent;
}
}
else if (obj.y)
curtop += obj.y;

return {x:curleft, y:curtop};
};










// FADER PROTOTYPE _____________________________________________



if (typeof(_b.Fader) == "undefined")
_b.Fader = {};





_b.Fader = function (ele, from, to, fadetime, callback)
{
if (!ele)
return 0;

this.e = ele;

this.from = from;
this.to = to;

this.cb = callback;

this.nDur = fadetime;

this.nInt = 50;
this.nTime = 0;

var p = this;
this.nID = setInterval(function() { p._fade() }, this.nInt);
};




_b.Fader.prototype._fade = function()
{
this.nTime += this.nInt;

var ieop = Math.round( this._tween(this.nTime, this.from, this.to, this.nDur) * 100 );
var op = ieop / 100;

if (this.e.filters) // internet explorer
{
try
{
this.e.filters.item("DXImageTransform.Microsoft.Al pha").opacity = ieop;
} catch (e) {
// If it is not set initially, the browser will throw an error. This will set it if it is not set yet.
this.e.style.filter = 'progidXImageTransform.Microsoft.Alpha(opacity=' +ieop+')';
}
}
else // other browsers
{
this.e.style.opacity = op;
}


if (this.nTime == this.nDur)
{
clearInterval( this.nID );
if (this.cb != undefined)
this.cb();
}
};



_b.Fader.prototype._tween = function(t,b,c,d)
{
return b + ( (c-b) * (t/d) );
};

Der Teil im HTML sieht so aus:

Code:
<script type="text/javascript">	
	
	var options = {
		script: "test.php?limit=10&timeout=5000&",
		varname:"input",
		shownoresults:true,
		maxresults:10,
		callback: function (obj) { document.getElementById('testid').value = obj.id; }
	};
	var as_xml = new bsn.AutoSuggest('testinput', options);
</script>

Danke!
r4lle1882 ist offline   Mit Zitat antworten
Alt 22.07.2010, 13:23  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wir sind kein Dienstleistungsforum. Wir helfen dir gerne bei konkreten Problemen aber die Lösung musst du schon selbst zusteuern ...
__________________
▇█▓▒░◕‿‿◕░▒▓█▇
Flor1an ist offline   Mit Zitat antworten
Alt 22.07.2010, 13:34  
Neuer Benutzer
 
Registriert seit: 14.07.2010
Beiträge: 8
PHP-Kenntnisse:
Anfänger
r4lle1882 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Fummel an der Sache schon seit Tagen. Leider fehlen mir wahrscheinlich einige Basiskenntnisse...

Dachte wenn es für dich kein großes Problem darstellt, wäre es eine Kleinigkeit mir kurz weiter auf die Sprünge zu helfen.

Danke trotzdem für deine Antworten. Werde es mal an anderer Stelle versuchen.

Wünsche noch einen angenehmen Tag.
r4lle1882 ist offline   Mit Zitat antworten
Alt 22.07.2010, 13:49  
Erfahrener Benutzer
 
Registriert seit: 15.04.2010
Beiträge: 813
PHP-Kenntnisse:
Fortgeschritten
Paul.Schramenko befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von r4lle1882 Beitrag anzeigen
Fummel an der Sache schon seit Tagen. Leider fehlen mir wahrscheinlich einige Basiskenntnisse...
Dann wirst du dir diese aneigenen müssen....

Zitat:
Zitat von r4lle1882 Beitrag anzeigen
Dachte wenn es für dich kein großes Problem darstellt, wäre es eine Kleinigkeit mir kurz weiter auf die Sprünge zu helfen.
Das ist halt echt ein Batzen Code, ich wollte mir das durchlesen, nur dann hab ich dem js-Code gesehn und hatte auch keine Lust mehr...
__________________
"My software never has bugs, it just develops random features."
"Real programmers don't comment. If it was hard to write, it should be hard to understand!"
Positive Bewertungen sind nicht unwillkommen...
Paul.Schramenko ist offline   Mit Zitat antworten
Alt 22.07.2010, 13:54  
Neuer Benutzer
 
Registriert seit: 14.07.2010
Beiträge: 8
PHP-Kenntnisse:
Anfänger
r4lle1882 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke Dir Paul trotzdem!
r4lle1882 ist offline   Mit Zitat antworten
Alt 22.07.2010, 14:52  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.201
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist ein sehr geschätzer MenschDark Guardian ist ein sehr geschätzer MenschDark Guardian ist ein sehr geschätzer MenschDark Guardian ist ein sehr geschätzer Mensch
Standard

Viel ist da nicht zu machen eigentlich...

Code:
<script type="text/javascript">	
	
	var options = {
		script: "test.php?limit=10&timeout=5000&",
		varname:"input",
		shownoresults:true,
		maxresults:10,
		callback: function (obj) { document.getElementById('testid').value = obj.id; }
	};
	var as_xml = new bsn.AutoSuggest('testinput', options);
</script>
Da sieht man ja schon sehr deutlich wo sich die Callback Funktion befindet und was diese als Parameter bekommt und was sie tut.

Eine Weiterleitung erfolgt in JS sehr leicht:

document.location.href = 'http://www..........';
__________________
Möglicherweise kommt zu "Menschen lügen" auch "Menschen bauen Mist".
Dark Guardian ist offline   Mit Zitat antworten
Alt 22.07.2010, 15:28  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.849
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Ich halte den ganzen Ansatz für falsch. Alle möglichen Datensätze werden in den Speicher geladen. Das mag ja für diese geringen datenmengen ganz hübsch aussehen, aber mach das mal für eine Adressliste mit 14 Mio Datensätzen.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 22.07.2010, 16:07  
Erfahrener Benutzer
 
Registriert seit: 15.04.2010
Beiträge: 813
PHP-Kenntnisse:
Fortgeschritten
Paul.Schramenko befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Wolla Beitrag anzeigen
Ich halte den ganzen Ansatz für falsch. Alle möglichen Datensätze werden in den Speicher geladen. Das mag ja für diese geringen datenmengen ganz hübsch aussehen, aber mach das mal für eine Adressliste mit 14 Mio Datensätzen.
Wenn ich das richtig sehe wird da nur ein bestimmter teil geholt, wegen der Zeile:
Code:
script: "test.php?limit=10&timeout=5000&",
Und mit maxresults werden auch nur 10Einträge geholt
__________________
"My software never has bugs, it just develops random features."
"Real programmers don't comment. If it was hard to write, it should be hard to understand!"
Positive Bewertungen sind nicht unwillkommen...
Paul.Schramenko ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP & AutoSuggest Funktion r4lle1882 PHP Tipps 2010 0 14.07.2010 12:47
[Erledigt] function.call-user-func-array: First argument is expected to be a valid ca stayInside PHP-Fortgeschrittene 2 22.09.2009 20:00
[Erledigt] funktion aufrufen wenn andere funktion aufgerufen wird kalli.c0re PHP Tipps 2009 16 05.06.2009 13:49
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
funktion für html escape etc. TeazY PHP Tipps 2009 19 12.02.2009 13:19
Wert einer Funktion an andere Funktion übergeben Secondary PHP Tipps 2008 14 27.08.2008 10:36
gpc_quotes funktion: verbesserungsvorschläge? Promaetheus PHP Tipps 2007 10 12.08.2007 19:29
Komplexe Funktion: +Übersichtlichkeit, -Performance Jacks Rache PHP Tipps 2006 3 07.06.2006 14:22
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
Rückgabewert einer rekrusiven Funktion PHP-Fortgeschrittene 7 06.10.2005 18:44
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
In einer Funktion auf eine Funktion der Klasse zugreifen phpbeginner PHP Tipps 2005-2 2 28.07.2005 00:30
Funktion in einer Funktion aufrufen? PHP Tipps 2005-2 11 14.06.2005 15:14
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
Referenz auf Funktion übergeben PHP-Fortgeschrittene 7 20.07.2004 09:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
autosuggest, php autosuggest, autosuggest php, callback function, php callback, auto suggest, autosuggest callback, autosuggest is already set, bsn.autosuggest, autosuggest javascript, callback php, timothy groves autosuggest, bsn autosuggest, javascript callback funktion, \autosuggest is already set\, javascript autosuggest, javascript callback function, autosuggest is already set!, autosuggest bsn, autosuggest-funktion

Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum