mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 11:46 Benutzername: Passwort: Auto-Login

Thema: Sessions Problem vom 22.08.2006


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Sessions Problem
Autor Nachricht
BernbaZ
Threadersteller

Dabei seit: 22.08.2006
Ort: 127.0.0.1
Alter: -
Geschlecht: Männlich
Verfasst Di 22.08.2006 19:45
Titel

Sessions Problem

Antworten mit Zitat Zum Seitenanfang

Hallo Leute,

Ich habe ein Problem mit Sessions. Ich erstelle einen Fragebogen (multiple choice) mit 30 Fragen a 3 Antworten wovon nur eine Antwort richtig ist und mit einen Punkt honoriert wird, es gibt je 3 Fragen pro Seite (also 10 insgesamt). Die Antworten sind mit Radiobuttons realisiert. Es gibt noch eine letze Seite die die Punkte zusammenfasst und ein Feedback präsentiert.

Wie gesagt pro richtige Antwort gibt es einen Punkt.(zähler läuft mit...)

Weiss vielleicht jemand warum die Punkte nicht summiert werden? Beantwortet man z.B. die ersten 3 Fragen, werden die Punkte an die 2. Seite übergeben. Auf der 3. Seite gehen die von Seite 1 verloren oder werden überschrieben.

Kurz gesagt: Die Variable des Zählers wird nicht an die folgenden Seiten weitergegeben. Ich hoffe jemand weiß woran es liegt, das würde mir sehr helfen.

Vielen vielen Dank im voraus.
  View user's profile Private Nachricht senden
m0rb

Dabei seit: 30.09.2004
Ort: Fürth
Alter: 38
Geschlecht: Männlich
Verfasst Di 22.08.2006 20:15
Titel

Antworten mit Zitat Zum Seitenanfang

Hi BernbaZ,

zeig doch mal deinen Code, dann können wir dir sicherlich besser weiterhelfen. Generell kannst du die Punkte mit GET, POST oder eben über eine Session "durchreichen", wobei letzteres wohl das einfachste sein sollte.

Gruß
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
Ivan

Dabei seit: 17.04.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Di 22.08.2006 20:51
Titel

Antworten mit Zitat Zum Seitenanfang

Hallo BernbaZ,

Die Session(-Variablen) hast du nur in den Dateien verfügbar, in denen du session_start(); setzt.

Aber evtl. verweigert dein Browser auch Cookies...dann müsste die SID (Session-ID) entweder per URL oder über ein Hidden-Feld im Formular weitergegeben werden.


Gruß
Ivan


Zuletzt bearbeitet von Ivan am Di 22.08.2006 20:52, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
BernbaZ
Threadersteller

Dabei seit: 22.08.2006
Ort: 127.0.0.1
Alter: -
Geschlecht: Männlich
Verfasst Di 22.08.2006 21:10
Titel

Antworten mit Zitat Zum Seitenanfang

hallo hoffe der code bringt euch nicht zum lachen, hab "alles zu fuss" gecodet. weil das mit dem array auch nicht so klappen wollte...
also mein code sieht so aus:
check.inc.php
Code:

<?php
// Daten empfangen
   $frage1 = $_REQUEST['frage1'];
   $frage2 = $_REQUEST['frage2'];
   $frage3 = $_REQUEST['frage3'];
   $frage4 = $_REQUEST['frage4'];
   $frage5 = $_REQUEST['frage5'];
   $frage6 = $_REQUEST['frage6'];
   $frage7 = $_REQUEST['frage7'];
   $frage8 = $_REQUEST['frage8'];
   $frage9 = $_REQUEST['frage9'];
   $frage10 = $_REQUEST['frage10'];
   $frage11 = $_REQUEST['frage11'];
   $frage12 = $_REQUEST['frage12'];
   $frage13 = $_REQUEST['frage13'];
   $frage14 = $_REQUEST['frage14'];
   $frage15 = $_REQUEST['frage15'];
   $frage16 = $_REQUEST['frage16'];
   $frage17 = $_REQUEST['frage17'];
   $frage18 = $_REQUEST['frage18'];
   $frage19 = $_REQUEST['frage19'];
   $frage20 = $_REQUEST['frage20'];
   $frage21 = $_REQUEST['frage21'];
   $frage22 = $_REQUEST['frage22'];
   $frage23 = $_REQUEST['frage23'];
   $frage24 = $_REQUEST['frage24'];
   $frage25 = $_REQUEST['frage25'];
   $frage26 = $_REQUEST['frage26'];
   $frage27 = $_REQUEST['frage27'];
   $frage28 = $_REQUEST['frage28'];
   $frage29 = $_REQUEST['frage29'];
   $frage30 = $_REQUEST['frage30'];
   $senden = $_REQUEST['senden'];
   $_SESSION['frage1'] = $frage1;
   $_SESSION['frage2'] = $frage2;
   $_SESSION['frage3'] = $frage3;
   $_SESSION['frage4'] = $frage4;
   $_SESSION['frage5'] = $frage5;
   $_SESSION['frage6'] = $frage6;
   $_SESSION['frage7'] = $frage7;
   $_SESSION['frage8'] = $frage8;
   $_SESSION['frage9'] = $frage9;
   $_SESSION['frage10'] = $frage10;
   $_SESSION['frage11'] = $frage11;
   $_SESSION['frage12'] = $frage12;
   $_SESSION['frage13'] = $frage13;
   $_SESSION['frage14'] = $frage14;
   $_SESSION['frage15'] = $frage15;
   $_SESSION['frage16'] = $frage16;
   $_SESSION['frage17'] = $frage17;
   $_SESSION['frage18'] = $frage18;
   $_SESSION['frage19'] = $frage19;
   $_SESSION['frage20'] = $frage20;
   $_SESSION['frage21'] = $frage21;
   $_SESSION['frage22'] = $frage22;
   $_SESSION['frage23'] = $frage23;
   $_SESSION['frage24'] = $frage24;
   $_SESSION['frage25'] = $frage25;
   $_SESSION['frage26'] = $frage26;
   $_SESSION['frage27'] = $frage27;
   $_SESSION['frage28'] = $frage28;
   $_SESSION['frage29'] = $frage29;
   $_SESSION['frage30'] = $frage30;
   
