PHP Var an JavaScript

Ich versuche mich gerade an einem kleinen JavaScript mit dem ich einen String, der aus verschiedenen Variablen zusammengesetzt wird, in einer TextArea ausgeben möchte.
Eine der Variablen wurde zuvor durch ne SQL-Datenbankabrage erzeugt.
Und genau da das Problem:
Wie kann ich die PhP Variable in JavaScript verwenden. ?

So wie hier probiert klappt es nich :frowning:

<?php error_reporting(E_ALL); include 'configuration.php';<br />
 if(!@mysql\_connect($mosConfig\_host, $mosConfig\_db, $mosConfig\_password)) {
 die("Es konnte keine Verbindung aufgebaut werden");
 }

 if(!mysql\_select\_db($mosConfig\_db)) {
 die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql\_error());
 }
?\>


// Datenbankabfrage
defined( '\_VALID\_MOS' ) or die( 'Restricted access' );
global $my, $database;

 $database-\>setQuery( "SELECT email"
 . "\n FROM #\_\_users"
 . "\n WHERE id = $my-\>id"
 );
 $email = $database-\>loadResult();
?\>

var email = „<?php echo $email; ?>“;

Habs auch schon über nem HiddenFeld probiert

var email=document.phpvar.uebergabe.value;

Doch auch da funktioniert weder die Ausgabe per document.write(email) noch per document.phpvar.uebergabe.value.

Die reine Ausgabe auf einer Seite geht, aber halt nicht per onclick in eine Textarea :frowning:

Hab schon lange dran rumprobiert doch es will nicht gelingen.
Großen Dank an jeden Helfer

Lg
Tobs

Ich versuche mich gerade an einem kleinen JavaScript mit dem
ich einen String, der aus verschiedenen Variablen
zusammengesetzt wird, in einer TextArea ausgeben möchte.
Eine der Variablen wurde zuvor durch ne SQL-Datenbankabrage
erzeugt.
Und genau da das Problem:
Wie kann ich die PhP Variable in JavaScript verwenden. ?

Ich habe mir deinen Quelltext nicht genau durchgesehen (der ist denke ich übrigends anfällig für „SQLinjection“). Eine etwas vereinfachte Version funktioniert bei mir:

<?php echo "<"."?xml version=\"1.0\"?".">\n"; ?\>



Test<?php $test1 = "\"abc\"";<br />?\>
var test2 = "\<?php echo addslashes($test1)?\>";
 

document.write(test2);

PS: Ich habe PHP benutzt um die XML-Angabe zu machen, damit das auch bei eingeschaltem shorttags (oder wie das auch immer heißt) von php funktioniert.

Joar Dankeschön.

Das Script welches du mir geschrieben hast gibt zwar die php variable auf der Seite aus, aber nicht in der Textarea wo ich sie gern hinhaben würde.
Aber dennoch lieben Dank
Wahrscheinlich ist es ja auch nur ein Grundgerüst was ich noch bearbeiten müsste … nur so richtig reichen dafür meine Java-Script Kenntnisse nich aus :frowning:
Kannst du mir noch son Denkanstoß geben wie ich mit deinen Script arbeiten soll das es klappt ?

Hab hier noch ein Bild,zur Veranschaulichung wie ich mir das gedacht hab.

http://forum.jswelt.de/attachment.php?attachmentid=2996

Hoffe das hilft weiter.

bis dahin
Lg

Hab hier noch ein Bild,zur Veranschaulichung wie ich mir das
gedacht hab.

http://forum.jswelt.de/attachment.php?attachmentid=2996

habe jetzt keine Lust mich bei dem Forum auch noch anzumelden. In deinem Quelltext habe ich kein textarea gesehen.

Hilft dir vielleicht folgendes weiter?

Test<?php $test1 = "\"abc\"";<br />?\>
var test2 = "\<?php echo addslashes($test1)?\>";
function betragupdate()
{
 document.betrag.betragsfeld.value =
 test2 + document.betrag.betragsfeld.value + "test";
}

das „name“-Attribut scheint kein gültiges xhtml4-strict zu sein. Keine Ahnung in welchen Browsern das funktioniert. In dem Firefox 2.0 kompatiblen Browser hier scheint es zu funktionieren. Mit JavaScript habe ich aber kaum Erfahrung.

Hab den Code nun so eingefügt

<?php echo "<"."?xml version=\"1.0\"?".">\n"; ?\>



Test
var test2 = "\<?php echo addslashes($email)?\>";
function betragupdate()
{
 document.betrag.betragsfeld.value =
 test2 + document.betrag.betragsfeld.value + "test";
}

