Zur Navigation

MySQL abfrage per JavaScript

1 Peter

Hallo an alle,

gibt es eine Möglichkeit per Javascript eine Datenbankabfrage [MySQL] durchzuführen?

Vielen Dank im voraus

Peter

01.06.2008 18:58

2 Rudy

Direkt nicht, aber Du kannst per XMLHTTPRequest (Ajax) ein serverseitiges Skript, z.B. PHP, aufrufen und die Antwort lesen, diese kannst Du dann weiterverarbeiten, z.B. den vom PHP-Skript ausgegebenen (HTML-)Text in ein Div oder so schreiben.

mit JQuery ginge eine Get-Abfrage z.B. so:

$.get('/php/skript.php', {id:3, parameter2:'test'}, 
function(data) {
  $('div#meindiv').html(data);
});

oder eine Post-Abfrage:

$.post('/php/skript.php', {parameter1:123, parameterx:'abcdef'}, 
function(data) {
  $('div#meindiv').html(data);
});

Oder wenn Du die Daten vom PHP-Skript als JSON ausgeben lässt:

$.getJSON('/php/skriptjson.php', {id:1, order:3}, function(j) {
  $('div#meindiv h3').html(j.title);
  $('div#meindiv div').html(j.text);
});

01.06.2008 19:45 | geändert: 01.06.2008 19:51

3 Peter

Hallo Rudy,

danke für Dein Tip, ich denke die Post-Abfrage werde ich nehmen.

Man schaun, wie das alles so funktioniert.

Ich werde sicherlich demnächst, weitere Fragen stellen.

Jetzt ermal lesen was das so steht:
http://www.very-clever.com/jquery-tutorial.php

01.06.2008 22:59

4 Rudy

Alles wichtige zu JQuery findest Du unter http://docs.jquery.com. Es gibt da einen Glaubenskrieg zwischen JQuery und Prototype-Fans, bislang hat mich JQuery allerdings noch nicht enttäuscht und ich finde die Syntax viel cleverer. Ich mache alles was JS anbelangt mit JQuery, die 25kb zusätzlich zu ladender Daten werden belohnt mit keinen aufzuwendenen Nerven für Browser-Inkompatibilitäten. Nach ein paar Tagen Übung und Nachschlagen in der Dokumentation lernt man diese Klasse sehr schätzen. JQuery macht auf allen Browsern das, was Du erwartest - natürlich nur wenn Du nicht zufälligerweise über einen Bug stolperst, was mir aber noch nie passiert ist.

01.06.2008 23:32 | geändert: 01.06.2008 23:37

5 Peter

Danke Rudy,

leider ist englisch nicht meine stärke ;-)
Das werde ich erst mal langsam auf mich eingehen lassen.
Mal schauen, wie ich eine Datenbankabfrage stellen muß.

Wenn ich richtig verstehe, wird ein "string" per javascript erstellt, gesenden und in eine Abfrage mit Ergebnisrücksendung ausgeführt.
Dazu brauche ich auf den Server "jquery-1.2.6.js".
Meine Datei hat 96KB kann da was gelöscht werden?

02.06.2008 20:36 | geändert: 02.06.2008 20:50

6 Rudy

leider ist englisch nicht meine stärke ;-)

Dachte das haben alle Deutschen in der Schule, so wie wir Italiener auch?

Mal schauen, wie ich eine Datenbankabfrage stellen muß.

ganz normal auf PHP-Seite. Wie immer. Nur das PHP wird von Javascript aufgerufen, die Parameter wie ein Objekt formatiert an die $.post-Funktion übergeben (die kannst Du auf PHP-Seite aber ganz normal mit $_POST auslesen) und schließlich die Ausgabe (was Du im PHP-Skript mit echo machst oder was außerhalb der PHP-Codeblöcke steht) wieder an Javascript übergeben (das steht dann wie im Beispiel im Parameter "data" der Funktion.

Beispiel:
$.post('/php/skript.php', {x:123, y:'abcdef', z:4}, 
function(data) {
  alert(data);
});
-> ruft /php/skript.php auf, mit den Parametern x,y,z (in skript.php verfügbar als $_POST['x'], $_POST['y'] und $_POST['z']) und gibt das, was Du in skript.php ausgegeben, in einer JS-Messagebox aus.

Dazu brauche ich auf den Server "jquery-1.2.6.js".
Die Jquery-Bibliothek musst Du vorher natürlich einbinden, damit Du das $-Objekt überhaupt hast. Ich benenne das immer nach jquery.js um, damit ich bei einem Update nicht nochmal den Code der Website bearbeiten muss, sondern einfach die Datei ersetzen kann.

<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
  $.post('/php/skript.php', {x:123, y:'abcdef', z:4}, 
    function(data) {
      alert(data);
  });
});</script>