// Variablen anlegen   
   $erg;
   $gesamt = 30;
   $punkte = 1;
   $fragen = array($frage1, $frage2, $frage3, $frage4, $frage5, $frage6, $frage7, $frage8, $frage9, $frage10,
                                $frage11, $frage12, $frage13, $frage14, $frage15, $frage16, $frage17, $frage18, $frage19,    $frage20,$frage21, $frage22, $frage23, $frage24, $frage25, $frage26, $frage27, $frage28, $frage29, $frage30,);

if(isset($senden)){
   if($frage1 == '2')
      $erg += $punkte;
      
   if($frage2 == '1')
      $erg += $punkte;
      
   if($frage3 == '3')
      $erg += $punkte;

   if($frage4 == '2')
      $erg += $punkte;
      
   if($frage5 == '1')
      $erg += $punkte;
      
   if($frage6 == '3')
      $erg += $punkte;

   if($frage7 == '2')
      $erg += $punkte;
      
   if($frage8 == '1')
      $erg += $punkte;
      
   if($frage9 == '3')
      $erg += $punkte;

   if($frage10 == '2')
      $erg += $punkte;
      
   if($frage11 == '1')
      $erg += $punkte;
      
   if($frage12 == '3')
      $erg += $punkte;

   if($frage13 == '2')
      $erg += $punkte;
      
   if($frage14 == '1')
      $erg += $punkte;
      
   if($frage15 == '3')
      $erg += $punkte;

   if($frage16 == '2')
      $erg += $punkte;
      
   if($frage17 == '1')
      $erg += $punkte;
      
   if($frage18 == '3')
      $erg += $punkte;

   if($frage19 == '2')
      $erg += $punkte;
      
   if($frage20 == '1')
      $erg += $punkte;
      
   if($frage21 == '3')
      $erg += $punkte;

   if($frage22 == '2')
      $erg += $punkte;
      
   if($frage23 == '1')
      $erg += $punkte;
      
   if($frage24 == '3')
      $erg += $punkte;

   if($frage25 == '2')
      $erg += $punkte;
      
   if($frage26 == '1')
      $erg += $punkte;
      
   if($frage27 == '3')
      $erg += $punkte;

   if($frage28 == '2')
      $erg += $punkte;
      
   if($frage29 == '1')
      $erg += $punkte;
      
   if($frage30 == '3')
      $erg += $punkte;
}
?>


runde_01.php
Code:

<?php
   session_start();
   $_SESSION['frage1'] = $frage1;
   $_SESSION['frage2'] = $frage2;
   $_SESSION['frage3'] = $frage3;
   
?>

<!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="en_US" xml:lang="en_US">
<!--
 * Created on 22.08.2006
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
-->
 <head>
  <title> </title>
 </head>
 <body>
    <form action="runde_02.php" method="post" name="check">
   <span><strong>Thema: 1</strong></span><br />
   Frage 1: <br />
   <input type="radio" name="frage1" value="1" />A1<br />
   <input type="radio" name="frage1" value="2" />A2<br />
   <input type="radio" name="frage1" value="3" />A3<br />
   Frage 2: <br />
   <input type="radio" name="frage2" value="1" /><br />
   <input type="radio" name="frage2" value="2" /><br />
   <input type="radio" name="frage2" value="3" /><br />
   Frage 3:<br />
   <input type="radio" name="frage3" value="1" /><br />
   <input type="radio" name="frage3" value="2" /><br />
   <input type="radio" name="frage3" value="3" /><br /><br />
    <input type="submit" name="senden[0]" value="weiter"/>
   </form>
   <?php
      echo "<strong>$punkte</strong> von $gesamt Punkten.";
   ?>

 </body>
