PHP Sessions werden nicht registriert

Andreasb.

Lt. Junior Grade
Registriert
Jan. 2011
Beiträge
271
Hi,
ich arbeite im Moment an einer Seite, die so eine Art PC Konfiguration sein soll.
Das Thema Sessions ist jetzt noch relativ neu für mich und jetzt habe ich ein Problem:
Die einzelnen Komponenten sollen auf einzelnen Seiten ausgewählt werden und als Session gespeichert werden, unter jeder Seite sollen dann die bereits gewählten Komponenten aufgelistet werden, aber es wird immer nur die erste Komponente, die cpu, und die zu letzt gewählte angezeigt alles dazwischen ist verschwunden,, wist ihr woran das Problem liegen könnte?


Hier wird die CPU und die HDD angezeigt die vorher gewählt wurden und der RAM soll gewählt werden:
unknown-png.255902


Wenn man auf die nächste Seite geht ist die CPU noch da aber die HDD verschwindet:
unknown-1-png.255901


Erste Seite:

PHP:
<?php
session_start();
include("#_mysql.inc");
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">



<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">


	<head>
	
		<title>PC Konfigurator</title>

		
	</head>
	
	
	<body>
	
		<h1>PC Konfigurator</h1>
		
		<h2>Prozessor Auswählen</h2>
		

								
		
		<form method="post" action="HDD.php">
		
			<table>
		
				<tr>
					<td>Name:</td>
					<td>Hersteller:</td>
					<td>Kerne:</td>
					<td>Threads</td>
					<td>Takt</td>
					<td>Sockel</td>
					<td>Preis</td>
				</tr>
							<?php
							$sql = mysql_query("SELECT * FROM CPU ORDER BY price");
							while ($ds = mysql_fetch_object($sql)) {
								$id = $ds -> id;
								$name = $ds -> name;
								$producer = $ds -> producer;
								$cores = $ds -> cores;
								$threads = $ds -> threads;
								$clock = $ds -> clock;
								$socket = $ds -> socket;
								$price = $ds -> price;
								$picture = $ds -> picture;
			?>

				<tr>
						<td><input type="radio" name="CPU" value="<? echo "$name"; ?>"><? echo "$name"; ?><br>
						<img src="<? echo "$picture"; ?>" width="175,625" height="187,5" alt="<? echo "$name"; ?>">
						</td>
						<td><? echo "$producer ";?> </td>
						<td><? echo "$cores "; ?> </td>
						<td><? echo "$threads "; ?> </td>
						<td><? echo "$clock ";?> </td>
						<td><? echo "$socket "; ?> </td>
						<td><? echo "$price "; ?>€ </td>
				</tr>
					
				<?php
					}
					mysql_close($dz);
				?>
				
			
			</table>
			<input type="submit" value="Weiter">
		
		</form>
		
		
		
		
	</body>
	
</html>


Zweite Seite:

PHP:
<?php
session_start();
include("#_mysql.inc");
 
$cpu = trim($_POST['CPU']);
  $_SESSION['cpu'] = $cpu; 

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">



<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">


	<head>
	
		<title>PC Konfigurator</title>

		
		
	</head>
	
	
	<body>
	
		<h1>PC Konfigurator</h1>
		
		<h2>Festplatte Auswählen</h2>
		

								
		
		<form method="post" action="ram.php">

		
			<table>
		
				<tr>
					<td>Name</td>
					<td>Hersteller</td>
					<td>Kapazität</td>
					<td>Preis</td>
				</tr>
							<?php
							$sql = mysql_query("SELECT * FROM HDD ORDER BY price");
							while ($ds = mysql_fetch_object($sql)) {
								$id = $ds -> id;
								$name = $ds -> name;
								$producer = $ds -> producer;
								$capacity = $ds -> capacity;
								$price = $ds -> price;
								$picture = $ds -> picture;
			?>

				<tr>
						<td><input type="radio" name="HDD" value="<? echo "$name"; ?>"><? echo "$name"; ?><br>
						<img src="<? echo "$picture"; ?>" width="175,625" height="187,5" alt="<? echo "$name"; ?>">
						</td>
						<td><? echo "$producer ";?> </td>
						<td><? echo "$capacity "; ?>GB </td>
						<td><? echo "$price "; ?>€ </td>
				</tr>
					
				<?php
					}
					mysql_close($dz);
				?>
				
			
			</table>
		<input type="submit" value="Weiter">
		</form><br>
		<?php
			
			echo "$_SESSION[cpu]";
			?>
		
		
		
	</body>
	
