PHP + Gadget WinSidebar

einbacher

Grünschnabel
Hallo,

ich habe ein Gadget für eine Website gemacht in dem Zugangdaten zur PHP-Datei übertragen werden, dort Teile aus einer DB ausgelesen und wieder an das Gadget übertragen werden.

Das funktioniert auch soweit.

Nun möchte ich jedoch gerne ein Eingabe am Gadget an das Script schicken und wenn ich ein normales Form mache also mit einer ACTION Angabe funktioniert es nicht, das Gadget scheint dann nict nachgeladen zu werden und es entsteht nur ein kleines weisses Viereck statt meinem Gadget, jedoch gehen die Prefs trotzdem, also die Angabe meiner Userdaten.

Ich könnte sowohl im Gadget ein Formular rein machen als auch in der PHP-Datei.

Die Ausgabe der PHP-Datei wird über eine Variabel $text gemacht und am Gadget mit
rssObj = new ActiveXObject("Msxml2.XMLHTTP");
rssObj.open("GET",Url , true);
ausgelesen.

Für jeden Tipp bin ich dankbar
 
Ich habe mich zwar noch nicht mit Windows Gadgets auseinandergesetzt, aber wenn das Absenden des HTML-Formulars im Gadget nicht geht, würde ich dir empfehlen, es eben über das Gadget zu machen.
Also z.B. einfach eine TextBox und einen Button (so heißen die .NET-Klassen) ins Gadget einbauen, und beim OnClick-Event des Buttons den Inhalt der TextBox an die Website senden und danach erst die Rückgabe verarbeiten.

Ich hoffe, das kann dir helfen.
 
Danke für Deine Antwort . DIe Gadget's werden jedoch komplett in HTML geschrieben. Ich denke das liegt einfach nur daran das man das Formular nicht neu aufrufen darf. Leider kenn ich mich mit JS nicht wirklich aus um evtl. dort was zu machen. Habe auch nichts brauchbares im INET gefunden.

Hier mal ein Beispiel :

PHP:
<div id="divForm" style="visibility: visible; >
		<form id="formSMS" method="post">
			<input type="hidden" name="empfaenger" id="inpTo"/>

			<div>
				<input type="text" name="name" id="inpName" value="Name" class="ghosttext" style="width: 80%;" onfocus="clearGhosttext(this, 'Name');" onblur="setGhosttext(this, 'Name');"/>

				<img src="images/btn_histNext.png" style="vertical-align: bottom;" class="link" onclick="javascript: showNextHistory('inpNumber', 'inpName');"/>

				<input type="text" name="rufnummer" id="inpNumber" value="Nummer" class="ghosttext maxwidth" onfocus="clearGhosttext(this, 'Nummer');" onblur="setGhosttext(this, 'Nummer');"/>
			</div>

			<div style="margin-top: 3px;">
				<textarea name="text" id="inpText" rows="5" class="maxWidth ghosttext" onfocus="clearGhosttext(this, 'Nachricht');" onblur="setGhosttext(this, 'Nachricht');" onkeyup="counter.calc();">Nachricht</textarea>
			</div>

			<div style="margin-top: 3px;">
				<input type="text" id="outChars" value="0" class="transInp"/>
				= <input type="text" id="outSMS" value="0" class="transInp"/> SMS
				<input type="hidden" id="outCredits" value="0"/>
			</div>

			<div style="margin-top: 3px;">
				<img src="../images/btn_send.png" class="link" onclick="sendSMS(true);" onmouseover="this.src='../images/btn_send_hover.png';" onmouseout="this.src='../images/btn_send.png';"/>
				<img src="../images/btn_book.png" class="link" style="margin-left: 11px;" onmouseover="this.src='../images/btn_book_hover.png';" onmouseout="this.src='../images/btn_book.png';" onclick="showFlyout();"/>
			</div>
		</form>
	</div>

nur wie gesagt ich blicke da nicht durch.
 
Hmm ja, bei dem Beispiel kann ich dir jetzt nicht viel helfen.

Da ist nur ein bisschen Javascript drin, das aufgerufen wird, wenn eins der beschriebenen Events passiert. Also im Klartext:
HTML:
<input type="text" name="name" onfocus="clearGhosttext(this, 'Name');" onblur="setGhosttext(this, 'Name');"/>
bedeutet, dass wenn du das Feld fokussierst (onfocus, also du klickst rein sodass du tippen kannst) die Funktion "clearGhosttext" aufgerufen wird. Das sorgt dafür, dass da vorher in dem Feld "Name" drin steht, wenn du reinklickst das aber verschwindet, du also deinen Namen eingeben kannst. "onblur" steht dafür, dass der Fokus das Feld verlässt, also du woanders hinklickst. Wenn dann nichts drinsteht, soll er wieder Name einfügen (gehe ich mal von aus).
Das Gleiche gilt für die anderen Events wie onclick, onkeyup, onmouseover, die alle eigentlich recht selbsterklärend sind.
Solange ich jedoch nicht weiß, was die einzelnen Funktionen machen (bei dem Ghosttext-Kram habe ich jetzt einfach mal geraten) kann ich dir da auch nicht weiterhelfen.
 
Deswegen hatte ich das ganze mal gepostet denn es ist eine <form> aber ohne Verweis auf eine externe oder gleiche Datei.

Interessant sind folgende Abschnitte :

onclick="sendSMS(true);"
<form id="formSMS" method="post"


Dann gefolgt von folgender Funktion :
Code:
function sendSMS() 
{ 
  overlay.show('Formular wird gesendet', 'sending.gif');
  e_formSMS = o_Document.getElementById('formSMS');
  b_advancedSMS = false;
  generateNumber('inpNumber', 'inpTo');
  addToHistory('inpTo', 'inpName');
  ajax_send('http://www.xxx/empfang.php');
}
}

Nur so etwas wie
- generateNumber()
- addToHistory()
- ajax_send()

Verweist wieder auf Funktionen.

Ich möchte ja nur, das ich in einem <textearea> etwas eingebe und dieses soll in eine DB geschrieben werden - Fertig !

Wenn ich das Formular so übernehme, also schon für meine zwecke abgeändert, dass stürtzt mir das Gadget nicht ab, aber es passiert auch nicht. Klar weil ich die Vaiabeln nicht auffange.

Hier noch die Funktion von "ajax_send", welches ich als wichtigstes ansehe :

HTML:
function ajax_send(p_url) {
    var xmlHttpReq = false;
    var self = this;
    
    self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");

    self.xmlHttpReq.open('POST', p_url, true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            updatepage(self.xmlHttpReq.responseText);
        } else {
			overlay.show(p_url+"<br>"+self.xmlHttpReq.readyState, "sending.gif");
		}
    }
    self.xmlHttpReq.send(getquerystring());
}
 
Es gibt also die Datei "empfang.php" auf irgendeinem Server, und die schreibt die Werte, die sie per POST/GET bekommt, in die DB? Dann entferne dich von der komischen Vorlage und mach das selber.

  1. Prototype laden und in dein Gadget einbinden: http://www.prototypejs.org/
  2. Werte aus der textarea in einer JS-Variable speichern (ich gehe davon aus, dass du weißt, wie man das macht)
  3. Tutorial lesen und verstehen und dann einfach den Wert per Ajax senden: http://www.prototypejs.org/learn/introduction-to-ajax

Ich hoffe, damit kommst du klar! Prototype ist schön ordentlich und einfach, besser als irgendein undokumentiertes Fertig-Script, von dem keiner genau weiß, was es macht!
 
Zurück