</html>


runde_02.php
Code:

<?php
//   session_cache_limiter("private");
    header("Cache-control: private");
   session_start();
   $_SESSION['frage4'] = $frage4;
   $_SESSION['frage5'] = $frage5;
   $_SESSION['frage6'] = $frage6;
   
   include ("check.inc.php");
?>

<!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="en_US" xml:lang="en_US">
<!--
 * Created on 22.08.2006
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
-->
 <head>
  <title> </title>
 </head>
 <body>
 
 <form action="runde_03.php" method="get" name="check">
<span><strong>Thema: 2</strong></span><br />
   Frage 4:<br />
   <input type="radio" name="frage4" value="1" /><br />
   <input type="radio" name="frage4" value="2" /><br />
   <input type="radio" name="frage4" value="3" /><br />
   Frage 5:<br />
   <input type="radio" name="frage5" value="1" /><br />
   <input type="radio" name="frage5" value="2" /><br />
   <input type="radio" name="frage5" value="3" /><br />
   Frage 6:<br />
   <input type="radio" name="frage6" value="1" /><br />
   <input type="radio" name="frage6" value="2" /><br />
   <input type="radio" name="frage6" value="3" /><br /><br />
   <input type="submit" name="senden[1]" value="weiter"/><br />
</form>
<?php
echo "bisher erreicht <strong>".(0+$erg)."</strong> von $gesamt Punkten.";
?>
 
 </body>
</html>


und so weiter. dann gibt es noch die
auswertung.php
Code:

<?php
   header("Cache-control: private");
   session_start();
   include("check.inc.php");
?>
<!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="en_US" xml:lang="en_US">
<!--
 * Created on 22.08.2006
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
-->
 <head>
  <title>Auswertung</title>
 </head>
 <body>
 <?php
   echo "Das Ergebnis deines Checks:<br />Du hast <strong>".(0+$erg)."</strong> von $gesamt Punkten erreicht.</br>";
   print_r($_SESSION);
?>
 
 </body>
</html>


was ich nicht verstehe ist, das die var $erg nicht weitergegeben wird. falls sie überschrieben wird was ich vermute, weiß ich nicht wie ich das ändern soll. hoffe ihr habt eine idee, das wäre echt toll...
  View user's profile Private Nachricht senden
Ivan

Dabei seit: 17.04.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Di 22.08.2006 21:23
Titel

Antworten mit Zitat Zum Seitenanfang

boah...bei dem Quellcode * Wo bin ich? *

Das sieht ja aus * Nee, nee, nee *

Naja, also, dass $erg überschrieben wird, is ja wohl klar:
Code:
   $erg;
   $gesamt = 30;
   $punkte = 1;

Und das wird bei jedem Aufruf der Seiten gemacht.
Heisst, die Variable $erg wird nach jeder dritten Frage überschrieben.

du musst die Variable $erg jedes Mal mit bspw. $_SESSION["erg"] übergeben.
Nicht jedes Mal neu initialisieren.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
BernbaZ
Threadersteller

Dabei seit: 22.08.2006
Ort: 127.0.0.1
Alter: -
Geschlecht: Männlich
Verfasst Di 22.08.2006 22:27
Titel

Antworten mit Zitat Zum Seitenanfang

@ Ivan, danke für dein deutliches statement *zwinker*
ist nicht ironisch gemeint, schließlich will was lernen.
hab den code etwas komprimiert. $_SESSIONS['erg'], funktioniert auch nicht. obwohl ich im ganzen code rumgeschoben habe. wenn ich es drin lasse krieg ich von Eclipse so eine Meldung:
Zitat:
Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

hier noch mal der geänderte code von
check.inc.php
Code:
<?php
// Daten empfangen
   $_SESSION['frage1'] = $frage1;
   $_SESSION['frage2'] = $frage2;
   $_SESSION['frage3'] = $frage3;
   $_SESSION['frage4'] = $frage4;
   $_SESSION['frage5'] = $frage5;
   $_SESSION['frage6'] = $frage6;
   $_SESSION['frage7'] = $frage7;
   $_SESSION['frage8'] = $frage8;
   $_SESSION['frage9'] = $frage9;
   $_SESSION['frage10'] = $frage10;
   $_SESSION['frage11'] = $frage11;
   $_SESSION['frage12'] = $frage12;
   $_SESSION['erg'] = $erg;

