Avatar billede lunddata Nybegynder
10. januar 2010 - 22:35 Der er 7 kommentarer og
1 løsning

Variable i php

Stadigvæk meget ny i php.
I fortsættelse eller tillæg til spm.
http://www.eksperten.dk/spm/897832#reply_7521376
er jeg meget interesseret i at vide hvordan inputfelter for min og max værdier til rand af værdier vil se ud. Altså der ønskes  et felt til input af mindsteværdi og et felt til størsteværdi således at talområdet for generering af tal kan styres.
Avatar billede j-e Nybegynder
10. januar 2010 - 23:11 #1
Mener du sådan her.

<form action="#" method="post">
    Min: <input type="text" name="min">
    Max: <input type="text" name="max">
<input type="submit" value="Angiv">


<?php
$rand = rand($_POST['min'],$_POST['max']);
echo $rand;
?>
Avatar billede lunddata Nybegynder
11. januar 2010 - 17:43 #2
Jeg har prøvet med nedenstående, men har problemer med at indtastet min og max kun virker 1 gang og skal indtastes for hver opgave. Meningen var at min og max kun skulle indtastes 1 gang og derefter skulle der efter hver "Check answer" automatisk genereres ny opgave.
Forøvrigt startes der med hver gang (1.gang) man åbner siden med opgaven 0 + 0. Der skulle gerne først startes med opgavegenerering når min og max værdierne er angivet.

<?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


$first_number = rand($_POST['min'],$_POST['max']);
echo $rand;
$second_number = rand($_POST['min2'],$_POST['max2']);
echo $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 action="#" method="post">
   
<table border="0">
<tr>
    <td>1. ciffer min: <input type="text" name="min"></td>
    <td>1. ciffer max: <input type="text" name="max"></td>
</tr>
<tr>
    <td>2. ciffer min: <input type="text" name="min2"></td>
    <td>2. ciffer max: <input type="text" name="max2"></td>
</tr>
</table>
   
<br>

<input type="submit" value="Start">


<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 enhydralutris Nybegynder
11. januar 2010 - 18:40 #3
For eksempel:

---index.php---

<?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


$first_number = rand($_POST['min'],$_POST['max']);
echo $rand;
$second_number = rand($_POST['min2'],$_POST['max2']);
echo $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>
<?php
if (!isset($_SESSION['started']))
{
  include('minmax.php');
  $_SESSION['started'] = 1;
}


<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>


---minmax.php---
<table>
<form action="#" method="post">
   
<table border="0">
<tr>
    <td>1. ciffer min: <input type="text" name="min"></td>
    <td>1. ciffer max: <input type="text" name="max"></td>
</tr>
<tr>
    <td>2. ciffer min: <input type="text" name="min2"></td>
    <td>2. ciffer max: <input type="text" name="max2"></td>
</tr>
</table>
   
<br>

<input type="submit" value="Start">


hmmm... bare et foreslag :P Jeg håber du forstod hvor jeg ville hen med det ;D
Avatar billede enhydralutris Nybegynder
11. januar 2010 - 18:47 #4
hehe læste lige dit indlæg igennem igen og så at det ikke var det her du spurgte om (stupid me :P)

men hvis du prøver at sætte en if/else til at tjekke om du er startet (så kan den jo tjekke om den skal vise minmax, eller opgaven...)

og hvis du sætter $_POST['min'] og max ind i en $_SESSION... så vil den huske dine tal hele sessionen =)
Avatar billede lunddata Nybegynder
11. januar 2010 - 19:44 #5
Ikke forstået
Avatar billede lunddata Nybegynder
14. januar 2010 - 22:42 #6
Som jeg startede med i det oprindelige spørgsmål var ønsket at jeg kunne styre generering af tal i talområder. Dette kan jeg ikke helt med ovenstående forslag, bortset fra svar fra j-e, men min og max værdier skal skrives ved hver ny opgave. Er der slet ikke løsninger/forslag på dette? Ved godt at enhydralutris er fremkommet med noget, men jeg kan ligesom ikke komme videre...
Avatar billede j-e Nybegynder
20. februar 2010 - 19:58 #7
Jeg er ikke helt med på hvad du ønsker. Hvis du vil have at man kun indtaster min og max en gang så kan du gøre dette.

<?php
session_start();
$_SESSION['min'] = $_POST['min'];
$_SESSION['max'] = $_POST['max'];

if (isset($_SESSION['min']) && isset($_SESSION['max']))
{
$rand = rand($_SESSION['min'],$_SESSION['max']);
echo $rand;
}
else
{
?>
<form action="#" method="post">
    Min: <input type="text" name="min">
    Max: <input type="text" name="max">
<input name="submin" type="submit" value="Angiv">
<?php
}
?>

Så kan du bare køre rand på en anden siden med de min og max som er angivet sådan her.
<?php
session_start();
$rand = rand($_SESSION['min'],$_SESSION['max']);
echo $rand;
?>
Avatar billede j-e Nybegynder
20. februar 2010 - 20:45 #8
[code]1[/code]
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

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