Zum Inhalt springen

Request und Response in PHP


Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

@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^^=)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...