Grundlegende Fragen zu Formular mit Session

Luke85

Mitglied
Hallo alle miteinander,

es geht nun mit großen Schritten nach Vorne.
Habe mir Session-Tutorials angeschaut und durchgelesen und habe grundlegende Fragen zgl. diesen.
Ich habe hier mal vorerst ein zweiseitiges Formular, in denen die Eingaben weitergegeben werden müssen, sollen aber nicht sichtbar sein, da die Ausgabe erst am Ende erfolgt mit allen Auswahlen der jeweiligen Formularen.

Habe mir zwei Seiten erstellt, Arrays namen vergeben und in die Session eingebaut.

1. Seite
PHP:
<?PHP
session_start();

$_SESSION['01_daten_auswaehlen_allgemein'] = $_POST;


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Daten auswaehlen</title>

<link href="formatierung.css" rel="stylesheet" type="text/css" />

</head>

<body>
<?php
//  ***************************************** Verbindung zur DB und Fehlermeldungsassistent ***************************************** \\
// Einbinden der Verbindungsdaten
    include("db.inc");
// Verbindung zum Datenbankserver herstellen
    $link=mysql_pconnect($dbserver, $dbuser, $dbpasswd);
    if ($link == FALSE)
    {
        echo "<p><b>Leider kann keine Verbindung zur Datenbank hergestellt werden. Bitte versuchen Sie es später noch einmal.\n";
        echo "</BODY></HTML>\n"; // HTML Dokument abschliessen
        exit ();
    }

// Datenbank auswaehlen
    $dblink=mysql_select_db($dbname);
    if ($dblink == FALSE)
    {
        echo "<p><b>Leider kann die Datenbank nicht geöffnet werden. Bitte versuchen Sie es später noch einmal.\n";
        echo "</BODY></HTML>\n"; // HTML Dokument abschliessen
        exit (); // PHP-Script beenden
    }
//  ********************************************************************************************************************************* \\

?>

<p class="Stil1">1. Schritt: Stellen Sie die Parameterauswahl für Allgemeine Parameter zusammen</p>

        <form name="01_daten_auswaehlen_allgemein" action="02_daten_auswaehlen_dcV3.php" method="post">
        <p class="Stil2">Produktnummer angeben: 
        <input name="<?=$_SESSION['prdNr'];?>"  type="text" size="30" maxlength="50" value="prdNr"/>
        /
        <input name="<?=$_SESSION['prdNr_zus'];?>" type="text" size="5"  maxlength="50" value="zus"/>
        /
        <input name="<?=$_SESSION['prdNr_ext'];?>" type="text" size="30" maxlength="50" value="ext"/>
        </p>

  <p class="Stil2">Wählen Sie die gewünschten Parameter aus:</p>

<?
	$query1 = "SELECT allgemein_parameter FROM eingabe_allgemein";
	$result1 = mysql_query($query1) or die (mysql_error());
	while($row=mysql_fetch_assoc($result1))
	{
?>
        <table width="405" border="1" cellspacing="0" cellpadding="3" class="Stil2">
        <tr>
        <td width="5"><input type="checkbox" name="<?=$_SESSION['prdpara'];?>" value="<?=$row['allgemein_parameter'];?>"></td>
        <td width="400"><input type="text" name="<?=$_SESSION['wert'];?>" value="<?=$row['allgemein_parameter'];?>" readonly="readonly" size="60"></td>
        </tr>
        </table>
<?
	}
?>
        <input type="submit" name="gesendet" value="Weiter">
        </form>

</body>
</html>

2. Seite
PHP:
<?PHP
session_start();


echo 	$_SESSION['01_daten_auswaehlen_allgemein'][$prdNr] = $_POST;
		$_SESSION['01_daten_auswaehlen_allgemein'][$prdNr_zus] = $_POST;
		$_SESSION['01_daten_auswaehlen_allgemein'][$prdNr_ext] = $_POST;
		$_SESSION['01_daten_auswaehlen_allgemein'][$prdpara] = $_POST;
		$_SESSION['01_daten_auswaehlen_allgemein'][$wert] = $_POST;

