Kom er niet uit met cijfers berekenen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Kirsten J

Kirsten J

12/06/2019 16:21:00
Quote Anchor link
Hi, ik ben nieuw op dit forum :)

Ik ben bezig met PHP opdracht alleen kom ik er niet helemaal uit. Kunnen jullie mij daarbij misschien helpen?

//invoer

score: moet numerieke waarden bevatten
niveau verplicht veld

//uitvoer
lijst met namen en cijfers op alfabetische volgorde

formule cijfer = score / maximum_score 8,5 + 1,,5.

bij niveau L moet er een half punt bij worden geteld, H een half eraf. Cijfer mag niet boven 10 uitkomen.

Achter het cijfer komt het woord "onvoldoende" als het cijfer onder de 6 uitkomt, het woord "goed" hoger bij een 7, de zes en de zeven krijgen "voldoende" achter het cijfer.

ik ben jullie zeer dankbaar :)

->
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<!DOCTYPE html>
<html>
<body>
<style>
  .error {color: #FF0000;}
</style>

    <?php
    $naam_fout
="";
    $naam="";

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $naam = $_POST["naam"];
    if ($naam == "") {
        $naam_fout = "Maximumscore is verplicht";
    }

    else {
    if (!preg_match("/^[a-zA-Z ]*$/",$naam)){
        $naam_fout = "Alleen letters en spaties";
      }
    }
 }

?>

  <p><span class="error">*Verplicht veld</span></p>

    <form method="post" action="">
    Maximumscore <input type="text" name="maximumscore">
        <span class="error">* <?php echo $naam_fout;?></span>
    <br>
    <br>

        <?php
$naam
= $functie ="";
$naam = $_POST{"naam"};
$score = $_POST{"score"};
?>

     </form>

    <form action="" method="post">
    Naam1: <input type="text" naam="functie">
    Score: <input type="number" naam="functie">
        <br><br>
    Naam2: <input type="text" naam="functie">
    Score: <input type="number" naam="functie">
        <br><br>
    Naam3: <input type="text" naam="functie">
    Score: <input type="number" naam="functie">
        <br><br>
    Naam4: <input type="text" naam="functie">
    Score: <input type="number" naam="functie">

        <br>
      <p>Niveau:</p>
    </form>
    <form action="" method="post">
    <input type="radio" value="L" name="L"> L
    <input type="radio" value="M" name="M"> M
    <input type="radio" value="H" name="H"> H
    <br>
    <input name="Bereken cijfer" type="submit">

        <br><br>
Gewijzigd op 12/06/2019 16:40:52 door Kirsten J
 
PHP hulp

PHP hulp

26/12/2024 11:17:09
 
- Ariën  -
Beheerder

- Ariën -

12/06/2019 16:26:51
Quote Anchor link
Dag Kirsten,

Welkom op PHPhulp.
Op dit forum zijn meerdere mensen die graag hulp zoeken. Daarom wil ik je vriendelijk vragen of je jouw bericht kan aanpassen en een duidelijke onderwerp kan invullen.

Ook hebben we opmaakcodes ([code] en [/code] om codeblokken te maken. Zie ook de opmaakcodes in de Veelgestelde Vragen.

Als je jouw bericht wilt aanpassen, erg graag. Bedankt alvast!
Gewijzigd op 12/06/2019 16:27:20 door - Ariën -
 
Kirsten J

Kirsten J

12/06/2019 16:29:10
Quote Anchor link
Beste Arien,

Ik zal het meteen doen!

Dank :)
 
Ramon van Dongen

Ramon van Dongen

12/06/2019 16:51:26
Quote Anchor link
Hallo Kirsten,

De grootste "fout" is denk ik dat je nu met 3 verschillende forms werkt. Als je op "Bereken cijfer" drukt, wordt alleen laatste form verstuurd en wordt niets met de andere 2 forms gedaan.

Daarnaast heb je in het form met de namen 8 inputvelden met dezelfde naam (waar je foutief ook naam="" ipv name="" gebruikt). Het 8ste inputveld zal dus de vorige 7 weer overschrijven.

