Antje: session wird nach submit geleert

Hallo,
ich habe ein problem mit meinen sessionvariablen.
wenn ich ein objekt aus eienr liste wähle existiert die session für das inputfeld noch. aber wenn ich eine änderung abschicken will, dann ist die session für das inputfld leer. aber nicht für die combobox. kann mir jemand helfen und sagen, wie man die session für inputs speichern kann, und warum das ein unterchied ist, ob man inputs oder selects behandel?

<?php
 session_start();
 include_once dirname ( __FILE__ ) ."/library/db_connect.php"; // db_connect wird einmalig eingebunden
?>

<!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" lang="de" xml:lang="de">
 <head>
  <title>Projekterfassung</title>
  <link rel="stylesheet" type="text/css" href="css/layout.css" title="layout"/>
 </head>
 <body>
  <div id="main">
   <div id="sidebar">
    <?php
     echo "<table CELLSPACING=14>";
      echo "<tr>";
       echo "<td>";
/**********************************************/
/*Projekte-ARRAY zur Auswahl eines Projektes */
/**********************************************/
        $db = getDB();
        $sql = "SELECT * FROM projekt";
        $result = mysqli_query($db,$sql);
        $index = "pr_ID";

function getProjekteArray($result, $index){
         while ($zeile = mysqli_fetch_assoc($result)){
          $projekte[$zeile[$index]] = $zeile;
         }
         return($projekte);
        }
        $projekte_array = getProjekteArray($result, $index);

if (!isset($selection) || $selection == ''){
         $selection = $_POST['projekt_Metrik'];
        }

echo "<form name='projekt_Metrik' method='post' action='".htmlspecialchars($_SERVER['PHP_SELF'])."'>\n";
         echo "<select name='projekte' size='40' style='width:175px' onChange = 'this.form.submit();'>\n";
          foreach (array_keys($projekte_array) as $key ){
           echo "<option value='".$projekte_array[$key]['pr_ID']."' ".($selection==$projekte_array[$key]?"selected":"").">".$projekte_array[$key]['pr_Name']."</option>\n";
          }
         echo "</select>\n";
       echo "</td>\n";
      echo "</tr>\n";
     echo "</table>\n";
   echo "</div>";//sidebar
   echo "<div id='content'>\n";
/*********************************************/
//Kunden-ARRAY zur Auswahl eines Projektes  */
/*********************************************/
    $db = getDB();
    $sqlKunde = "SELECT * FROM kunde, projekt WHERE projekt.ku_ID = kunde.ku_ID AND projekt.pr_ID = '".$_POST['projekte']."'";
    $result = mysqli_query($db,$sqlKunde);
    $index = "pr_ID";

function getSelPRArray($result, $index){
     while ($zeile = mysqli_fetch_assoc($result)){
      $selPr[$zeile[$index]] = $zeile;
     }
     return($selPr);
    }

$selProjekt_array = getSelPRArray($result, $index);
/**************************************/
//Domäne                              */
/**************************************/
    $db = getDB();
    $sqlDomaene = "SHOW COLUMNS FROM kunde LIKE 'ku_Domaene'";
    $result = mysqli_query($db,$sqlDomaene);

if(mysqli_num_rows($result)>0){
     $row=mysqli_fetch_row($result);
     $werteDomaene =  explode("','",preg_replace("/(enum|set)('(.+?)')/","\2",$row[1]));
    }
     if (!isset($_POST['to_sel_Domaene']) || $_POST['to_sel_Domaene'] = '' ){
      $_SESSION['to_sel_domaene'] = $_POST['ku_Domaene'];
    }
    if (isset($_POST['to_sel_Domaene']) && ($_POST['to_sel_Domaene'] != $_POST['ku_Domaene'])){
     $_POST['to_sel_Domaene'] = $_POST['ku_Domaene'];
    }