02.06.2008 20:51

7 Peter

Dachte das haben alle Deutschen in der Schule, so wie wir Italiener auch?
Stimmt, ist bei mir schon über 20 Jahre her. Ist auch keine Endschuldigung, weis ich ;-)

ganz normal auf PHP-Seite. Wie immer. Nur das PHP wird von Javascript aufgerufen, ...

Also brauche ich eine PHP-Seite, mit der Abfrage, wenn diese funktioniert, kann ich sie per "jquery" als Bindeglied nutzen.
Die PHP-Seite wird auf den Server ausgeführt, um ich diese zeitlich begrenzen oder wird sie automatisch wieder nach kurzer Zeit gelöscht?

02.06.2008 21:29

8 Rudy

Also brauche ich eine PHP-Seite, mit der Abfrage, wenn diese funktioniert, kann ich sie per "jquery" als Bindeglied nutzen.

Genau. Eigentlich ist der XMLHTTPRequest das Bindeglied, jquery ist nur eine Javascript-Bibliothek, welche Dir den Umgang damit gehörig erleichtert. Du kannst schon auch mit etwas mehr Code das ganze ohne JQuery lösen, den XHMLHTTPRequest direkt mit Javascript erzeugen und die Post/Get-Abfrage absetzen. Dann musst Du aber im Rest des Programms auch wieder auf die Macken der verschiedenen Browser achten; wie Du beispielsweise am geposteten Code vom letzten Jahr siehst, wird bei der Funktion das XMLHTTPRequest-Objekt auf vier Arten versucht zu erzeugen, bis es geht oder eben fehlschlägt (JQuery macht dies für Dich unsichtbar von sich aus). Auch die Übergabe des Querystrings (der Post/Get-Daten) ist umständlicher (muss zusammengestöpselt und escaped werden) und nicht so schön sauber als Objekt wie bei JQuery. Und das Datenaustauschformat JSON ist mit dem Code noch gar nicht implementiert (da müsstest Du noch eval() auf die Rückgabe anwenden), wogegen JQuery dies von sich aus kann (es gibt $.getJSON/$.postJSON). Doch grundsätzlich gehts damit auch - es ist auch weniger Code zum Laden. Aber da dieser Ajax-Aufruf bei weitem nicht das einzige ist, was JQuery kann, finde ich, es lohnt sich damit zu programmieren.

Die PHP-Seite wird auf den Server ausgeführt, um ich diese zeitlich begrenzen oder wird sie automatisch wieder nach kurzer Zeit gelöscht?

Ich verstehe diese Frage nicht... was willst Du löschen?

02.06.2008 22:49 | geändert: 02.06.2008 23:20

9 Peter

Sorry, das ich erst jetzt Antworte, aber ich mußte erst die Probleme mit der Serverumstellung lösen.

Naja, die PHP-Seite wird ja nur auf den Server ausgeführt und nicht beim Client, aber warscheinlich habe ich mich auch nur falsch ausgedrückt.

Als nächstes kommen Plissee (Faltstore) als Maßartikel dran.
Dann werde ich es mit XHMLHTTPRequest versuchen.

Viele Grüße und ein schönes Wochenende
Peter

07.06.2008 00:11

... 1 Jahr und 5 Monate später ...

10 Simon (Gast)

Hallo,

ich bin grad dabei bei einer Registrierung zu überprüfen ob die emmail bereitz in der DB steht.

Jetzt ist meine frage wie ich aus meiner php einen wert an die
    function(data) {
      alert(data)
zurückgebe?!

Danke
für antworten

21.11.2009 14:01