Als ik het goed begrijp wil je als invoer dus 1 of meerdere namen in voeren en daarbij per naam een score en een niveau per naam?

Of is het niveau 1x invullen voor alle namen/personen?

Klopt dat?
Gewijzigd op 12/06/2019 16:52:37 door Ramon van Dongen
 
Kirsten J

Kirsten J

12/06/2019 16:56:14
Quote Anchor link
Beste Ramon,

Meerdere namen invoeren en daarbij de score en niveau dat klopt. Ik heb zelf dingen zitten proberen en inderdaad zie ik dat ik met teveel forms werk (haha). Alleen kom ik er gewoon niet uit...
 
Ramon van Dongen

Ramon van Dongen

12/06/2019 16:58:56
Quote Anchor link
Laten we het probleem eens uit elkaar trekken dus.

Allereerst door 1 form te maken voor de invoer.
Als we die dan gaan versturen door het klikken op de submit knop, heb je iets zinnigs om mee verder te werken voor de output.

Je hebt in je voorbeeld 4x een inputveld voor naam.
Is dat een vast aantal of kunnen het er ook 2 of 20 zijn?
 
- Ariën  -
Beheerder

- Ariën -

12/06/2019 17:02:19
Quote Anchor link
Ik raad aan om je form-sectie om te bouwen naar één form.
Dan kan je na lijn 12 met dit kijken welke data je meestuurt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo "<pre>".print_r($_POST,true)."</pre>";

Uiteraard dient deze functie enkel om te testen, zodat je jouw waardes op de correcte manier kan afhandelen.
 
Kirsten J

Kirsten J

12/06/2019 17:05:15
Quote Anchor link
Het is een vast aantal van 4. Het is mij wel gelukt om voorbeeld te maken, maar dus niet als werkend php.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<!doctype html>
<html>
    <body>
        <table border="0">
            <tr>
                <td>
                    <table>
                          <td>
                              Maximum score:
                                                            <input type="text" name="mscore">
                            </td>
                            </tr>
                            <tr>
                                <td>
                                    Naam1: <input type="text" name="naam1" required>
                                                                        score: <input type="text" name="score:"><br>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    Naam2: <input type="test" name="naam2" required>
                                                                        score: <input type="text" name="score:"><br>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    Naam3: <input type="text" name="naam3" required>
                                                                        score: <input type="text" name="score:"><br>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    Naam4: <input type="text" name="naam4" required>
                                                                        score: <input type="text" name="score:"><br>
                                </td>
                            </tr>
                                                        <td>
                                                        Niveau:
                                                        <input type="radio" name="half punt bij"
                                                        <?php if (isset($score) && $score=="L") echo "checked";?>
                                                                    value="L">L
                                                        <input type="radio" name="M"
                                                        <?php if (isset($score) && $score=="M") echo "checked";?>
                                                                    value="M">M
                                                        <input type="radio" name="half punt eraf"
                                                        <?php if (isset($score) && $score=="") echo "checked";?>
                                                                    value="H">H
                                                        </td>
                            <tr>
                                <td align="left">
                                                                    <form method="post" action="<?=$_SERVER['PHP_SELF'];?>">
                                                                        <button type="submit" value="Bereken cijfer">Bereken cijfer</button>
                                                                    </form>
                                </td>
                            </tr>
                        </form>
                    </table>
                </td>
            </tr>
        </table>
    </body>
</html>
Gewijzigd op 12/06/2019 17:05:40 door Kirsten J
 
Ramon van Dongen

Ramon van Dongen

12/06/2019 17:11:53
Quote Anchor link
Nu is een tabel niet de juiste manier om de inputvelden qua layout weer te geven op je pagina, maar dat is weer een andere discussie.

Als je het dan toch al met een tabel wilt doen, is dit dan niet makkelijker?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<table>
<tr>
  <th>Nr</th>
  <th>Naam</th>
  <th>Score</th>
  <th>Niveau</th>
</tr>
<tr>
  <td>1</td>
  <td><input type="text" name="naam[1]"></td>
  <td><input type="number" name="score[1]"></td>
  <td><select name="niveau[1]">
        <option value="L">L</option><option value="M">M</option><option value="H">H</option>
      </select></td>