</html>

dritte Seite:
PHP:
<?php
session_start();
include("#_mysql.inc");
 
$hdd = trim($_POST['HDD']);
  $_SESSION['hdd'] = $hdd; 

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">



<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">


	<head>
	
		<title>PC Konfigurator</title>

		
		
	</head>
	
	
	<body>
	
		<h1>PC Konfigurator</h1>
		
		<h2>Speicher Auswählen</h2>
		

								
		
		<form method="post" action="mb.php">

		
			<table>
		
				<tr>
					<td>Name</td>
					<td>Hersteller</td>
					<td>Kapazität</td>
					<td>Preis</td>
				</tr>
							<?php
							$sql = mysql_query("SELECT * FROM ram ORDER BY price");
							while ($ds = mysql_fetch_object($sql)) {
								$id = $ds -> id;
								$name = $ds -> name;
								$producer = $ds -> producer;
								$capacity = $ds -> capacity;
								$price = $ds -> price;
								$picture = $ds -> picture;
			?>

				<tr>
						<td><input type="radio" name="RAM" value="<? echo "$name"; ?>"><? echo "$name"; ?><br>
						<img src="<? echo "$picture"; ?>" width="175,625" height="187,5" alt="<? echo "$name"; ?>">
						</td>
						<td><? echo "$producer ";?> </td>
						<td><? echo "$capacity "; ?>GB </td>
						<td><? echo "$price "; ?>€ </td>
				</tr>
					
				<?php
					}
					mysql_close($dz);
				?>
				
			
			</table>
		<input type="submit" value="Weiter">
		</form><br>
		<?php
			
			echo "$_SESSION[cpu]";
			?>
			<br />
			<?php
			echo "$_SESSION[hdd]";
			?>
			<?php
			echo "$_SESSION[mb]";
			?>	
		
		
		
	</body>
	
</html>
 

Anhänge

  • Unknown-1.png
    Unknown-1.png
    15,6 KB · Aufrufe: 263
  • Unknown.png
    Unknown.png
    20,5 KB · Aufrufe: 268
3x Session_start? Sollte es nicht reichen das einmal auf der ersten Seite aufzurufen?
Und ich würde dort noch eine leere Variable abfangen mit isset.

if (isset($_POST['CPU']))
{
$cpu = trim($_POST['CPU']);
$_SESSION['cpu'] = $cpu;
}

Eventuell wird der Variableninhalt bei jedem Seitenaufruf mit einer leeren Variablen
überschrieben.
 
Jetzt wird auch die cpu nicht mehr gespeichert, sondern nur noch die vorherige Komponente.
 
Suxxess schrieb:
3x Session_start? Sollte es nicht reichen das einmal auf der ersten Seite aufzurufen?

Doku: session_start() erzeugt eine Session oder nimmt die aktuelle wieder auf, die auf der Session-Kennung basiert, die mit einer GET- oder POST-Anfrage oder mit einem Cookie übermittelt wurde.

@Ts:

Habs mal bei mir getestet, statt Datenbank halt statische Werte. Funktioniert alles wie es soll.
Lösche mal deine Cookies für den Server und versuchs nochmal. Achja und lass zum Testen mal alles auf plain html text, kein css oder so.
 
Zuletzt bearbeitet:
Ja es funktioniert jetzt ich brauchte den Code von Suxxess, session_start(); und die cookies waren auch noch nicht gelöscht, da muss ich wohl noch etwas lernen.
Aber vielen dank an euch beide.

session_start();
if (isset($_POST['CPU']))
{
$cpu = trim($_POST['CPU']);
$_SESSION['cpu'] = $cpu;
}
 
Wenn es ohne den Code von Suxxess nicht funktioniert hat, dann funktioniert es mit ihm auch nicht ;) du solltest diesen nämlich noch erweitern um eine Fehlerbehandlung o.ä., sonst macht er nicht mehr als wenn man ihn gar nicht eingebaut hätte. Da dein Code von oben allerdings eh schon funktioniert, tippe ich mal auf ein Cookie Problem.
 

Ähnliche Themen

M
Antworten
2
Aufrufe
2.220
M
Antworten
9
Aufrufe
1.459
Antworten
4
Aufrufe
857
Zurück
Oben