-
PHP - Teil 42 - Ajax (Teil 2): Eine dynamische Namensliste nach dem Vorbild von Google Suggest
16.02.2012 in PHP von daniel_koch
- Zum Downloadmanager hinzufügen
- PDF-Datei herunterladen
- Arbeitsmaterialien herunterladen
- Video
- Kommentare ansehen (2)
- Kategorie: PHP
- Erstellt mit Programmversion: PHP 5/6
- Kompatibel ab Programmversion: PHP 5
- Dateigröße (PDF): 1.3 MB
- Dateigröße (Arbeitsmaterial): 1 KB
- Bisherige Zugriffe: 97
Zum Downloadmanager hinzufügen PDF-Datei herunterladen (1.3 MB) Arbeitsmaterialien herunterladen (1 KB) Zugehöriges Video-Training ansehen
Tipp: Dieser Inhalt befindet sich auch auf der:
Lieber Gast …
… die Inhalte von PSD-Tutorials.de stehen nur registrierten Mitgliedern zur Verfügung. Damit wollen wir den Communitygedanken weiterführen. Als Mitglied trägst du - wenn auch nur im Kleinen - zum Puls der Community bei. Und nur so ist es möglich, weiterhin hochwertige Inhalte für alle bereitzustellen.
Vorteile der kostenlosen Mitgliedschaft
Mit der kostenlosen und schnell erledigten Registrierung erhältst du viele nachhaltige Vorteile, die wir dir hier in aller Kürze aufzeigen möchten:
- PSD steht für professionelles Know-how in den Bereichen Bildbearbeitung mit Photoshop, Fotografie, Webentwicklung, Layout- und Vektorbearbeitung, 3D-Bearbeitung mit Cinema 4D und Co.
- Über 2200 Tutorials mit druckbarer PDF-Datei und teilweise den zugehörigen Arbeitsmaterialien
- Mehr als 500 Video-Trainings als Stream zur Direktanzeige und zum Download
- Abruf von über 1000 Downloads zu Photoshop-Presets, 3D-Modellen, Grußkarten, Texturen & Co
- Zugriff auf ein sehr aktives Forum mit Antworten im Minutentakt
- Deine Daten sind sicher. Sie werden nicht weitergegeben! Die Mitgliedschaft kann jederzeit und ohne Aufwand wieder gelöscht werden.
Reinschnuppern als Gast
Niemand kauft gerne die Katze im Sack, auch wenn sie kostenlos ist. Wir haben eine Handvoll Tutorials und Video-Trainings ausgesucht, die du auch als Gast ohne Registrierung ansehen kannst. Gefallen sie dir, stehen dir nach der Registrierung alle oben genannten Inhalte zur Verfügung.
- Download: Sepia-Vintage-Effekt-Aktion
- Download: Spiegelungen 2
- Download: Vektor-Logo (Eidechse)
- Tutorial: Linien zum Glühen bringen
- Tutorial: Ballons aus einer Schublade
- Tutorial: Neue Pinsel erstellen leicht gemacht
- Tutorial: Kommerzielle Fotografie 01: Berufswunsch Fotografie
- Videotraining: Die Programmoberfläche und der Arbeitsbereich von Adobe InDesign
- Videotraining: Lichtscheinkontureneffekt mit Animation
- Videotraining: CorelDRAW X6 Grundlagen - Hilfsmittel Freihand, 2-Punkt-Linie, Bezier, B-Spline, Polylinie, Stift, 3-Punkt-Kurve
- Videotraining: CorelDRAW X6 Grundlagen: Hilfsmittel Form - Heranziehen, Zurückweisen
Das Punktesystem
Einen winzigen Haken gibt es noch. Es gibt bei uns ein Punktesystem. Damit soll erreicht werden, dass Mitglieder sich aktiv in unserer Community beteiligen. Sobald du im Forum schreibst oder Tutorials kommentierst, bekommst du Punkte. Mit diesen Punkten kannst du wiederum Tutorials anschauen oder Downloads herunterladen. Mit der Registrierung bei PSD-Tutorials.de erhältst du ein Startguthaben von 100 Punkten, womit du schon ein gutes Stück weit kommst.
PHP-Workshop-DVD - Basics & Tricks
- 12 Stunden Video-Training, 480 PDF-Seiten Tutorials
- Basics, Formulare, Datenbanken, XML und Co.
- 4 Stunden Bonusmaterial zum Webdesign (mit Photoshop
Kommentare
Tutorial empfehlen
Anleitung (Bilder + Extras werden nur für Mitglieder eingeblendet)
Wie die herkömmliche Kommunikation zwischen Server und Client funktioniert, habt ihr gesehen. Dank Ajax kann der Browser mittels HTTP mit dem Server kommunizieren. Auf diese Weise können HTTP-Requests an Event-Handler gebunden werden. Zusätzlich lassen sich die per HTTP erhaltenen Daten über die DOM-Schnittstelle in die aktuell angezeigte Webseite einbinden. Und genau das ist der riesige Vorteil von Ajax.
Bei "normalem" JavaScript ist es durch das DOM (Document Object Model) möglich, über die sogenannten Event-Handler auf Nutzereingaben zu reagieren und die aktuell angezeigte Webseite zu manipulieren. Typische Event-Handler bzw. Ereignisse können das Anklicken eines Elements (onclick) oder das Überfahren eines Elements mit dem Mauszeiger (mouseover) sein.
Auf diese Weise lassen sich beispielsweise Bilderwechsel realisieren, bei der ein angezeigtes Bild gegen ein anderes ausgetauscht wird, sobald man darüber mit dem Mauszeiger fährt. Realisiert wird das jedoch ausschließlich über die im Browser integrierte Script-Engine. Eine Verbindung zum Server besteht in diesen Fällen nicht. Ganz anders bei Ajax, durch das der Browser eben auch mit dem Webserver kommunizieren kann.
Ajax-Anwendungen entwickeln
Die eigentliche Ajax-Schnittstelle ist ein JavaScript-Objekt. Dieses Objekt kann HTTP-Requests senden und HTTP-Responses empfangen. Das Problem an diesem JavaScript-Objekt ist, dass – und das verwundert sicherlich nur wenig – es nicht alle Browser richtig oder überhaupt interpretieren.Ursprünglich wurde das Objekt von Microsoft entwickelt. Dieses Objekt ist anfangs eine sogenannte Remote-Scripting-Komponente gewesen und wurde später als XML-HTTP-Objekt in Form einer ActiveX-Komponente implementiert. Seit Version 7 kennt der IE, so wie andere moderne Browser, ein unabhängiges XML-HTTP-Objekt.
var httpRequest = false;
if(window.XMLHttpRequest)
// Für Mozilla, Safari, Opera, MS IE 7+
httpRequest = new XMLHttpRequest();
else if(window.ActiveXObject) { // Für MS IE 5, 6
try {
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
Innerhalb der Variablen
httpRequest wird das XML-HTTP-Objekt gespeichert. Für die modernen Browser greift if(window.XMLHttpRequest). Darüber wird überprüft, ob das XML-HTTP-Objekt im JavaScript-Interpreter verfügbar ist. In diesem Fall wird über httpRequest = new XMLHttpRequest(); eine Instanz dieses Objekts innerhalb der Variablen httpRequest gespeichert.Für den alten IE greift die
else-if-Abfrage. Weitere Unterscheidungen zwischen den verschiedenen Browsern sind dann übrigens nicht mehr notwendig.Eine dynamische Namensliste umsetzen
Ihr wisst nun, was es mit Ajax auf sich hat. Nun geht es an die Umsetzung einer ersten echten Ajax-Anwendung. (Das vorgestellte Hallo-Welt!-Beispiel ist zwar eine funktionierende Ajax-Anwendung gewesen, ihr praktischer Nutzen ist aber gering). Durch die folgenden Schritte wird eine dynamische Namensliste umgesetzt.Dieses Beispiel lässt sich später beliebig auf andere Anwendungsfälle umstellen. Denkbar ist eine Suchmaschine ebenso wie jede andere Art von dynamischen Listen.
Ajax-Anwendungen zeichnen sich oft durch eine Kombination aus HTML, JavaScript und PHP aus. Diese Kombination wird auch im folgenden Beispiel verwendet. Bevor die Syntax des Beispiels vorgestellt wird, zunächst ein Blick auf das Ergebnis. Ruft man die Seite im Browser auf, ist an der erst einmal nichts Spektakuläres zu erkennen.

A ein, werden alle Mitarbeiter aufgeführt, deren Name mit A beginnt.
n ein, reduziert sich die Liste auf Namen, die mit der Zeichenfolge An beginnen.
Eine solche Anwendung ist enorm praktisch, vor allem natürlich auch, weil die Seite vom Anwender nicht permanent neu geladen werden muss.
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
function namensAuswahl(str){
var httpRequest = false;
if (window.XMLHttpRequest) {
httpRequest=new XMLHttpRequest();
}
else if(window.ActiveXObject) {
try {
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
httpRequest.onreadystatechange=function()
{
if (httpRequest.readyState==4 && httpRequest.status==200)
{
document.getElementById("feld").innerHTML=httpRequest.responseText;
}
}
httpRequest.open("GET","liste.php?q="+str,true);
httpRequest.send();
}
</script>
</head>
<body>
<h2>Bitte den gewünschten Namen eingeben</h2>
<form>
<input type="text" onkeyup="namensAuswahl(this.value)" />
</form>
<p>Übereinstimmungen: <span id="feld"></span></p>
</body>
</html>
Interessant ist in diesem Fall der
span-Bereich. In dem wird später die dynamische Namensliste angezeigt. Ausgelöst wird die Funktion durch den Event-Handler onkeyup. Dieser Event-Handler tritt ein, wenn der Anwender eine Taste gedrückt und diese wieder losgelassen hat.
<?php
$a[]="Anja";
$a[]="Anna";
$a[]="Amalia";
$a[]="Bea";
$a[]="Beate";
$a[]="Bonny";
$a[]="Cornelia";
$a[]="Conny";
$a[]="Cora";
$a[]="Dora";
$a[]="Doris";
$a[]="Dorothea";
$a[]="Donna";
$a[]="Emelie";
$a[]="Elisabeth";
$a[]="Franz";
$a[]="Frieda";
$a[]="Friedrich";
$a[]="Florian";
$a[]="Gerd";
$a[]="Gerda";
$a[]="Hans";
$a[]="Horst";
$a[]="Unni";
$a[]="Inses";
$a[]="Jan";
$a[]="Jana";
$a[]="Jens";
$q=$_GET["q"];
if (strlen($q) > 0)
{
$hint="";
for($i=0; $i<count($a); $i++)
{
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q)))){
if ($hint==""){
$hint=$a[$i];
}
else{
$hint=$hint." , ".$a[$i];
}
}
}
}
if ($hint == ""){
$response="Keine Übereinstimmung gefunden";
}
else{
$response=$hint;
}
echo $response;
?>
Innerhalb des Skripts wird zunächst einmal ein Array erzeugt. Dieses Array besteht aus einer Vielzahl an Namen. Anschließend überprüft das Skript, ob die übermittelte Zeichenkette mit einem der im Array vorhandenen Werte übereinstimmt. Ist das nicht der Fall, wird
Keine Übereinstimmung gefunden ausgegeben.
Werden ein oder mehrere passende Namen gefunden, werden diese als Response geliefert. Dieser Response wird anschließend am span-Platzhalter im HTML-Dokument angezeigt. Mehr ist tatsächlich nicht nötig, um eine voll funktionsfähige Ajax-Anwendung umzusetzen, die durchaus eine ansprechende Funktionalität bietet.
Dieses Beispiel zeigt noch einmal deutlich die möglichen Vorteile, die Ajax gegenüber anderen Technologien bieten kann. Denn bei herkömmlicher Client-Server-Kommunikation müsste das Formular, in das der Name eingetragen wurde, jeweils an den Server gesendet werden.
-
Reklame
-
-
- Fotobüchern
- Umrandung um Textfeld
- Kanten glätten bei meinem Bild oder Vektor?
- After Effects Ram-Vorschau - Problem mit Cache (aktualisert nicht)
- blender render stürzt ständig ab
- jQuery - Größe von einem Frameset ändern?
- [CS5] "Löschen-Mitteilung"
- Zerissenes Foto
- Biete Programmierung Ihres PSD-Designs
- Fehler beim Platzieren von Bildern
- Zeilenumbruch CS4
- Gestaltung eines Logos
- Kaufberatung Drucker
- Dynamische Auswahlliste: Name und ID übergeben
- Adobe Encore - Probleme Schaltflächen Unterbild
- 2 Fotos mit unterschiedlichem Schlagschatten in einer Datei
- Copyright-Frage - öffentliche Veranstaltung
- Photoshop auf Mini Lappi
- Link auf Anker - Firefox Problem
- Auftrag: Individuelle Flash-Gallerie
-
-
Aktuelles Commag
Anzeige
-
Anzeige


Mereel
02.05.2012 - 20:31
Interessant wäre noch gewesen, was der Code jetzt eigentlich im einzelnen macht. So muss ich leider sagen, konnte ich aus diesem Tut eigentlich nicht wirklich viel mitnehmen.
mics
14.04.2012 - 00:15
Super tutorial. hab vorher ajax nie so richtig verstanden !!