</tr>
<tr>
  <td>2</td>
  <td><input type="text" name="naam[2]"></td>
  <td><input type="number" name="score[2]"></td>
  <td><select name="niveau[2]">
        <option value="L">L</option><option value="M">M</option><option value="H">H</option>
      </select></td>
</tr>
<tr>
  <td>3</td>
  <td><input type="text" name="naam[3]"></td>
  <td><input type="number" name="score[3]"></td>
  <td><select name="niveau[3]">
        <option value="L">L</option><option value="M">M</option><option value="H">H</option>
      </select></td>
</tr>
<tr>
  <td>4</td>
  <td><input type="text" name="naam[4]"></td>
  <td><input type="number" name="score[4]"></td>
  <td><select name="niveau[4]">
        <option value="L">L</option><option value="M">M</option><option value="H">H</option>
      </select></td>
</tr>
</table>


Zie ook https://jsfiddle.net/apzq36sv/
Gewijzigd op 12/06/2019 17:12:59 door Ramon van Dongen
 
- SanThe -

- SanThe -

12/06/2019 17:20:30
Quote Anchor link
Je form is nog niet correct.
https://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_submit

Je radio is ook niet correct.
https://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_radio

Maak eerst het formulier in orde.
 
Kirsten J

Kirsten J

12/06/2019 17:23:24
Quote Anchor link
Ramon van Dongen op 12/06/2019 17:11:53:
Nu is een tabel niet de juiste manier om de inputvelden qua layout weer te geven op je pagina, maar dat is weer een andere discussie.

Als je het dan toch al met een tabel wilt doen, is dit dan niet makkelijker?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<table>
<tr>
  <th>Nr</th>
  <th>Naam</th>
  <th>Score</th>
  <th>Niveau</th>
</tr>
<tr>
  <td>1</td>
  <td><input type="text" name="naam[1]"></td>
  <td><input type="number" name="score[1]"></td>
  <td><select name="niveau[1]">
        <option value="L">L</option><option value="M">M</option><option value="H">H</option>
      </select></td>
</tr>
<tr>
  <td>2</td>
  <td><input type="text" name="naam[2]"></td>
  <td><input type="number" name="score[2]"></td>
  <td><select name="niveau[2]">
        <option value="L">L</option><option value="M">M</option><option value="H">H</option>
      </select></td>
</tr>
<tr>
  <td>3</td>
  <td><input type="text" name="naam[3]"></td>
  <td><input type="number" name="score[3]"></td>
  <td><select name="niveau[3]">
        <option value="L">L</option><option value="M">M</option><option value="H">H</option>
      </select></td>
</tr>
<tr>
  <td>4</td>
  <td><input type="text" name="naam[4]"></td>
  <td><input type="number" name="score[4]"></td>
  <td><select name="niveau[4]">
        <option value="L">L</option><option value="M">M</option><option value="H">H</option>
      </select></td>
</tr>
</table>


Zie ook https://jsfiddle.net/apzq36sv/


Dat ziet er inderdaad makkelijker uit maar het moet verplicht met een "submit" en met radio circles. (ziet er heel netjes uit trouwens! haha) Als je dus op submit klikt moet de bijv. de ingevoerde info te zien zijn.




Toevoeging op 12/06/2019 17:25:56:

- SanThe - op 12/06/2019 17:20:30:
Je form is nog niet correct.
https://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_submit

Je radio is ook niet correct.
https://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_radio

Maak eerst het formulier in orde.


Ik had het even snel als HTML bestand gemaakt als voorbeeld voor het PHP. Bedankt! :-)
 
- Ariën  -
Beheerder

- Ariën -

12/06/2019 17:41:54
Quote Anchor link
Als je de waardes wilt tonen, zorg eerst maar even dat je op een rijtje hebt welke er allemaal zijn.
 
Ramon van Dongen

Ramon van Dongen

12/06/2019 17:47:32
Quote Anchor link
Quote:
Dat ziet er inderdaad makkelijker uit maar het moet verplicht met een "submit" en met radio circles.
Logisch dat er nog een submit bij moet. Radio input moet je dus aanpassen.

Zoiets:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php