Nun lädt die Seite endlos lange nur funktionieren tuts noch nicht :smile:
Jetz nochmal das Bild frei zugänglich

http://juicy.eyes-on-paper.com/Bild%204.png

Die Textarea an die es gehen soll: sendeform.pmessage.value
Ist der Code dieser wichtig? dann häng ich den auch noch mal an.

Ahhh … so bald fang ich an an mir zu zweifeln :smile:

Hallo,

Hab den Code nun so eingefügt

<?php echo "<"."?xml version=\"1.0\"?".">\n"; ?\> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"\>

Das ist nicht mehr xhtml-strict das name Attribute gibt es scheinbar nicht mehr im . Ich hatte das nicht ohne Grund bei der zweiten Antwort herausgenommen.

[…]

{
document.betrag.betragsfeld.value =
test2 + document.betrag.betragsfeld.value + „test“;
}

Hier musst du die verwendeten Formularfelder anpassen.

[…]

Das ist nicht well-formed. Du hast ein Anführungszeichen innerhalb des Attributwertes. Außerdem gibt die Funktion betragsupdate nichts zurück. Ich habe nur deshalb eine Funktion geschrieben, damit die Zeile nicht so lang wird, da so weit ich weiß Zeilenumbrüche innerhalb von Attributwerten nicht erlaubt sind.

[…]

Nun lädt die Seite endlos lange nur funktionieren tuts noch
nicht :smile:
Jetz nochmal das Bild frei zugänglich

Ich dachte du müsstest einfach nur die Namen entsprechend anpassen. Im ersten Quelltext hattest du glaube ich das Forum nicht „sendeforum“ genannt. Musst du also entsprechend anpassen; also nicht mehr name=„betrag“. Aus den Bild kann ich aber auch nichts weiter ableiten. Das ist ja einfach ein Formular. Funktioniert denn mein zweiter Text (ohne Ähnerdungen) bei dir? Da wird der Inhalt des Formularfeldes aus dem alten Inhalt, aus dem Inhalt einer PHP-Variable und aus einem statischen Text zusammengesetzt.

Mit dem gesamten Quellcode kann bestimmt keiner direkt etwas anfangen, da das bei ihm erst mal prinzipiell ohne Änderungen laufen können sollte. Dazu sind Datenbankanfragen schlecht, weil man erst mal die entsprechende Datenbank aufsetzen müsste und der Fehler u.U. dann wo anders ist. Gekürzte Beispiele sind da schon besser. Der Fehler müsste nur noch auftreten.

Hi,

<?php echo "<"."?xml version=\"1.0\"?".">\n"; ?\>

Für IE6 ist das Quirks, denn der versteht die XML-Deklaration nicht. Auf diese würde ich in diesem Fall verzichten, jedoch per header(Content-Type / Charset) und Meta-Charset die Zeichenkodierung festlegen, sofern diese nicht sowieso utf-8 ist. Siehe z.B. http://carsten-protsch.de/zwischennetz/doctype/einle…

Schönen Gruß
Rudy

Hallo Sebastian
Der Code aus deiner 2. Antwort funktioniert ungeändert nicht, geändert aber auch nich :smile:

var email2 = "\<?php echo addslashes($email)?\>";
function betragupdate()
{
 document.sendeform.pmessage.value =
 email2 + document.betrag.betragsfeld.value + "test";
}

Du sagtest in der letzten Antwort das die Funktion betragupdate() noch garnix ausgebe, doch das soll sie ja im sendeform.pmessage.value - Hab dies deshalb in der ersten Klammer der Funktion eingefügt. War das richtig ? Doch wie lass ich die Funtkion nun ausgeben ? reicht onclick="betragupdate() nicht als Befehl aus um das ergebniss der funtkion anzuzeigen ?

und woran kann es eigentlich liegen das die Seite nicht aufhört zu laden ?

Sorry das ich dich jetz so einnehme … aber ich kann mir einfach nicht erklären warum das ganze nicht funktioniert.

Lg

Hi Tobias,

Hab hier noch ein Bild,zur Veranschaulichung wie ich mir das
gedacht hab.

http://forum.jswelt.de/attachment.php?attachmentid=2996

Für diese Art der Anwendung brauchst Du gar keine Formulare, Eingabefelder reichen aus. Formulare brauchst Du nur, wenn Du etwas an eine (andere) Seite schicken willst. Du willst ja nur einfach einen Link - der sich zusammensetzt aus einer E-Mail-Adresse, welche Du aus der Datenbank liest, und einem Wert eines Eingabefeldes - in eine Textarea schreiben.