// Variablen anlegen
   $gesamt = 30;
   $punkte = 1;
//   $fragen = array($frage1, $frage2, $frage3, $frage4, $frage5, $frage6, $frage7, $frage8, $frage9, $frage10, $frage11, $frage12);

   if(isset($_REQUEST['frage1'.$frage1]) == '2'){$erg += $punkte;}
   
   if(isset($_REQUEST['frage2'.$frage2]) == '1'){$erg += $punkte;}
      
   if(isset($_REQUEST['frage3'.$frage3]) == '3'){$erg += $punkte;}

   if(isset($_REQUEST['frage4'.$frage4]) == '2'){$erg += $punkte;}
      
   if(isset($_REQUEST['frage5'.$frage5]) == '1'){$erg += $punkte;}
      
   if(isset($_REQUEST['frage6'.$frage6]) == '3'){$erg += $punkte;}

   if(isset($_REQUEST['frage7'.$frage7]) == '2'){$erg += $punkte;}
      
   if(isset($_REQUEST['frage8'.$frage8]) == '1'){$erg += $punkte;}
      
   if(isset($_REQUEST['frage9'.$frage9]) == '3'){$erg += $punkte;}

   if(isset($_REQUEST['frage10'.$frage10]) == '2'){$erg += $punkte;}
      
   if(isset($_REQUEST['frage11'.$frage11]) == '1'){$erg += $punkte;}
      
   if(isset($_REQUEST['frage12'.$frage12]) == '3'){$erg += $punkte;}
?>

und so sieht jetzt die runde_02.php aus
Code:
<?php
//   session_cache_limiter("private");
    header("Cache-control: private");
   session_start();
?>
<!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="en_US" xml:lang="en_US">
<!--
 * Created on 22.08.2006
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
-->
 <head>
  <title> </title>
 </head>
 <body>
 
 <form action="runde_03.php" method="post" name="check">
<span><strong>Thema: 2</strong></span><br />
   Frage 4:<br />
   <input type="radio" name="frage4" value="1" /><br />
   <input type="radio" name="frage4" value="2" /><br />
   <input type="radio" name="frage4" value="3" /><br />
   Frage 5:<br />
   <input type="radio" name="frage5" value="1" /><br />
   <input type="radio" name="frage5" value="2" /><br />
   <input type="radio" name="frage5" value="3" /><br />
   Frage 6:<br />
   <input type="radio" name="frage6" value="1" /><br />
   <input type="radio" name="frage6" value="2" /><br />
   <input type="radio" name="frage6" value="3" /><br /><br />
   <input type="submit" name="senden[1]" value="weiter"/><br />
</form>
<?php
include ("check.inc.php");
echo "bisher erreicht <strong>".(0+$erg)."</strong> von $gesamt Punkten.";
?>
 
 </body>
</html>

meinst du vielleicht, $_SESSION['erg'] mit (0+$erg) ersetzen? das hab ich gerade probiert aber auch nix. wenn du noch ne idee hast wäre ich sehr dankbar. sitze schon den ganzen tag dran, klicke mich durch tutorials, manuals und foren und alles ohne ergebnis... sorry, will dich nicht volljammern * Ich geb auf... * * Ich geb auf... *


Zuletzt bearbeitet von BernbaZ am Di 22.08.2006 22:35, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden
Ivan

Dabei seit: 17.04.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Di 22.08.2006 22:46
Titel

Antworten mit Zitat Zum Seitenanfang

Ich würde das ganze System anders aufbauen.
Allerdings müsste ich mir auch erstmal was überlegen.

Werde mich aber nochmal melden, wenn ich
eine Lösung gefunden habe.

Nur zum Verständnis:
Du hast pro Seite 3 Fragen. Und auf jeder Seite
willst du die aktuell erreichte Punktzahl anzeigen lassen?


Gruß
Ivan
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
BernbaZ
Threadersteller

Dabei seit: 22.08.2006
Ort: 127.0.0.1
Alter: -
Geschlecht: Männlich
Verfasst Di 22.08.2006 22:58
Titel

Antworten mit Zitat Zum Seitenanfang

Hi Ivan,

ja das ist richtig. 3 Fragen mit je drei Antworten pro Seite und die Punktezahl anzeigen.

Bin total erledigt heute, hau mich aufs ohr.


Ich danke dir vielmals, dass Du dir soviel Zeit genommen hast.


Gruß BernbaZ
  View user's profile Private Nachricht senden
 
Ähnliche Themen problem mit sessions
Sessions-Problem bei PHP
[PHP] Sessions - Problem
[Solved] Problem mit Cookies bzw. Sessions
[PHP] Login mit Sessions
Sicherheit von Sessions
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.