/**********************************************************************************/
/*Aufbau des Formular-Hauptteils, wenn ein Projekt im 'projekte' ausgewählt wurde*/
/**********************************************************************************/
    if($_POST['projekte'] != NULL){

foreach (array_keys($selProjekt_array) as $key ){
      $_SESSION['pr_ID'] = $selProjekt_array[$_POST['projekte']]['pr_ID'];
      $_SESSION['ku_ID'] = $selProjekt_array[$_POST['projekte']]['ku_ID'];
      $_POST['pr_Name'] = $selProjekt_array[$_POST['projekte']]['pr_Name'];
      $_SESSION['ku_Domaene'] = $selProjekt_array[$_POST['projekte']]['ku_Domaene'];

echo "Session Projekt ID: ".$_SESSION['pr_ID']."<br>";
      echo "Session Kunde ID: ".$_SESSION['ku_ID']."<br>";
      echo "Session Projekt Name: ".$_POST['pr_Name']."<br>";
      echo "Session Kunde Domaene: ".$_SESSION['ku_Domaene']."<br>";

/*Projektname*/
      echo "<table>\n";
       echo "<tr>\n";
        echo "<td>Projektname</td>\n";
         //echo "<td colspan='0'><input id='pr_Name' SIZE=100px></input></td></tr>";
         echo "<td colspan='0'><input name='".$selProjekt_array[$_POST['projekte']]['pr_ID']."' size='100' value='".$selProjekt_array[$_POST['projekte']]['pr_Name']."'></input></td>\n";
       echo "</tr>\n";
      echo "</table>\n";
      echo "Kundeninformationen\n";
      echo "<hr />\n";
      echo "<table>\n";
       echo "<tr>\n";
        $dom = $selProjekt_array[$_POST['projekte']]['ku_Domaene'];
        $seldom = $_POST['ku_Domaene'];
        echo "<td>Fachbereich</td>\n";
        echo "<td colspan='2'><select name='ku_Domaene' size='1' style='width:150px'>\n";
         //echo "<option selected value='".$selProjekt_array[$_POST['projekte']]['ku_Domaene']."' ".($_selection==$selProjekt_array[$_POST['projekte']]['ku_Domaene']?"selected":"").">".$selProjekt_array[$_POST['projekte']]['ku_Domaene']."</option>\n";
         foreach(array_keys($werteDomaene) as $key){
          if($werteDomaene[$key]==$dom){
           echo "<option selected value='".$werteDomaene[$key]."'>".$werteDomaene[$key]."</option>";
          }else{
           echo "<option value='".$werteDomaene[$key]."'>".$werteDomaene[$key]."</option>";
          }
         }
        echo "</select></td>\n";
       echo"</tr>\n";
      echo "</table>";

}

/************************************/
//Projekt-aendern Button            */
/************************************/
     echo"<div align='right'>";
      echo "<input type='submit' name='pr_Aendern' value='Projekt ändern' onChange = 'this.form.submit();'>";
     echo "</div>\n";
     }

if($_POST['pr_Aendern']){
     /*Sessionübergabe an die Variablen die die Datenbank füttern*/
     /*Davor notwendig das die sessionvariablen die Werte von den GETTERN bekommen*/
     $pr_Name = $_POST['pr_Name'];
     $ku_Domaene = $_SESSION['ku_Domaene'];
     $pr_ID = $_SESSION['pr_ID'] ;
     $ku_ID = $_SESSION['ku_ID'] ;
     $db = getDB();
     $update = ("UPDATE projekt, kunde SET
          projekt.pr_Name = '$pr_Name',
          kunde.ku_Domaene = '$ku_Domaene',
          WHERE projekt.pr_ID = '".$pr_ID."' AND kunde.ku_ID = '".$ku_ID."'");
      echo "Session Projekt ID: ".$_SESSION['pr_ID']."<br>";
      echo "Session Kunde ID: ".$_SESSION['ku_ID']."<br>";
      echo "Session Projekt Name: ".$_POST['pr_Name']."<br>";
      echo "Session Kunde Domaene: ".$_SESSION['ku_Domaene']."<br>";
    }
        echo "</form>";
    ?>
   </div><!--content-->
  </div><!--main-->
 </body>
</html>

  1. Hello liebe Antje,

    ich habe ein problem mit meinen sessionvariablen.

    Du hast zwei Probleme: das von Dir benannte und dass Du es nicht isoliert darstellen kannst.

    Bitte versuche, die vermeintlichen Problemverursacher zu isolieren und hier in übersichtlicher Kurzform darzustellen. Dazu ist i.d.R. keinerlei HTML relevant, was nicht exakt die betroffenen Dialogelemente und das dazugehörige Form beschreibt.

    Extrahiere also die relevanten Zeilen von Client-Dokument und Server-Script und stelle sie hier mit Kommentaren versehen vor.

    Vielleicht fällt Dir dabei schon auf, woran es liegt.

    Im nächsten Schritt wirst Du dann bestimmt nach Fehlermeldungen, Kontrollausgaben und weiteren Informationen (z.B. Logbucheinträge) gefragt. Stelle Dich also schon darauf ein un bereite die Informationen vor.

    Ein harzliches Glückauf z.Zt. aus Syburg

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de