per JS eine Datenbank auslesen? (BSP gesucht)
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
auslese
brauche
code
datenbank
datum
funktionieren
haus
header
http
item
liegen
page
post
server
suche
telefonieren
type
url
verbinden
vermeiden
-
Hallo
wie kann ich per JavaScript eine Datenbank auslesen? .... Was brauche ich dazu? (Biliotheken)
ich suche ein möglichst einfaches Beispiel, wie ich per JS auf eine DB zugreifen kann?
geht das direkt mit MySQL ?
oder ist es einfacher die Daten als XML abzulegen und diese dann (per JS) auszulesen?
Wo finde ich Beispiele dafür? Alles was ich bei Google gefunden habe ist zu komplex, bzw ich kapiers nicht
Danke! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
erstmal am anfang gefragt: wo soll diese Datenbank denn liegen?
ist die datenbank serverseitig, oder willst du sie im clienten (beim nutzer) direkt erwarten?
Auf eine Serverseitige Datenbank wäre es am leichtesten mit Ajax+PHP zuzugreifen. vllt ein eigenes bissel gesichertes request-system schreibn, dann sollte es so laufen
-
Serverseitig
wie gesagt, bei meiner Suche nach Ajax Beispielen habe ich nichts gefunden,
womit ich was anfangen kann (was ich kapiere)
auf Webspace liegt XML mit ca. 100 items
wie kann ich per JS dann alle items auslesen, die eine bestimmte Bedingung erfüllen ( Kategorie, ID, usw.)
bei googeln nach Ajax daten auslesen kommt vieles, wozu man schon tief in der Materie drin sein muss um es zu verstehen, ich brauche aber was für Anfänger ... jquery ist auch so ein Begriff der da passen könnte, oder ?!?
PHP will ich ja eigentlich vermeiden ... bei der Abfrage
-
ohne PHP bzw. serverseitiges skript kommst du meines Wissens nach nicht an die Datenbank.
Darf ich fragen, warum du PHP vermeiden willst?
Lese dir vielleicht mal bei wikipedia etc. durch, wo die anwendungsgebiete für javascript liegen -
also wenn du PHP meiden möchtest ginge es nurnoch mit ASP, und das ist noch schlimmer.
folgendermaßen: du benötigst von deinem clienten aus auch eine möglichkeit zur datenbank dich zu verbinden. doch mit einer datenbank verbinden kann javascript einfach nicht, das geht halt nicht. Dafür brauchst du einen vermittler, wo wohl PHP ins spiel kommt. mit PHP kannst du die anfragen auswerten und dann das entsprechende serv'n. wenn du diese möglichkeit nicht möchtest, dann halt nicht.
mit XML kannst dus auch machen, du kannst sie aber nur aufrufen, und dann das KOMPLETTE laden, nicht nur teile. Außerdem ist es dir nicht möglich änderungen daran vorzunehmen. -
ich kann ja die XML per PHP erzeugen, das ist kein Problem
aber wie bekomme ich die Daten verfügbar für externe Webseiten, die kein PHP können,
Homepage1: DB und XML (mit PHP)
Homepage2: Auslesen der XML (von Homepage1) ohne PHP
-
Das Problem an Ajax ist das es in einer Sandbox läuft, sprich du nicht auf andere domains verweisen kannst, dass ist eine Schutzvorrichtung, damit die Scripte nicht immer "nach Hause telefonieren" oder ungewollten code nachladen, umgehen kann man das auf 3 Arten, welche abhängig vom Ziel sind.
1.) Will man lediglich nach Hause telefonieren und dabei ein paar Infos mitsenden, dann kann man das wie folgt machen:
2.) Kann man seinen Server dazu benutzen andere Seiten aufzurufen und so die Daten zu erhalten. Das sähe mit PHP und JS etwa so aus (zuerst das JS):(new Image).src='http://example.com?referer'+(document.referrer);
dann PHP:var werteAjaxAus = function(response){ var xml = response.responseXML; /* * und dann kann man "xml" so verwenden wie die DOM-Methoden * von document (getElementsByTagName, getElementById, …) */ } (new ajax).send({ url:'getOtherPage.php', data:'page=http://example.com', callback:werteAjaxAus });
3.) Kann man ein javascript einbinden, dass auf eine fremde Website verweist und von dort mit Daten befüllt wird, diese Facebook "like-buttons" funktionieren z.B. so, allerdings ist die große Gefahr daran, dass du sozusagen anderen Parteien Tür und Tor öffnest, wenn du deren Scripte lädst. Da du aber anscheinend über beide Server verfügst und der eine nur kein PHP kann geb ich dir hier mal eine Anleitung. Die Seite bekommt wie gesagt das JS:<?php $page = $_GET['page']; if(!preg_math('@(?:http|https)://@', $page)){ // Ein sehr geschwätziger Server, falls er etwas nicht kann ^^ header('HTTP/1.1 501 Not Implemented - Die Anfragemethode ist unbekannt'); exit; } $data file_get_contents($page); /* * dem Server kann ja ziemlich egal sein ob das xml ist oder nicht. * Solche Fehler muss das JS beim Client abfangen… */ echo $data; ?>
Dieses "externe.php" wird nun vom anderen Server mittels PHP befüllt, z.B. so:<script type="text/javascript" src="http://example.org/externes.php"></script>
Damit hast du dann ein JS-Object namens data, dass alle Informationen aus dem xml-Dokument enthählt. Das XML von JS direkt zu verarbeiten geht leider nicht, da JS dafür keine Methode zur Verfügung stellt und alle workarounds die mir spontan einfallen im IE nicht funktionieren…<?php $xml = simplexml_load_file('xml.xml'); $json = '('.json_encode($xml).');' header('Content-Type: text/javascript; charset=utf8'); echo "var data = $json"; ?>
Zum Schluss noch die verwendete Ajax-Klasse:var ajax = (function(){ var ajaxFactories = function(){ return [ function(){return new XMLHttpRequest();}, function(){return new ActiveXObject("Msxml2.XMLHTTP");}, function(){return new ActiveXObject("Msxml3.XMLHTTP");}, function(){return new ActiveXObject("Microsoft.XMLHTTP");} ]; }; var ajax = function(p){ p = p || {}; this.url = p.url || window.location; this.method = p.method || 'GET'; this.callback = p.callback || function(){}; this.data = p.data; var xmlhttp = false, factories = ajaxFactories(), i=0,l=factories.length; for(;i<l;i++){ try{ xmlhttp = factories[i](); }catch(e){ continue; } break; } this.xmlhttp = xmlhttp; } ajax.prototype = { send: function(p){ if(p)for(var i in p){if(p.hasOwnProperty(i))this[i]=p[i];} var post = this.method.toUpperCase() != 'GET' ? this.data : false, req = this.xmlhttp, callback = this.callback; if(!post) this.url += '?'+this.data; req.open(this.method,this.url,true); req.setRequestHeader('User-Agent','XMLHTTP/1.0'); if(post) req.setRequestHeader('Content-type','application/x-www-form-urlencoded'); req.onreadystatechange = function(){ if(req.readyState != 4)return; callback(req); }; if(req.readyState == 4)return; req.send(post); } } return ajax; })();
Mit freundlichen Grüßen
* edit: Ich habe den kompletten Code, außer die Ajax-Klasse, ohne Prüfung aus dem Kopf geschrieben, darum sind Fehler nicht ausgeschlossen
Die Ajax-Klasse ist zwar auch von mir aber diese funktioniert ziemlich sicher.
Beitrag zuletzt geändert: 28.3.2011 23:16:47 von nemoinho -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage