php: Variablen und Formularfelder übertragen

  • #1
G

groovesurfer

Bekanntes Mitglied
Themenersteller
Dabei seit
28.02.2003
Beiträge
352
Reaktionspunkte
0
Hi hi,

ich möchte von einer zur nächsten datei variablen und formularfelder übertragen. Wie kann ich das machen?

Code:
session_start();
$sidwh=session_id();

$paket=$HTTP_GET_VARS['paket'];
$zahlung=$HTTP_GET_VARS['zahlung'];

echo <form action='datei2.php?sidwh=$sidwh&paket=$paket&zahlung=$zahlung' method='GET'>;
.
.
.
.
echo <input type='text' name='eingabe' size='16'>;
echo <input type='submit'>;
Würde ja nicht funktionieren...

Über <input type=hidden.....> funktioniert es nicht da die Variablen über mehrere Dateien übertragen werden sollen und so immer nur das erste Wort übertragen wird.
Was könnte ich sonst noch versuchen?

Grüsse...
 
  • #2
Ähm, dir ist schon klar das jedes Formularfeld eine Variable gleichen Names erzeugt oder?!

Code:
echo <input type='text' name='eingabe' size='16'>;
echo <input type='submit'>;

das erzeugt z.B. eine Variable mit dem namen $eingabe.

Wenn du nun auf diese Variable aus mehrerern Dateien zugriff haben willst bindest du die DATEI per require einfach in die entsprechenden anderen Dateien ein.
 
  • #4
Ähm, dir ist schon klar das jedes Formularfeld eine Variable gleichen Names erzeugt oder?!

Ja das ist mir schon klar, jedoch wird die Variable, die mit
Code:
<input type='text' name='eingabe' size='16'>
erzeugt wird, nicht übertragen wenn man sie wie folgt einbindet:
Code:
<a href='datei2.php?eingabe=$eingabe'>
 
  • #5
ursprünglich wollte ich ja folgendes machen:

ich übertrage Daten via Formular (<form action=...) von einer .php Datei zur nächsten (hidden).
In einem Formularfeld wird z.B. der Name eingegeben (2 Wörter). Funktioniert auch ganz prima, jedoch nur von der Ursprungsdatei (Datei1) zur nächsten (Datei 2). Wenn ich die Daten nun von Datei2 zu Datei3 schicken möchte wird nur das erste Wort übertragen (auch wenn man 5 Wörter ursprünglich eingegeben hat).
Wenn ich Leerzeichen umwandle ($derName=htmlspecialchars($derName); oder $derName=htmlentities($derName); ) bringt das nichts.

Funktioniert das so grundsätzlich nicht?
 
  • #6
Ähm sorry groovesurfer das ich bis jetzt noch nicht geantwortet habe. Hab gerade etwas stress und hatte mich in einem anderen Thread festgequatscht. Ich schau heute Abend nochmal vorbei und schaue ob ich dir weiterhelfen kann.
 
  • #7
alles klar. Besten Dank....... 8)
 
  • #8
Kann sie auch nicht, weil:

Du schreibst folgendes:
<a href='datei2.php?eingabe=$eingabe'>
Nun musst du aber wissen, dass alles, was zwischen-> steht nicht interpretiert wird, dass heißt der Parser akzeptiert alles darin einfach als Text und durchsucht den Ausdruck nicht nach PHP Tags.

Wenn du das ganz nun wie folgt schreibst:
Code:
<a href=datei2.php?eingabe=$eingabe>
dann klappt das auch.

Du musst nur darauf achten, dass du die Variable nicht in-> stehen hast. Entweder schließt den String vorher und machst es wie folgt:
Code:
echo <a href='datei2.php?eingabe.$eingabe.>
oder so
Code:
echo <a href=\datei2.php?eingabe=$eingabe\>
, wobei dir erste Methode die schnellere ist.

Anmerkung noch hinzu.

Aus Sicherheitsgründen solltest du globale variables = off in der PHP.ini setzen und stattdessen per $_post[variable] auf deine Variablen zugreifen.

P.S.: Ich bin mir gar nicht mehr so sicher, ob das von mir geschrieben bei dir überhaupt zutrifft. Werde aus deinem Problem irgendwie nicht ganz schlau. Was dir evtl. noch weiterhelfen könnte ist urlencode
 
  • #9
Ähm eine kleine Anmerkung, du solltest das hier verwenden:

$_REQUEST['meinfeld']

$_REQUEST[] umfasst nämlich $_GET und $_POST

Ansonsten FULL ACK
 
  • #10