foreach ($_SESSION as $key => $value) {
echo $key."=".$value."<br>";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Daten auswaehlen</title>



<link href="formatierung.css" rel="stylesheet" type="text/css" />

</head>

<body>
<?php
//  ***************************************** Verbindung zur DB und Fehlermeldungsassistent ***************************************** \\
// Einbinden der Verbindungsdaten
    include("db.inc");
// Verbindung zum Datenbankserver herstellen
    $link=mysql_pconnect($dbserver, $dbuser, $dbpasswd);
    if ($link == FALSE)
    {
        echo "<p><b>Leider kann keine Verbindung zur Datenbank hergestellt werden. Bitte versuchen Sie es später noch einmal.\n";
        echo "</BODY></HTML>\n"; // HTML Dokument abschliessen
        exit ();
    }

// Datenbank auswaehlen
    $dblink=mysql_select_db($dbname);
    if ($dblink == FALSE)
    {
        echo "<p><b>Leider kann die Datenbank nicht geöffnet werden. Bitte versuchen Sie es später noch einmal.\n";
        echo "</BODY></HTML>\n"; // HTML Dokument abschliessen
        exit (); // PHP-Script beenden
    }
//  ********************************************************************************************************************************* \\
?>
<p class="Stil1">2. Schritt: Stellen Sie die Parameterauswahl für DC Parameter zusammen</p>

        <form name="01_daten_auswaehlen_allgemein" action="01_daten_auswaehlenV2.php" method="post">
        <p class="Stil2">Produktnummer angeben: 
        <input name="<?=$_SESSION['prdNr'];?>"  type="text" size="30" maxlength="50" value="prdNr"/>
        /
        <input name="<?=$_SESSION['prdNr_zus'];?>" type="text" size="5"  maxlength="50" value="zus"/>
        /
        <input name="<?=$_SESSION['prdNr_ext'];?>" type="text" size="30" maxlength="50" value="ext"/>
        </p>

<p class="Stil2">Wählen Sie die gewünschten Parameter aus:</p>
<?
	$query2 = "SELECT dc_parameter FROM eingabe_dc";
	$result2 = mysql_query($query2) or die (mysql_error());
	while($row=mysql_fetch_assoc($result2))
	{
?>
        <table width="405" border="1" cellspacing="0" cellpadding="3" class="Stil2">
        <tr>
        <td width="5"><input type="checkbox" name="<?=$_SESSION['prdpara'];?>" value="<?=$row['dc_parameter'];?>"></td>
        <td width="400"><input type="text" name="<?=$_SESSION['wert'];?>" value="<?=$row['dc_parameter'];?>" readonly="readonly" size="60"></td>
        </tr>
        </table>
<?
	}
?>
        <input type="submit" name="gesendet" value="Weiter">
        </form>

</body>
</html>

Meine Ausgabe sieht wie folgt aus:
Arrayid=a8a0272e2821ae60e3952198e95fe450
01_daten_auswaehlen_allgemein=Array


Ich speichere alle Felder in einer Session und geben diese dann einzeln im anderen Formular wieder aus.
Ist dieser Ansatz richtig oder für die Füß? Oder muss eine andere Lösung her?

Gruß, Luke.
 
Du kannst gleich das gesamte $_POST-Array kopieren und musst nicht alle Werte einzeln kopieren.
PHP:
if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
	$_SESSION['01_daten_auswaehlen_allgemein'] = $_POST;
}
 
Aah super danke ;).
Wie fange ich denn mit der Foreach-Schleife die einzelnen ausgewählten Parameter ab, denn momentan ist die Ausgabe ja total falsch. Und dazugibt er mir die Session-ID aus, was ja gar nicht vorkommen darf.
 
Wenn du nur die Elemente des $_SESSION['01_daten_auswaehlen_allgemein']-Arrays haben möchtest, musst du auch nur dieses angeben.
 
Habe nach einem erholsamen Wochenende mal das Skript wieder herausgekramt. Bin weiter gekommen, doch stoppe gerade wahrscheinlich an einer simplen Lösung. Folgende Skripte sind vorhanden:

01_daten_auswaehlen_allgemein.php
PHP:
<?php
if (!isset($_POST['gesendet'])) {
?>
<p class="Stil1">1. Schritt: Stellen Sie die Parameterauswahl für Allgemeine Parameter zusammen</p>

<form name="01_daten_auswaehlen_allgemein" action="02_daten_auswaehlen_allgemein_auslesen.php" method="post">
        <p class="Stil2">Produktnummer angeben: 
        <input name="<?=$_SESSION['prdNr'];?>"  type="text" size="30" maxlength="50"/>
        /
        <input name="<?=$_SESSION['prdNr_zus'];?>" type="text" size="5"  maxlength="50"/>
        /
        <input name="<?=$_SESSION['prdNr_ext'];?>" type="text" size="30" maxlength="50"/>
        </p>

  <p class="Stil2">Wählen Sie die gewünschten Parameter aus:</p>

<?
	$query1 = "SELECT allgemein_parameter FROM eingabe_allgemein";
	$result1 = mysql_query($query1) or die (mysql_error());
	while($row=mysql_fetch_assoc($result1))
	{
?>
        <table width="405" border="0" cellspacing="0" cellpadding="3" class="Stil2">
        <tr>
        <td width="5"><input type="checkbox" name="<?= $_SESSION['allgemein_parameter'];?>" value="<?=$row['allgemein_parameter'];?>"></td>
        <td width="400"><input type="text" value="<?=$row['allgemein_parameter'];?>" readonly="readonly" size="60"></td>

        </tr>
        </table>
<?
	}

}
?>

<input type="submit" name="gesendet" value="Weiter">
</form>

02_daten_auswaehlen_allgemein_auslesen.php
PHP:
<?PHP
error_reporting(E_ALL);

session_start();
require("db.inc.php");


if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
    $_SESSION['01_daten_auswaehlen_allgemein'] = $_POST;

	echo "Sie haben Folgende Auswahl getroffen: ";
	echo "<br><br>";
	
	foreach($_SESSION["01_daten_auswaehlen_allgemein"] as $zahl)
	{            
		echo $zahl." <br>";    
	}    
}
?>

Treffe ich eine Auswahl anhand der Checkboxen im ersten Formular, wird nur eine Auswahl im zweiten Formular ausgegeben. Wie löse ich das Problem?

Gruß, Luke.
 
Zurück