Avatar billede lunddata Nybegynder
10. januar 2010 - 10:45 Der er 9 kommentarer og
1 løsning

Tæller virker ikke

Ny i php!
I linket virker tælleren med opsummering af antal rigtige og antal forkerte svar.
practice your addition facts. (http://www.phpmath.com/demos/arithmetic/practice_1.php)

Hvorfor virker (tæller)scriptet ikke hos mig, når jeg vil bruge det?
Jeg får genereret nye opgaver og får respons om opgaven er løst rigtigt.

<?php
/**
* @author Paul Meagher
* @updated May 18, 2005
*/
session_name("practice");
session_start();

$min_rand = 0;
$max_rand = 18;

$first_number  = rand($min_rand, $max_rand);
$second_number = rand($min_rand, $max_rand);

if ($_GET['op'] == "clear") $_SESSION = array();

if (!isset($_SESSION['num_right'])) $_SESSION['num_right'] = 0;
if (!isset($_SESSION['num_wrong'])) $_SESSION['num_wrong'] = 0;
if (!isset($_SESSION['num_probs'])) $_SESSION['num_probs'] = 0;

if ($_POST['form_submitted'] == "yes") {
  $fn = $_POST['fn'];
  $sn = $_POST['sn'];
  $ca = $fn + $sn;
  $_SESSION['num_probs']++;     
  $np = $_SESSION['num_probs']; 
  $sa = $_POST['submitted_answer'];   
  if ($ca == $sa) {   
    echo "<p>Hooray, you answered problem # $np correctly: $fn + $sn = $ca</p>";
    $_SESSION['num_right']++;
  } else {
    echo "<p><font color='red'><b>Darn, you answered problem # $np incorrectly: $fn + $sn = $ca, <i>not</i> $sa</b></font> </p>";
    $_SESSION['num_wrong']++;   
  }
}
?>

<table>
  <form method='post' action='<?php echo $_SERVER['PHP_SELF'] ?>'>
  <input type='hidden' name='form_submitted' value='yes'> 
  <input type='hidden' name='fn' value='<?php echo $first_number ?>'>
  <input type='hidden' name='sn' value='<?php echo $second_number ?>'> 
  <tr>
    <td><?php echo $first_number ?></td>
    <td> + </td>       
    <td><?php echo $second_number ?></td>   
    <td> = </td>           
    <td><input type='text' name='submitted_answer' value='' size='2'></td>
    <td><input type='submit' value='Check Answer'></td>   
  </tr>
  </form>
</table>

<br />

Number of right answers: <?php echo $_SESSION['num_right'] ?><br />
Number of wrong answers: <?php echo $_SESSION['num_wrong'] ?><br />

<br />

<a href='<?php echo $_SERVER['PHP_SELF']."?op=clear"; ?>'>Start over</a>.
Avatar billede lunddata Nybegynder
10. januar 2010 - 10:48 #1
Nærmere når jeg sætter det ind i min editor og oploader til test på min hjemmeside.
Avatar billede repox Seniormester
10. januar 2010 - 10:56 #2
Scriptet virker tilsyneladende fint - det må være noget serverside der ikke virker.
Har du et link til filen på din hjemmeside?
Avatar billede erikjacobsen Ekspert
10. januar 2010 - 11:08 #3
Ja, det virker: http://n0p.com/897832.php
Så hvad er det du gør anderledes ??
Avatar billede lunddata Nybegynder
10. januar 2010 - 11:18 #4
link: http://www.sysform.dk/slet/test.php
Lidt uvidende spørger jeg om scriptets indsættelse mellem <head> og </head> ... <body> og </body>. Måske er det her det går galt.
Avatar billede erikjacobsen Ekspert
10. januar 2010 - 11:30 #5
Det virker da fint på dit link.
Avatar billede repox Seniormester
10. januar 2010 - 11:32 #6
Det er dine sessions der ikke virker som de skal; jeg får ikke sat nogen session cookie på din side.
Men det er jo ikke nemt at afgøre om det er din kode der fejler, når den kode du viser her i tråden ikke er identisk med den kode du bruger.
Avatar billede lunddata Nybegynder
10. januar 2010 - 11:40 #7
Jeg prøver lige sådan. Dette er hvad der er sat ind på mit link:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<!-- Minus AutoDato -->
    <title>[Ingen titel]</title>
<?php
/**
* @author Paul Meagher
* @updated May 18, 2005
*/
session_name("practice");
session_start();

$min_rand = 0;
$max_rand = 18;

$first_number  = rand($min_rand, $max_rand);
$second_number = rand($min_rand, $max_rand);

if ($_GET['op'] == "clear") $_SESSION = array();

if (!isset($_SESSION['num_right'])) $_SESSION['num_right'] = 0;
if (!isset($_SESSION['num_wrong'])) $_SESSION['num_wrong'] = 0;
if (!isset($_SESSION['num_probs'])) $_SESSION['num_probs'] = 0;

if ($_POST['form_submitted'] == "yes") {
  $fn = $_POST['fn'];
  $sn = $_POST['sn'];
  $ca = $fn + $sn;
  $_SESSION['num_probs']++;     
  $np = $_SESSION['num_probs']; 
  $sa = $_POST['submitted_answer'];   
  if ($ca == $sa) {   
    echo "<p>Hooray, you answered problem # $np correctly: $fn + $sn = $ca</p>";
    $_SESSION['num_right']++;
  } else {
    echo "<p><font color='red'><b>Darn, you answered problem # $np incorrectly: $fn + $sn = $ca, <i>not</i> $sa</b></font> </p>";
    $_SESSION['num_wrong']++;   
  }
}
?>


<meta name="Generator" content="Stone's WebWriter 4">
</head>
<body>


<table>
  <form method='post' action='<?php echo $_SERVER['PHP_SELF'] ?>'>
  <input type='hidden' name='form_submitted' value='yes'> 
  <input type='hidden' name='fn' value='<?php echo $first_number ?>'>
  <input type='hidden' name='sn' value='<?php echo $second_number ?>'> 
  <tr>
    <td><?php echo $first_number ?></td>
    <td> + </td>       
    <td><?php echo $second_number ?></td>   
    <td> = </td>           
    <td><input type='text' name='submitted_answer' value='' size='2'></td>
    <td><input type='submit' value='Check Answer'></td>   
  </tr>
  </form>
</table>

<br />

Number of right answers: <?php echo $_SESSION['num_right'] ?><br />
Number of wrong answers: <?php echo $_SESSION['num_wrong'] ?><br />

<br />

<a href='<?php echo $_SERVER['PHP_SELF']."?op=clear"; ?>'>Start over</a>



</body>
</html>
Avatar billede repox Seniormester
10. januar 2010 - 11:48 #8
Problemet er nok at du har output før du starter din session; det må du ikke....
Det skal se sådan ud:


<?php
session_name("practice");
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<!-- Minus AutoDato -->
    <title>[Ingen titel]</title>
<?php
$min_rand = 0;
$max_rand = 18;

$first_number  = rand($min_rand, $max_rand);
$second_number = rand($min_rand, $max_rand);

if ($_GET['op'] == "clear") $_SESSION = array();

if (!isset($_SESSION['num_right'])) $_SESSION['num_right'] = 0;
if (!isset($_SESSION['num_wrong'])) $_SESSION['num_wrong'] = 0;
if (!isset($_SESSION['num_probs'])) $_SESSION['num_probs'] = 0;

if ($_POST['form_submitted'] == "yes") {
  $fn = $_POST['fn'];
  $sn = $_POST['sn'];
  $ca = $fn + $sn;
  $_SESSION['num_probs']++;
  $np = $_SESSION['num_probs'];
  $sa = $_POST['submitted_answer'];
  if ($ca == $sa) {
    echo "<p>Hooray, you answered problem # $np correctly: $fn + $sn = $ca</p>";
    $_SESSION['num_right']++;
  } else {
    echo "<p><font color='red'><b>Darn, you answered problem # $np incorrectly: $fn + $sn = $ca, <i>not</i> $sa</b></font> </p>";
    $_SESSION['num_wrong']++;
  }
}
?>


<meta name="Generator" content="Stone's WebWriter 4">
</head>
<body>


<table>
  <form method='post' action='<?php echo $_SERVER['PHP_SELF'] ?>'>
  <input type='hidden' name='form_submitted' value='yes'>
  <input type='hidden' name='fn' value='<?php echo $first_number ?>'>
  <input type='hidden' name='sn' value='<?php echo $second_number ?>'>
  <tr>
    <td><?php echo $first_number ?></td>
    <td> + </td>
    <td><?php echo $second_number ?></td>
    <td> = </td>
    <td><input type='text' name='submitted_answer' value='' size='2'></td>
    <td><input type='submit' value='Check Answer'></td>
  </tr>
  </form>
</table>

<br />

Number of right answers: <?php echo $_SESSION['num_right'] ?><br />
Number of wrong answers: <?php echo $_SESSION['num_wrong'] ?><br />

<br />

<a href='<?php echo $_SERVER['PHP_SELF']."?op=clear"; ?>'>Start over</a>



</body>
</html>

Avatar billede lunddata Nybegynder
10. januar 2010 - 11:56 #9
Mange tak! Ja, det virker fint nu. Der er meget at lære, men php er da genialt når noget skal være interaktivt.
Et svar....
Avatar billede repox Seniormester
10. januar 2010 - 12:10 #10
det fik du her...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester