ObiWanBelix Geschrieben 24. Mai 2007 Geschrieben 24. Mai 2007 Hallo, ich möchte mir gerne einen kleinen Webservice schreiben und bräuchte hierfür noch ein paar Informationen. Was möchte ich erreichen? Ich möchte in der URL z.B: www.meineseite.de?Stil=HardRock eingeben und im Browser sollen alle Musiktitel zu der Musikrichtung angezeigt werden. Wo habe ich das Problem? Ich weiß nicht wie ich die Daten an den Browser zurücksende. Gibt es da ein ResponseObjekt das ich in meinem PHP-Code befüllen muss? Was ist hierfür notwendig? Vielen Dank für Euere Antworten Ps.: Habe nach ähnlichen Themen schon gesucht, aber bitte nicht in der Luft zerreissen falls es schon einen ähnlichen Post gibt. Zitieren
jasso Geschrieben 24. Mai 2007 Geschrieben 24. Mai 2007 ich nehme mal schwer an dass es hier an den grundlagen von php scheitert. du rufst mit deinem link eine php-seite auf (bin mir jetzt nicht sicher ob das so wie du das beschreibst geht oder ob du die php-seite selbst noch mit in den link mit aufnehmen musst. kannst ja probieren.). deine php-seite läuft dann auf dem server ab und erzeugt quasi die html-seite die dann an den browser zurückgegeben wird. im php-code kannst du ganz einfach mit echo '<tr><td>blablabla....den html-code an der entsprechenden stelle ergänzen. war jetzt nur auf die schnelle. falls nicht klar such dir einfach über google irgendein php-tutorial lg jasso Zitieren
ObiWanBelix Geschrieben 24. Mai 2007 Autor Geschrieben 24. Mai 2007 Hallo Jasso, ich habe mich nicht klar ausgedrückt. 1. Request an meine PHP-Seite 2. In der PHP Seite wird anhand der übergebenen Daten/Parameter ein XML-Dokument aufgebaut. 3 Jetzt möchte ich, dass das XML-Dokument mittels XSLT-Stylesheet aufbereitet wird und angezeigt wird. 4 alles kein Problem bis auf Punkt 3. Es muss doch ein ResponseObject geben in dem ich das serialisierte XML-Dokument (DOM) bereitstelle. Wie läuft das denn bei einem Webservice? Ps.: So etwas finde ich in keinem Tutorial!! Zitieren
jasso Geschrieben 24. Mai 2007 Geschrieben 24. Mai 2007 ich habe mich nicht klar ausgedrückt.hmmm... oder ich habs einfach nur falsch verstanden. kommt auch vor^^ na egal. musst du die daten irgendwohin übergeben? oder hast du die vorgabe das über eine xml-datei zu machen? ansonsten leuchtet er mir nur schwer ein warum du diesen umweg machen willst und nicht einfach die daten in html-code ausgiebst. mit xml und xslt kann ich leider nicht dienen. hab ich zwar irgendwann mal gelernt aber noch nicht wirklich viel verwendet. lg jasso Zitieren
ObiWanBelix Geschrieben 24. Mai 2007 Autor Geschrieben 24. Mai 2007 Hallo Jasso, Vorgabe habe ich keine, das soll ein kleines Eigenes Projekt sein. Ich bin der Meinung, dass man nur so lernt und nicht Probleme mit der erst Besten Möglichkeit löst. Denn hierbei stellt sich die Frage wie es dann mit eventuellen Weiterentwicklungen aussieht und..und.. und. Ich möchte diesen Webservice auch von einem Programm (VB/JAVA.....)aus ansprechen, daher muss es eigentlich in 2 Modis laufen. 1. Ausgabe der Daten per HTML(XML mit XSLT) 2. Rückgabe der Daten per XML, für externe Anwendungen. Beispiel1: Request aus Browser: www.meineseite.de?mode=HTML&genre=Rock Ergebnis: Anzeige der Datensätze Beispiel2: Request aus Programm: www.meineseite.de?mode=XML&genre=Rock Ergebnis: XML-Struktur im Programm die die Daten der Abrage enthalten. Falls hierzu noch jemand Ideeen hat bin ich sehr dankbar. Zitieren
geloescht_JesterDay Geschrieben 24. Mai 2007 Geschrieben 24. Mai 2007 3 Jetzt möchte ich, dass das XML-Dokument mittels XSLT-Stylesheet aufbereitet wird und angezeigt wird. 4 alles kein Problem bis auf Punkt 3. Es muss doch ein ResponseObject geben in dem ich das serialisierte XML-Dokument (DOM) bereitstelle. [...] Ps.: So etwas finde ich in keinem Tutorial!! XSLT findet im Browser statt. Also ähnlich wie er ein HTML Dokument nimmt und interpretiert und darstellt. Das ganze geschieht beim Laden des Dokuments. Das was bei XSLT rauskommt (nach der Transformation) ist nichts anderes als HTML. Und das zeigt der Browser einfach an, wie wenn er nichts anderes bekommen hätte. Wenn du eine dynamische (HTML-)Seite haben willst, bleibt dir nichts als das zu benutzen, was genau dafür entwickelt wurde: Javascript. Oder du schickst jedesmal das komplette XSLT-Dokument wieder an den Browser. So wie es HTML (bzw. PHP o.ä.) auch tun. Wenn du teile der Webseite neu aufbauen willst und das nicht über ein Java-Applet tun willst, dann bleibt dir nur AJAX (Asynchronous Javascript And XML). Ein Browser ist ganz blöd und zeigt nur das an, was er bekommt. Nix mit ResponseObjekt o.ä. Ein ResponseObject setzt schon wieder ein Programm vorraus, dass auf so etwas wartet (Im Browser nur über AJAX oder ein Java-Applet). P.S. Schau mal nach AJAX-Tutorials EDIT: Warum willst du 2 Modi? Wenn du das immer als XML (mit XSLT) zurückschickst, kann das Programm was die Daten bekommt ja entscheiden, was es damit tut. Also ein Client der nicht wie der Browser das einfach anzeigt kann die Daten ja aus der XML-Struktur lesen, ohne eine Transformation auszuführen. Zitieren
MaddinMV Geschrieben 24. Mai 2007 Geschrieben 24. Mai 2007 Hallo Obi, Was du suchst ist die Verwendung von AJax.. 2Möglichkeiten entweder du schaust ob du was im netz dazu findest (siehe JesterDay) oder du kaufst die für 3.99 oder so...das buch AJAX schnell+kompakt von Christian Wenz, da ist genau das erklärt was du brauchst (hab ich gerade am wickel) functions.js var XMLHTTP = null; //festlegen des RequestObjectes //Browserüberprüfung, weil IE realisiert AJAX via ActiveX //IE7 und FF kennen das XMLHttpRequestobject schon if(window.XMLHttpRequest){ XMLHTTP = new XMLHttpRequest(); }else if(window.ActiveXObject){ try{ XMLHTTP = new ActiveXObject("Msxml2.XMLHTTP"); }catch(ex){ try{ XMHTTP = new ActiveXObject("Microsoft.XMLHTTP"); }catch(ex){ } } } //readyState==4 --> bedeutet: die Daten wurden geladen und //stehen zur Verfügung function DatenAusgeben(){ if(XMLHTTP.readyState == 4){ var d = document.getElementById("Daten"); d.innerHTML +=XMLHTTP.responseText; //Schreibt den Text der txt Datei in den <p>-Tag } } //wird vorm Laden der Seite aufgerufen window.onload = function(){ XMLHTTP.open("GET","daten.txt"); XMLHTTP.onreadystatechange = DatenAusgeben; XMLHTTP.send(null); } [/PHP] so sieht das ganze mit einer Textdatei aus, die aufm Server liegt, das geht aber auch mit ner XML datei, denn Ajax kennt nicht nur obj.responseText sondern auch obj.response.xml, bei dem Thema bin ich aber noch nicht =) die HTML datei dazu: [PHP] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script type="text/javascript" src="functions.js"> <link rel="stylesheet" type="text/css" href="styles.css" /> </head> <body> <div class="haupt"> <p id="Daten">Daten: </p> </div> </body> </html> in daten.txt kannst du reinschreiben was du willst, zum Beispiel, Hallo ich bin Ajax... und die legst du auch auf dem Server ab ^^ du kannst in die txt datei auch kompletten HTML Code einfügen, der wird dann mit "übersetzt" hoffe ich konnte dir weiterhelfen so long, stay :cool: Zitieren
ObiWanBelix Geschrieben 24. Mai 2007 Autor Geschrieben 24. Mai 2007 hy maddin, das hört sich ja sehr vernünftig an. Werd mir das am Abend mal vornehmen. Vielen Dank. Zitieren
Aiun Geschrieben 24. Mai 2007 Geschrieben 24. Mai 2007 mir erschließt sich jetzt allerdings nicht warum dafür AJAX benutzt werden sollte / müsste. Ajax ist schön, brav, sinnvoll unsw ^^ wenn sich dinge Ändern oder teilinformationen lange brauchen (also ein kleiner Teil der Seite lange braucht um vom Server gesendet zu werden, während das eigentliche Layout & Inhalte sofort da sind) bei einer einmal-sache, also Liste anfordern und darstellen, ist Ajax unnötig finde ich. XML wird vom Browser - soweit mich mein Hirn der hitze wegen gerade nicht täuscht - wie jedes andere Dokument auch, eh erst verarbeitet, wenn es vollständig geladen wurde. wenn dein eigener Client zugreift, kannst du ja mit dem XML-stream machen was du willst. Aber ich vermute wenn du da einen "normalen" parser laufen lässt, wird der dir auch fehler geben bei einem unvollständigen Dokument. Zitieren
ObiWanBelix Geschrieben 24. Mai 2007 Autor Geschrieben 24. Mai 2007 Ok, jetzt mal Butter bei de Fische. Kann man das mal an einem konkreten Beispiel verdeutlichen? Request an PHP = "www.meineseite.de/showNames.PHP?mode=XML&genre=Rock" $mode=$_POST['mode']; $mode=$_POST['genre']; <?php //Hier wird anhand des genre per MySQL eine Liste von Namen ausgelesen //Hier ist jetzt mein Problem. Wie sende ich meinem Client eine XML Struktur? // genügt es einfach per echo "<Names> echo "<Name>$$Name aus SQL$$</Name> echo "<Name>$$Name aus SQL$$</Name> echo "</Names> // Ich möchte nicht unbedingt, dass der XML angezeigt wird sondern eher mit XSLT-Stylesheet ausgeben // oder gibt es ein Objekt hierfür in etwa oXml = new XML???? oXml = "<Names><Name>$$Name aus SQL$$</Name><Name>$$Name aus SQL$$</Name></Names>" ?> Bitte nicht immer posten wieso weshalb und warum, sondern einfach nur wie! Vielen Dank Zitieren
geloescht_JesterDay Geschrieben 24. Mai 2007 Geschrieben 24. Mai 2007 Ok, jetzt mal Butter bei de Fische. [...] // Ich möchte nicht unbedingt, dass der XML angezeigt wird sondern eher mit XSLT-Stylesheet ausgeben Das geht nur, wenn du ein XML-Dokument überträgst. Wenn der Browser das Dokument hat, transformiert er die XML-Daten zu HTML und zeigt das an. Ein Browser (bzw HTML) wurde nie für dynamische Inhalte gemacht. Bitte nicht immer posten wieso weshalb und warum, sondern einfach nur wie! Gar nicht! EDIT: @MaddinMV: Du solltest dir vielleicht mal AJAX-Frameworks ansehen, dann sparst dir das ganze Functions.js etc und machst dir das leben (Cross-Browser) viel leichter Ich hab mit script.aculo.us - web 2.0 javascript gute Erfahrungen gemacht, von Google gibt es aber auch ein Framework, was gut sein soll... oder 100e andere. Zitieren
MaddinMV Geschrieben 24. Mai 2007 Geschrieben 24. Mai 2007 mir erschließt sich jetzt allerdings nicht warum dafür AJAX benutzt werden sollte / müsste. Ajax ist schön, brav, sinnvoll unsw ^^ wenn sich dinge Ändern oder teilinformationen lange brauchen (also ein kleiner Teil der Seite lange braucht um vom Server gesendet zu werden, während das eigentliche Layout & Inhalte sofort da sind) bei einer einmal-sache, also Liste anfordern und darstellen, ist Ajax unnötig finde ich. XML wird vom Browser - soweit mich mein Hirn der hitze wegen gerade nicht täuscht - wie jedes andere Dokument auch, eh erst verarbeitet, wenn es vollständig geladen wurde. wenn dein eigener Client zugreift, kannst du ja mit dem XML-stream machen was du willst. Aber ich vermute wenn du da einen "normalen" parser laufen lässt, wird der dir auch fehler geben bei einem unvollständigen Dokument. ??? guck mal mein post oben...was isn das bitte?=) habs nur nicht fuer ne XML sondern ne txt gemacht^^ Zitieren
MaddinMV Geschrieben 24. Mai 2007 Geschrieben 24. Mai 2007 @MaddinMV: Du solltest dir vielleicht mal AJAX-Frameworks ansehen, dann sparst dir das ganze Functions.js etc und machst dir das leben (Cross-Browser) viel leichter Ich hab mit script.aculo.us - web 2.0 javascript gute Erfahrungen gemacht, von Google gibt es aber auch ein Framework, was gut sein soll... oder 100e andere. DAnke Jester, das weiss ich auch, aber ich bin gerade dabei mich an die Sache AJAX ueberhaupt ranzutasten, von daher lieber erstmal das "umstaendlichere" aber dafür seh ich da erstmal durch, klar komm ich um frameworks nicht drum rum und es nimmt einem viel arbeit ab, aber alles der Reihe nach, trotzdem vielen dank^^=) Zitieren
Eupinkepank Geschrieben 25. Mai 2007 Geschrieben 25. Mai 2007 Entweder habe ich gerade ein Brett vorm Kopf oder ich raffe hier irgendwas nicht.... Wenn nach der Eingabe von www.meineseite.de?Stil=HardRock alle HardRock CDs angezeigt werden sollen, warum dann mit Ajax rummachen? Das ist doch ein 08/15 GET request?! Es muss doch lediglich der GET ausgewertet werden, die Daten aus einer DB bereitgestellt werden, dann müssen die Daten in das gewünschte Format (In diesem Fall XML) gebracht werden um sie dann an den Browser zu senden... Warum Ajax? Das behindert doch in diesem Fall mehr als es nutzt?! Zitieren
Amstelchen Geschrieben 25. Mai 2007 Geschrieben 25. Mai 2007 Das ist doch ein 08/15 GET request?! full ACK. für diese aufgabenstellung benötigt man doch nicht mehr als ein simples "echo", welches die zuvor aufbereiteten daten aus der DB in den ausgabepuffer herausschreibt - allenfalls unter der zuhilfenahme der in PHP fix integrierten XML-funktionalitäten. s'Amstel Zitieren
Whatever Geschrieben 25. Mai 2007 Geschrieben 25. Mai 2007 Ich glaube das Grundproblem ist, dass der Threadstarter schonmal etwas mit richtigen Sprachen zu tun hatte (daher auch die Frage nach dem Response Objekt) zu tun hatte, und einfach nicht mit dem PHP-Crappy-**** "Ich echo das einfach mal" klarkommt. Zitieren
Aiun Geschrieben 25. Mai 2007 Geschrieben 25. Mai 2007 kommt mal wieder auf den boden zurück. In dem Ton hilft irgendwann keiner mehr (@Maddin). PHP ist genauso gut richtige sprache wie alles andere auch. Es kann ein paar Dinge nicht, dafür kann es dinge besser die bei anderen viel Aufwand o.ä. benötigen. Und je nachdem "was genau" und "wieviele Daten" da rüber gehen sollen, kann Ajax auch sinnvoll sein. Sieht hier nicht danach aus, aber wie gesagt...ruuuhig bleiben. Das Forum ist zum Helfen, nicht zum übereinander herfallen da. Zitieren
ObiWanBelix Geschrieben 25. Mai 2007 Autor Geschrieben 25. Mai 2007 Hallo, erstma vielen Dank für Euere rege Beteiligung am Thema. Durch die verschiedenen Antworten bin ich jetzt besser informiert. Mein Gedankenfehler lag daran, dass ich die Ausgabe per XSL Transformieren wollte und nicht wusste wie ich in einem PHP Dokument eine Ausgabe mit Transformation machen kann. Daher war ich auf dem Holzweg dies über einen Request von einem PHP(ServerProgramm) generieren zu lassen. Das Ganze kann ich aber auch locker und easy statisch machen und benötige kein Programmiersprachen WirrWarr. Ich werde das in nächster Zeit mal realisieren, und falls ich noch Probleme habe hoffe ich weiterhin auf Euere Unterstützung. Lang Lebe die Kommunikation!! @Whatever: lol... Zitieren
geloescht_JesterDay Geschrieben 25. Mai 2007 Geschrieben 25. Mai 2007 Ich glaube das Grundproblem ist, dass der Threadstarter schonmal etwas mit richtigen Sprachen zu tun hatte (daher auch die Frage nach dem Response Objekt) zu tun hatte, und einfach nicht mit dem PHP-Crappy-**** "Ich echo das einfach mal" klarkommt. An der HTML/Browser Eigenart, nur ein Empfangenes Dokument, stateless, darzustellen ändert auch die richtigste Sprache nichts Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.