if($_SERVER['REQUEST_METHOD'] == "POST"){

echo '<pre>'.print_r($_POST,true).'</pre>';

}


?>

<!DOCTYPE html>
<html>
<body>
<form method="post">
<table>
<tr>
  <th>Nr</th>
  <th>Naam</th>
  <th>Score</th>
  <th>Niveau</th>
</tr>
<tr>
  <td>1</td>
  <td><input type="text" name="naam[1]"></td>
  <td><input type="number" name="score[1]"></td>
  <td>
     <input type="radio" name="niveau[1]" value="L">
     <input type="radio" name="niveau[1]" value="M">
     <input type="radio" name="niveau[1]" value="H">
  </td>
</tr>
<tr>
  <td>2</td>
  <td><input type="text" name="naam[2]"></td>
  <td><input type="number" name="score[2]"></td>
  <td>
     <input type="radio" name="niveau[2]" value="L">
     <input type="radio" name="niveau[2]" value="M">
     <input type="radio" name="niveau[2]" value="H">
  </td>
</tr>
<tr>
  <td>3</td>
  <td><input type="text" name="naam[3]"></td>
  <td><input type="number" name="score[3]"></td>
  <td>
     <input type="radio" name="niveau[3]" value="L">
     <input type="radio" name="niveau[3]" value="M">
     <input type="radio" name="niveau[3]" value="H">
  </td>
</tr>
<tr>
  <td>4</td>
  <td><input type="text" name="naam[4]"></td>
  <td><input type="number" name="score[4]"></td>
  <td>
     <input type="radio" name="niveau[4]" value="L">
     <input type="radio" name="niveau[4]" value="M">
     <input type="radio" name="niveau[4]" value="H">
  </td>
</tr>
</table>
<input type="submit" value="Klikkie klikkie">
</form>
</body>
</html>


Moet je bij de radio alleen de L, M en H er tekstueel nog bij zetten. Maar daar kom je vast zelf wel aan uit.
Gewijzigd op 12/06/2019 18:17:52 door - Ariën -
 
Kirsten J

Kirsten J

12/06/2019 18:16:56
Quote Anchor link
Bedankt! Ik zal het proberen in elkaar te zetten, ik laat het je weten :)
Gewijzigd op 12/06/2019 18:17:18 door Kirsten J
 
- Ariën  -
Beheerder

- Ariën -

12/06/2019 18:26:24
Quote Anchor link
Oke, succes :-)
 
Kirsten J

Kirsten J

12/06/2019 21:03:40
Quote Anchor link
Het volgende heb ik geprobeerd alleen... komen de antwoorden niet te zien...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<!DOCTYPE html>
<html>
<body>
<style>
  .error {color: #FF0000;}
</style>

<?php
//Ophalen gegevens van scherm
    $naam = $score = "";
    $niveau="";
    $niveau_error="";
    $naam = $functie ="";
    $naam = $_POST["naam"];
    $score = $_POST["score"];

//Declaratie variabelen
    if (empty($_POST["niveau"])) {
        $niveau_error = "";
    }

    else {
    if (!preg_match("/^[a-zA-Z ]*$/",$naam)){
        $naam_fout = "Alleen letters en spaties";
      }
    }


//Functie
 function test_input($data) {
   $data = trim($data);
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   return $data;
 }


//Definineren Formulier
echo "Cijferlijst";

?>


  <p><span class="error">* Verplicht veld</span></p>

    Maximumscore <input type="text" name="maximumscore">
        <br><br>
    <form method="post" action="">
    Naam1: <input type="text" name="Naam1">
    Score: <input type="number" name="score1">
        <br><br>
    Naam2: <input type="text" name=""="Naam2">
    Score: <input type="number" name=""="score2">
        <br><br>
    Naam3: <input type="text" name=""="Naam3">
    Score: <input type="number" name=""="score3">
        <br><br>
    Naam4: <input type="text" name=""="Naam4">
    Score: <input type="number" name=""="score4">

        <br>
    Niveau:
    <input name="Niveau" type="radio" value="L"> L
    <input name="Niveau" type="radio" value="M"> M
    <input name="Niveau" type="radio" value="H"> H
    <span class="error">*<?php echo $niveau_error;?></span>
    <br><br>
    <input name="Bereken cijfer" type="submit">

<?php

        echo "<br><br>";
        echo "Cijfer:<br>";

$naam = array(' 1 '=> $naam, ' 2 '=> $naam, ' 3 '=> $naam, ' 4 '=> $naam);

//"$naam" wordt getoond op de website
    asort ($naam);
    foreach ($naam as $x => $x_value) {
        echo "naam: " . $x . ", score: " . $x_value;
            echo "<br>";
    }


?>

<?php
//Uitvoeren op scherm
if ($naam == "Piet" and $score == "7") {
echo "Goed";
}
elseif ($naam == "Tom") {
echo "Onvoldoende";
}
elseif ($naam == "Jan") {
 echo "Goed";
}
elseif ($naam == "Nick")
 echo "Onvoldoende";

 round($getal, 1);
   $cijfer = array(7, 5, 8, 3);
$score = array($cijfer) / ($maximum_score) * 8.5 + 1.5;
echo $cijfer;

?>


</body>
</html>
 
Ramon van Dongen

Ramon van Dongen

12/06/2019 21:33:08
Quote Anchor link
En hoe ben je tot deze bijzondere brei aan code gekomen?

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
} elseif ($naam == "Nick")
 echo "Onvoldoende";