@cledith= Vielen Dank für Deine Tips, aber das ist mir schon klar. Mein Problem besteht darin, dass ich die Inhalte von Textfeldern + diverse Variable an eine folgende Datei weiterschicke möchte.
Ich versuche es noch etwas verständlicher auszudrücken:
Mein Vorhaben:
- es sind 5 Dateien vorhanden
- in der 1. kann man den Zahlungsintervall auswählen
- in der 2. soll man den Domainnamen auswählen. Der ausgewählte Zahlungsinterval von der 1. Datei soll hier angezeigt werden.
- in der 3. gibt man seine Anschrift an
- in der 4. die Bankverbindung
- in der 5. soll alles nochmal zur Kontrolle angezeigt werden.
Alle Variablen sollen bis zur Datei 5 immer weitergegeben werden.

Bisher habe ich es so gemacht:

Datei 1 (Zahlungintervall):
Code:
<form action=domainname.php method=GET>
<select name=zahlung>
<option value=monatlich>monatlich
<option value=3 Monate>3 Monate
<option value=6 Monate>6 Monate
<option value=9 Monate>9 Monate
<option value=12 Monate>12 Monate
</select>
<input type=submit>

Datei 2 (Domainname):

Code:
$zahlung=$HTTP_GET_VARS['zahlung'];
echo <form action='anschrift.php' method='GET'>;
echo <input type='text' name='domainname'>;
echo <input type='hidden' name='zahlung' value=$zahlung>;
echo <input type='submit'>

Datei 3 (Anschrift):

Code:
$zahlung=$HTTP_GET_VARS['zahlung'];
$domainname=$HTTP_GET_VARS['domainname'];
echo <form action='bankverbindung.php' method='GET'>;
echo <input type='text' name='name'>;
.
.
.

echo <input type='hidden' name='zahlung' value=$zahlung>;
echo <input type='hidden' name='domainname' value=$domainname>;
echo <input type='submit'>

Das selbe von Datei 4 zu Datei 5.

Funktioniert auch alles ganz prima. Es wird alles wie gewollt angezeigt. Jedoch wird immer nur das erste Wort angezeigt. Das passiert auch nur wenn man die Variable das zweite mal weitergegeben hat.

So....

Jetzt brauche ich nur noch ne Lösung wie alles angezeigt wird.
 
  • #11
Also sorry, aber ich verstehe trotzdem noch nicht wieso du das so machst. Erstens verstehe ich nicht wieso du die ganzen Forumlare nicht zu einem einzigen zusammenfasst, und zweitens würde ICH wenn ich Daten von einer Datei zur nächsten übernehmen würde das ganze per require machen.

Code:
<form action=zahlungintervall.php method=GET>
<select name=zahlung>
<option value=monatlich>monatlich
<option value=3 Monate>3 Monate
<option value=6 Monate>6 Monate
<option value=9 Monate>9 Monate
<option value=12 Monate>12 Monate
</select>
<input type=submit> 

$zahlung = $_REQUEST['zahlung'];

Danach in der nächsten Datei die Variable per require eingebunden und fertig ist der Lack. Sollte ohne Probleme funktionieren.

Verfeinern kannst du das ganze natürlich noch wenn du das Formular über das action Attribut mit Hilfe von $_SERVER['PHP_SELF'] auf sich selbst referenzierst.
 
  • #12
