Eingabefelder füllen

Hallo,
ich arbeite gerade an einem Anfrageformular für Kunden.
Sobald der Kunde die Artikelnummer in ein Input-Feld eingegeben hat und dieses verlässt (onchange), sollen weitere Felder mit Daten wie Bezeichnung, Preis etc. gefüllt werden.
Die Daten sind in einer SQL-Datenbank gespeichert.

Hier mal ein Ausschnitt aus der PHP-Datei:
Code:
<script type="text/javascript">
function ausfuellen(bezeichnung, preis) {
 document.all.artikel_bezeichnung.value = bezeichnung;
 document.all.artikel_preis.value = preis;
}
</script>

PHP:
echo "<form name=\"anfrage\" action=\"send_anfrage.php\" method=\"post\">\n
     Artikelnummer: <input name=\"artikel_nummer\" type=\"text\" onchange=\"find_article();\"><br>
     Bezeichnung: <input name=\"artikel_bezeichnung\" type=\"text\"><br>
     Preis: <input name=\"artikel_preis\" type=\"text\">
     .
     .
     .
     <input type=\"submit\" value=\"Anfrage senden\"><br>
     <input type=\"reset\" value=\"Anfrage verwerfen\">
     </form>";

Mein Problem:
Wie bekomme ich jetzt die Artikeldaten aus der Datenbank in die Felder? Damit meine ich nicht die SQL-Abfrage selber, sondern die Art, wie ich das Abfrageergebnis in die Felder bekomme.

Hoffe, mein Problem ist ausreichend beschrieben.
Schon mal Danke im Voraus
 
In deinem Fall würde dir ein AJAX weiterhelfen.

Sorry, aber von AJAX habe ich bisher noch nicht viel gehört und überhaupt keine Ahnung, wie ich das machen soll.
Habe in den Wiki-Bericht reingeschaut - und noch weniger verstanden.
Gibt es da nicht noch andere Lösungen? Eigentlich müsste es doch irgendwie möglich sein, PHP-Code mit JavaScript zu kombinieren?
 
Zuletzt bearbeitet:
Eigentlich müsste es doch irgendwie möglich sein, PHP-Code mit JavaScript zu kombinieren?

Genau DAS ist Ajax. Denn Ajax steht für: Asynchrones JavaScript und XML. (so ungefähr)

Und ist sozusagen ein Begriff für genau diese Kommunikation zwischen Client und Server ohne einen vollen Neu Request zu starten.

Ohne Ajax wirst du da nicht drum rum kommen.
 
So wie ich dich verstanden habe willst du anhand der Artikelnummer den dazugehörigen Preis und die Beschreibung aus einer MYSQL Tabelle abfragen.
Entweder lädst du alle Daten in ein JavaScript Array ( was aber wegen der Perfromence nicht sinnvoll wäre ) oder du lädst die Daten dynamisch nach -> AJAX
 
Hallo,
habe mich mal etwas umgesehen und bin auf den Mozilla Developer Center-Seiten auf folgenden Code gestoßen:
Javascript:
var http_request = false;

    function macheRequest(url) {

        http_request = false;

        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // zu dieser Zeile siehe weiter unten
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
            return false;
        }
        http_request.onreadystatechange = alertInhalt;
        http_request.open('GET', url, true);
        http_request.send(null);

    }

    function alertInhalt() {

        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                alert(http_request.responseText);
            } else {
                alert('Bei dem Request ist ein Problem aufgetreten.');
            }
        }

    }

Da ich jetzt immer noch nicht so recht weiter weis, hier mal meine Frage:
Ist das ein Lösungsansatz? Und wie bekomme ich jetzt meine SQL-Anfrage als Rückgabewert?
 
Zuletzt bearbeitet von einem Moderator:
Du musst ein Skript aufrufen, dass als Argumente die Artikelnummer bekommt, die Datenbankabfrage macht und die Ergebnisse im gewünschten Format (ich empfehle dir JSON statt XML) ausgibt, die dann von JavaScript verarbeitet werden. Das PHP-Skript könnte dabei wie folgt aussehen:
PHP:
<?php

	// Prüfung ob Argument vorhanden und gültig ist
	// isValidItemNumber() würde die Syntax des Argumentwerts prüfen
	if( !isset($_POST['item']) || !isValidItemNumber($_POST['item']) ) {
		header($_SERVER['SERVER_PROTOCOL'].' 400 Bad Request');
		exit;
	}

	// getItemById() würde die Daten aus der Datenbank holen
	$item = getItemById($_POST['item']);
	// Prüfung ob Artikelnummer existiert
	if( !item ) {
		header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');
		exit;
	}

	header($_SERVER['SERVER_PROTOCOL'].' 200 OK');
	header('Content-Type: application/json; charset=utf-8');

	echo json_encode($item);
Die json_encode()-Funktion ist allerdings erst durch die JSON-Erweiterung oder ab PHP 5.2.0 verfügbar.
 
Hallo nochmal,
also ich habe jetzt ein PHP-Skript erstellt, nach der Vorlage von Gumbo, vielen Dank dafür.
Noch funktioniert's nicht ganz so wie gewollt, aber ich habe das Problem jetzt mal
"provisorisch" gelöst.
Da es sich ja "nur" um 2 bis 3 Felder handelt, die automatisch ausgefüllt werden sollen,
habe ich einfach 3 mal den http_request durchlaufen lassen und dem PHP-Skript mittels
GET_['feldname'] mitgeteilt, welche Daten geladen werden müssen.

Ist zwar wirklich nur ein absolutes Provisorium, aber wenigstens läufts jetzt soweit.

Besten Dank euch allen für die guten Tipps, habt mir sehr geholfen.
 
Zurück