<?php $email='[email protected]'; ?>Test
/\* \<![CDATA[ \*/
function addPayPalLink() {
 document.getElementById('paypallink').value = 'https://www.paypal.com/cgi-bin/' + 
 'webscr?cmd=\_xclick&business=\<?php echo addslashes(urlencode($email)); ?\>&item\_name=' + 
 'Senderzahlung&amount='+document.getElementById('euroamount').value + 
 '%2e00&no\_shipping=0&no\_note=1&currency\_code=EUR&lc=DE&bn=PP%2dBuyNowBF&' +
 'charset=UTF%2d8';
}
/\* ]]\> \*/


 Message


 Betrag (€)

[PayPal-Link hinzufügen](javascript:addPayPalLink();)

Ein paar Sachen gibt es zu beachten:

  • Javascript muss mit /* */ maskiert werden, damit das Dokument valide bleibt.
  • Die E-Mail-Adresse muss URL-Kodiert werden (urlencode), denn ein @ im Link ist nicht erlaubt.
  • Die Textarea bricht nicht automatisch um. Das kann nur der IE mit dem „wrap“-Attribut der Textarea, welches nicht standardkonform ist. Mit CSS gibt es whitespace:stuck_out_tongue:re, das Dir die Newlines \n so dann auch in der Textarea darstellt - würde ich aber lassen, da man dann nach dem Kopieren diese Leerzeilen wieder entfernen muss, um z.B. den Link in die Browser-Adressleiste einzufügen.

Ciao
Rudy

Hallo Sebastian
Der Code aus deiner 2. Antwort funktioniert ungeändert nicht,
geändert aber auch nich :smile:

Hast du den Code wirklich mal exakt so in eine HTML-Datei kopiert und er funktioniert nicht? Wenn es wirklich nicht funktioniert, welchen Browser hast du verwendet?

Du sagtest in der letzten Antwort das die Funktion
betragupdate() noch garnix ausgebe, doch das soll sie ja im
sendeform.pmessage.value - Hab dies deshalb in der ersten

Ich sagte, dass die Funktion keinen Rückgabewert hat PUNKT

Wenn eine Funktion nichts zurück gibt, hat sie keinen Rückgabewert. Das heißt aber nicht, dass sie noch andere „Wirkungen“ hat, wie beispielsweise ein Formular zu ändern.

Hallo,

<?php echo "<"."?xml version=\"1.0\"?".">\n"; ?\>

Für IE6 ist das Quirks, denn der versteht die XML-Deklaration
nicht. Auf diese würde ich in diesem Fall verzichten, jedoch
per header(Content-Type / Charset) und Meta-Charset die
Zeichenkodierung festlegen, sofern diese nicht sowieso utf-8
ist. Siehe z.B.
http://carsten-protsch.de/zwischennetz/doctype/einle…

Danke für den Link. Schade, dass die das nicht vernünftig gebacken bekommen. Hast du eine Ahnung welche Nachteile ich mir beim Quirks-Modus im IE einhandele? Der Interpretiert doch bestimmt auch im „Standard“-Modus halbwegs eigenwillig.

Hi Sebastian,

Hast du eine Ahnung welche Nachteile ich
mir beim Quirks-Modus im IE einhandele? Der Interpretiert
doch bestimmt auch im „Standard“-Modus halbwegs eigenwillig.

Allen voran ist das fehlerhafte Box-Modell dann im Spiel (IE zieht padding und border-width von der width und der height eines Elements ab anstatt es dazuzurechnen) - so lässt es sich kaum vernünftig arbeiten.
Weiters bezieht er prozentuelle Höhen und Breiten auf das Browserfenster anstatt auf das übergeordnete Element, width und height haben auch eine Wirkung auf inline-Elemente anstatt nur auf Blockelemente …

Versuch z.B. bei diesem Dokument mal den Doctype herauszunehmen und sieh es Dir im IE an.

 div#outer { width:400px; height:400px; background:red; }
 div#inner { width:200px; height:200px; padding:100px; background:blue; }
 div#content { width:50%; height:50%; background:yellow; }
 span { width:100px; height:100px; background:lime; }



 IE

Natürlich macht der IE auch im Standard-Compliants Mode vieles falsch - siehe http://positioniseverything.net/explorer.html - aber im Quirks-Mode wird es zappenduster :smile: Recht seltsam ist auch, wann der IE in den Standard Compliants Modus schaltet. Bei nicht strikten HTML-Doctypes muss z.B. die URL des DTDs im Doctype stehen. Ganz sicher in den SC-Mode schaltet er mit HTML Strict und allen XHTML-Doctypes - aber eben nur, wenn der Doctype das erste ist, was der Browser vom Dokument zu lesen bekommt (gilt auch für Kommentare am Anfang des Dokuments).

Ciao
Rudy