eine Variable die in php gesetzt wurde per URL weitergeben
udo
- php
0 Melzmann0 udo
0 EKKi0 Sven Rautenberg0 EKKi
Hallo,
ich bin blutiger Anfänger auf diesem Gebiet, möchte aber trotzdem unbedingt zu einer Lösung kommen. Es ist also möglich das ich mich hier von der Formulierung nicht 100 Prozent sauber ausdrücke... ich bitte diese zu entschuldigen.
Ich habe ein php Script in dem ich aus einer Datenbank Werte auslese.
In diesem Fall kommt aus der Datenbank eine Volleyball - Mannschaft, die ich in eine Variable $gegner lege.
Per php baue ich nun eine Tabelle auf, wo es unter anderem die Spalte: Gegner gibt. In der Tabelle stehen also alle Mannschaften als Link untereinander.
Jetzt öffne ich, wenn ich auf eine Mannschaft (Link) klicke eine neue Seite, in der alle Daten zu den Mannschaften hinterlegt sind.
Mein Ziel ist aber diese neue Seite so zu filtern, dass nur die Daten der Mannschaft angezeigt werden, die ich angeklickt habe.
echo "<td><a href='javascript:r1221136387();' href='javascript:Form_name.submit();' target='_self'> $gegner </a></td>";
function r1221136387(){
myleft=20;
mytop=20;
settings="width=640,height=480,top=" + mytop + ",left=" + myleft + ",scrollbars=yes,location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no,dependent=no";
win=window.open("http://www..../om_cup/PopupMannschaften.php?gegner=<?php echo "php " .$gegner ?>","mypopup",settings);
win.focus();
Ich war davon ausgegangen das die Variable $gegner "unten" im php script "befüllt" wird und danach in die Funktion im head Bereich gesprungen wird.
Dem ist aber wohl nicht so... ich habe echt das Netz schon durchforstet aber finde nichts.
Ich hoffe das es einen netten Fachmann gibt, der mir trotz meinem gefährlichen Halbwissens weiter helfen kann.
Danke
Ich war davon ausgegangen das die Variable $gegner "unten" im php script "befüllt" wird und danach in die Funktion im head Bereich gesprungen wird.
Dem ist aber wohl nicht so... ich habe echt das Netz schon durchforstet aber finde nichts.
Ich hoffe das es einen netten Fachmann gibt, der mir trotz meinem gefährlichen Halbwissens weiter helfen kann.
Hallo udo,
dein Fehler ist, das du versuchst eine php Variable clientseitig mit javascript zu befüllen. das klappt natürlich nicht, da javascript in deinem Browser vearbeitet wird und php auf dem Server.
du solltest es so machen:
schreib deine Daten in eine javascript variable und übergib sie an dein php script
also:
win=window.open("http://www..../om_cup/PopupMannschaften.php?gegner="+gegner+","mypopup",settings);
dann kannst du in deinem Script die Daten per $_POST['gegner']
holen und ausgeben.
Hallo Melzmann,
erst mal vielen Dank für die schnell Unterstützung !!!
So ganz habe ich das jetzt noch nicht verstanden ????
Wie bekomme ich meine "Mannschaft" aus der Mysql Datenbank in die Javascript variable ?
Zur Zeit mache ich das ja so:
$abfrage = "SELECT * FROM om_cup_liste order by id ";
$ergebnis = mysql_query($abfrage);
$gegner = $row->Gegner ;
echo "<td><a href='javascript:r1221136387();' href='javascript:Form_name.submit();' target='_self'> $gegner </a></td>";
Könntest Du mir hier noch mal weiterhelfen..
Vielen Dank
Mahlzeit udo,
In diesem Fall kommt aus der Datenbank eine Volleyball - Mannschaft, die ich in eine Variable $gegner lege.
Wow - so eine Datenbank hätte ich auch gern! ;-)
Mein Ziel ist aber diese neue Seite so zu filtern, dass nur die Daten der Mannschaft angezeigt werden, die ich angeklickt habe.
echo "<td><a href='javascript:r1221136387();' href='javascript:Form_name.submit();' target='_self'> $gegner </a></td>";
Erstens ist es ungünstig bis ungültig, einem Link zwei "href"-Attribute zu geben. Zweitens gibt es kein Protokoll namens "javascript:".
Ich würde Dir deswegen raten, Deinen Code wie folgt umzustricken:
~~~html
<script type="text/javascript">
[code lang=javascript]function r1221136387(url) {
var myleft = 20;
var mytop = 20;
var settings = 'width=640,height=480,top=' + mytop + ',left=' + myleft + ',scrollbars=yes,location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no,dependent=no';
win = window.open(url, 'mypopup', settings);
win.focus();
}
</script>
[...]
<td><a href="http://www..../om_cup/PopupMannschaften.php?gegner=<?php echo [link:http://de2.php.net/manual/en/function.htmlspecialchars.php@title=htmlspecialchars]([link:http://de2.php.net/manual/en/function.urlencode.php@title=urlencode]("php $gegner"));
?>" onclick="Form_name.submit(); r1221136387(this.href); return false;" target="_self"><?php echo htmlspecialchars($gegner);
?></a></td>
[/code]
Warum? Erstens hast Du dann einen echten Link, der auch funktioniert, wenn Deine Besucher kein Javascript (aktiviert) haben. Wenn sie es haben, sollte das Formular abgeschickt sowie das Popup geöffnet und danach der Link nicht angesprungen werden.
Zweitens werden die Sonderzeichen, die ggf. im Mannschaftsnamen enthalten sind, dem Kontext gemäß maskiert.
Drittens kannst Du so die Javascript-Funktion für mehrere Links verwenden, indem Du ihr das Linkziel als Aufrufparameter übergibst.
Ich war davon ausgegangen das die Variable $gegner "unten" im php script "befüllt" wird und danach in die Funktion im head Bereich gesprungen wird.
PHP wird auf dem Server ausgeführt. Sämtliche Variablen stehen nur dort zur Verfügung und auch nur, bis das Skript abgearbeitet ist. Danach hat es (im Normalfall) HTML-Code (ggf. mit eingebettetem Javascript) erzeugt und an den Browser geschickt. Dieser weiß nichts von irgendwelchen PHP-Variablen.
Das bedeutet insbesondere, dass im Javascript-Code nicht auf PHP-Variablen zugegriffen werden kann - außer, Du erzeugst mittels PHP, Javascript-Code, mit dem Du den Wert von PHP-Variablen explizit an Javascript-Variablen übergibst, z.B.
$foo = 'bar';
echo "<script type=""text/javascript"">\n
var baz = '$foo';\n
</script>";
ergibt
<script type="text/javascript">
[code lang=javascript]var baz = 'bar';
</script>[/code]
Ich hoffe das es einen netten Fachmann gibt, der mir trotz meinem gefährlichen Halbwissens weiter helfen kann.
Das trifft's wohl ziemlich genau *eg* ... aber keine Sorge, mit ein wenig Grundverständnis und Dokumentation lesen wird das schon. :-)
MfG,
EKKi
Moin!
Das bedeutet insbesondere, dass im Javascript-Code nicht auf PHP-Variablen zugegriffen werden kann - außer, Du erzeugst mittels PHP, Javascript-Code, mit dem Du den Wert von PHP-Variablen explizit an Javascript-Variablen übergibst, z.B.
$foo = 'bar';
echo "<script type=""text/javascript"">\n
var baz = '$foo';\n
</script>";
Schade. Dein Beispiel weiter oben nutzt korrekt alle notwendigen Escaping-Funktionen, um den Variableninhalt kontextgemäß zu maskieren, und hier passiert nichts dergleichen.
PS: Doppelte Anführungszeichen werden in PHP nicht durch Verdopplung maskiert...
- Sven Rautenberg
--
"Love your nation - respect the others."
Mahlzeit Sven Rautenberg,
Schade. Dein Beispiel weiter oben nutzt korrekt alle notwendigen Escaping-Funktionen, um den Variableninhalt kontextgemäß zu maskieren, und hier passiert nichts dergleichen.
Ja, hast Recht. Es ging mir nur um das Prinzip, wie man in PHP dynamische Inhalte in dynamische Inhalte in Javascript "verwandelt" - das wollte ich nicht durch verschiedene Funktionsaufrufe verkomplizieren. Richtiger wäre es natürlich so:
$foo = 'bar';
printf('<script type="text/javascript">\n
var baz = \'%s\';\n
</script>', str_replace("'", "\'", $foo));
PS: Doppelte Anführungszeichen werden in PHP nicht durch Verdopplung maskiert...
Argl, stimmt. Bin im Moment zu sehr ASP-geschädigt ... :-(
MfG,
EKKi