Bitte entschuldige wenn ich nerve. Mir ist das selbst peinlich. :-[ Muss wohl ein bisschen aufm Schlauch stehen, aber wenn ich es so versuche kommt die Fehlermeldung :
Fatal error: main(): Failed opening required->' (include_path='.;c:\php4\pear') in d:\htdocs....

Erstens verstehe ich nicht wieso du die ganzen Forumlare nicht zu einem einzigen zusammenfasst

Wenn ich alles auf einer Seite machen würde, wäre ein ewig langer Text zu sehen. Das möchte ich in mehreren Schritten umgehen.
 
  • #13
Kannst du die variablen nicht in der session speichern? dann hst du in allen dateien drauf zugriff.
 
  • #14
Da ich mit sessions noch nicht allzuviel gemacht habe, habe ich es noch nicht versucht.
Habe schon einiges über Session gelesen, bin aber noch nicht auf den Trichter gekommen.

Könntest Du mir vielleicht ganz kurz erklären wie ich so was machen würde?

Ok am Anfang:

Code:
<?php
session_start();
$sid=session_id();

Die session-id kann ich dann ja weitergeben mit:

Code:
echo <a href='domainauswahl.php?sid=$sid'><img src='buttons/bestellen.gif'></a>;

Aber wie kann ich die Variable wie oben beschrieben in der Session speichern, und wie kann ich sie in der nächsten Datei wieder abrufen? :-\
 
  • #15
groovesurfer schrieb:
Bitte entschuldige wenn ich nerve. Mir ist das selbst peinlich. :-[ Muss wohl ein bisschen aufm Schlauch stehen, aber wenn ich es so versuche kommt die Fehlermeldung :
Fatal error: main(): Failed opening required->' (include_path='.;c:\php4\pear') in d:\htdocs....

An dieser Stelle wäre es schön gewesen du hättest nicht nur die Fehlermeldung sondern auch die entsprechenden Codezeilen mit gepostet. Wenn du das nachholst können wir das gerne mal zusammen durchgehen.

Docu zu require() findest du hier:

http://de3.php.net/manual/de/function.require.php

Aber du kannst auch gerne include verwenden. Mit include sieht das ganze etwa so aus:

<?PHP
include->pfad zur einzubindenden Datei/Dateiname.php';
?>

Doku zu include() findest du hier:

http://de3.php.net/manual/de/function.include.php

groovesurfer schrieb:
Erstens verstehe ich nicht wieso du die ganzen Forumlare nicht zu einem einzigen zusammenfasst

Wenn ich alles auf einer Seite machen würde, wäre ein ewig langer Text zu sehen. Das möchte ich in mehreren Schritten umgehen.

Ähm dazu benötigst du aber nicht zig unterschiedliche Dateien. Du kannst das ganze im Zweifel auch in eine Datei packen, aber das setzt natürlich ein anderes und deutlich komplexeres Konzept voraus.
 
  • #16
So... ich habe es jetzt endlich...

habe es nun so realisiert:

Habe zunächst meine Formularfelder beibehalten. Danach habe ich eine neue Datei erstellt die dann so aussieht:
Code:
<?php

session_start();

$domainname = $_REQUEST['domainname'];
$tld = $_REQUEST['tld'];

$_SESSION['domainname']= $domainname;
$_SESSION['tld']= $tld;

header(Location: domaincheck.php);

?>

Die Variablen werden eingelesen und in der Session gespeichert. So mache ich es mit jeder Datei. Bei der Zusammenfassung in der letzten Datei wird nun alles korrekt angezeigt.
Vielleicht gibt es eine elegantere Lösung, aber das ist mir jetzt schnuppe. Bin froh, dass es jetzt ENDLICH funktioniert.

Danke an alle.

;D ;D ;D

P.S. Wenn Ihr mal günstigen webspace braucht (z.B
10MB = 0,59?/mtl.;
100MB - PHP - 1xMySQL = 1,99?/mtl.;
200MB - PHP - 3xMySQL = 2,99?/mtl.; usw.)
könnte ich Euch weiterhelfen. Würde mich freuen.

Grüsse
 
  • #17
Hi,
ich persönlich habe noch nicht mit Sessions gearbeitet, da noch kein Grund dafür da war, doch denke ich, dass Sessions die eleganteste Lösung hierzu sind.

Ich würde dir also zustimmen, die über Session Variablen zu machen.
 
  • #18
groovesurfer schrieb:
Hi hi,

ich möchte von einer zur nächsten datei variablen und formularfelder übertragen. Wie kann ich das machen?

Code:
session_start();
$sidwh=session_id();

$paket=$HTTP_GET_VARS['paket'];
$zahlung=$HTTP_GET_VARS['zahlung'];

echo <form action='datei2.php?sidwh=$sidwh&paket=$paket&zahlung=$zahlung' method='GET'>;
.
.
.
.
echo <input type='text' name='eingabe' size='16'>;
echo <input type='submit'>;
Würde ja nicht funktionieren...

Über <input type=hidden.....> funktioniert es nicht da die Variablen über mehrere Dateien übertragen werden sollen und so immer nur das erste Wort übertragen wird.
Was könnte ich sonst noch versuchen?

Grüsse...

Was meinst Du mit, es wird nur das erste Wort übertragen?

Mach das doch mal so:

Beispiel:
aus dem ersten Formular kommen Adressdaten (Name, Vorname usw.),
diese tust Du dann einzeln als versteckte Eingabefelder in die folgenden:

Code:
// Form seite1.php
<form name=SEITE1 action=seite2.php method=POST>
<input type=text name=vorname value=>
<input type=text name=nachname value=>
<input type=submit name=weiter value=Zu Seite 2>
</form>


// Form seite2.php
<form name=SEITE2 action=seite3.php method=POST>
<input type=hidden name=vorname value=<?PHP echo $_POST['vorname']; ?>
<input type=hidden name=nachname value=<?PHP echo $_POST['nachname']; ?>

usw...

Ist das so schwer?
 
Thema:

php: Variablen und Formularfelder übertragen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben