PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablen hin und her übergeben


sputnik72
22.09.2005, 14:56:26
Hei!
Ich stehe vor folgender Problemstellung:
Ich habe eine php-Seite mit einer Liste, die Daten aus einer Datenbank zeigt, darunter E-mail-adressen (die Adressen werden jedoch nicht angezeigt, sondern durch ein Symbol representiert, durch dessen Anklicken man zu einem Mail-Formular (mail_form_read.php) kommt, das an die betreffende Adresse adressiert ist und den Namen des Adressaten anzeigt. Schickt man dieses Mailformular nun ab, wird zu einer Seite gelinkt (mail_it2.php), die entweder die Mail verschickt, oder bei unvollständig ausgefüllten Formularen, eine Fehlermeldung mit einem Link zurück zum Mailfomular anzeigt.
Mein Problem besteht darin, dass ich die betreffenden Variablen mit der Adressse ($kmail) und dem Namen ($name), die ursprünglich von der Seite mit der Liste an mail_form_read.php übergeben wurden (das klappt zumindest mit dem Namen), von der mail_it2.php wieder an mail_form_read.php zurückübergeben muss, damit das Mailformular wieder wie gehabt im voraus ausgefüllt ist (E-mailadresse & Name).
So habe ich es probiert, die Übergabe klappt aber leider nicht. Ich bekomme anstatt des Namens "nichts" angezeigt. Weiss jemand warum? (Die Variable mit der Mailadresse wird auch noch nicht richtig übergeben, denn das Versenden klappt nicht. Aber ich möchte zunächst mal das mit dem Namen hinkriegen.)

Auszug aus der mail_form_read.php:

<form action="mail_it2.php?mail=$kmail&name=$name" method="post">
<table>
<tr><td colspan="2">

<?php
echo "Proof-reader: ", $HTTP_GET_VARS["name"];
?>
</td>

Auszug aus der mail_it2.php:

<?php
$_post["$kmail"];
$HTTP_GET_VARS["name"];
$name=$HTTP_GET_VARS["name"];
?>
...
<div style="position:absolute; top:100px; left:190px; width:600px">
<p>Please fill out the entire form!</p>
<a href="mail_form_read.php?$name=name&$kmail">Back</a>
</div>

Gruss Sputnik

Stevie B.
22.09.2005, 15:28:46
Deklariere die Variablen am Anfang einer jeden Datei:
if ($_GET['name'] != "") $name = $_GET['name'];
if ($_POST['name'] != "") $name = $_POST['name'];
if ($_GET['kmail'] != "") $kmail = $_GET['kmail'];
if ($_POST['kmail'] != "") $kmail = $_GET['kmail'];

Benutze nun zur Übergabe und für das Value nur die Variablen $name und $kmail.

Gruß,
Stevie B.

sputnik72
23.09.2005, 16:35:22
Hei!
Danke für die Antwort, obwohl ich mir nicht ganz sicher bin, ob ich sie richtig verstanden habe.
Also ich habe Deine Zeilen jetzt am Anfang der zwei betreffenden Dateien stehen, aber es funktioniert noch nicht. Vermutlich liegt es an der "Übergabe" und nicht an der "Entgegennahme":

1. Übergabe (von kliste.php nach mail_form_read.php):

kliste.php:
echo("<td><a href=\"mail_form_read.php?mail=$kmail&name=$name\"><img src=\"grafik/mail.jpeg\" alt=\"Contact proof-reader\" border=\"0\"></a></td>\n");

mail_form_read.php:
<?php
if ($_GET['name'] != "") $name = $_GET['name'];
if ($_POST['name'] != "") $name = $_POST['name'];
if ($_GET['mail'] != "") $kmail = $_GET['mail'];
if ($_POST['mail'] != "") $kmail = $_GET['mail'];
?>
Hier klappt die Ausgabe von $kmail und $name, Übergabe klappt also!

2. Übergabe (von mail_form_read.php nach mail_it2.php):

mail_form_read.php:
<form action="mail_it2.php?mail=$kmail&name=$name">

mail_it2.php:
<?php
if ($_GET['name'] != "") $name = $_GET['name'];
if ($_POST['name'] != "") $name = $_POST['name'];
if ($_GET['mail'] != "") $kmail = $_GET['mail'];
if ($_POST['mail'] != "") $kmail = $_GET['mail'];
?>

Hier klappt die Ausgabe von $kmail und $name nicht, d.h. es wird nichts angezeigt. Die Variablen sind offensichtlich leer.

3. Übergabe soll wieder zurück zu mail_form_read.php sein, aber das lasse ich erst noch mal an dieser Stelle.

Du schreibst zwar (vorausgesetzt ich habe das richtig verstanden), dass man nach der 1. Übergabe nur noch mit $kmail und $name arbeiten braucht, was ich auch probiert habe, aber $name wird doch z.B. nicht auf einer Seite angenommen, wenn da $name = $_GET['name'] steht, oder?
Wo liegt der Fehler bei mir?

Gruss Sputnik

sputnik72
25.09.2005, 23:19:25
Hallo nochmal,
also, dann stelle ich die Frage nochmal anders:

Wie übergebe ich den Inhalt (z.B. sputnik) einer Variablen (z.B. $name) richtig via url, wenn ich den Inhalt nicht dirket in die url schreiben kann, nach dem Muster

mail_it2.php?name=sputnik

da der Variableninhalt sich von mal zu mal ändern kann (wird unter bestimmten Kriterien aus einer Tabelle abgefragt).

Weiss jemand eine Antwort?

Gruss Sputnik

xabbuh
25.09.2005, 23:45:44
An der Stelle, an der der Link generiert wird, setzt du einfach den Wert aus der Datenbank (hier: $var) ein:

<?php
printf('<a href="foo.php?var=%s">Test</a>', $var);
?>

sputnik72
02.10.2005, 17:38:44
Hallo!
Vielen Dank für die Antwort!
Habe das Problem letztendlich mit Hilfe von SESSION gelöst, da können Inhalte von Variablen über mehrere Seiten erhalten bleiben.

Beste Grüsse
Sputnik