Dus alleen omdat iemand Nick heet, heeft hij een onvoldoende? Ook onaardig ;-)

Als je mijn voorbeeld pakte, zonder iets te wijzigen, en je vulde de input velden in. Wat kwam er dan na het drukken op de submitknop op je scherm te staan?
 
Kirsten J

Kirsten J

12/06/2019 21:42:59
Quote Anchor link
Ramon van Dongen op 12/06/2019 21:33:08:
En hoe ben je tot deze bijzondere brei aan code gekomen?

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
} elseif ($naam == "Nick")
 echo "Onvoldoende";

Dus alleen omdat iemand Nick heet, heeft hij een onvoldoende? Ook onaardig ;-)

Als je mijn voorbeeld pakte, zonder iets te wijzigen, en je vulde de input velden in. Wat kwam er dan na het drukken op de submitknop op je scherm te staan?


Haha, ik heb het geprobeerd en krijg het volgende info te zien

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Array
(
    [naam] => Array
        (
            [1] => Tim
            [2] => Nick
            [3] => Johan
            [4] => Stephanie
        )

    [score] => Array
        (
            [1] => 1
            [2] => 1
            [3] => 1
            [4] => 1
        )

    [niveau] => Array
        (
            [1] => H
            [2] => M
            [3] => M
            [4] => H
        )

)
Gewijzigd op 12/06/2019 21:43:30 door Kirsten J
 
Ramon van Dongen

Ramon van Dongen

12/06/2019 21:47:57
Quote Anchor link
Dus de variabele $_POST is een array

Die bestaat op zijn beurt weer uit de volgende array's:

naam
score
niveau

Verspreid over 3 array's heb je dus alle informatie bij elkaar die je nodig hebt voor je berekening. Of eigenlijk 2, want de naam maakt voor het cijfer niet uit (hoop ik).

$_POST['score'][1] is de score van Tim (= $_POST['naam'][1])

Kun je het zo volgen wat er gebeurt in de code? (stapje voor stapje)



Toevoeging op 12/06/2019 21:51:16:

ps: ik snap alleen je 'maximum score' nog niet zo. Wat wordt hier precies mee bedoelt?
 
Kirsten J

Kirsten J

12/06/2019 22:01:17
Quote Anchor link
Haha nee, er word niemand voorgetrokken! Stap voor stap probeer ik het te begrijpen :) maximum score -> cijfer = score / maximum_score x 8,5 + 1,5
 
Ramon van Dongen

Ramon van Dongen

12/06/2019 22:05:21
Quote Anchor link
Dus als de maximum score 10 is en de ingevulde score is 7, dan is het cijfer 13,64?

Of bedoel je:

cijfer = ((score / maximum_score) * 8,5) + 1,5 waardoor het 7,45 is?
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.