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

->

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


Als je de waardes wilt tonen, zorg eerst maar even dat je op een rijtje hebt welke er allemaal zijn.
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:


<?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.
Bedankt! Ik zal het proberen in elkaar te zetten, ik laat het je weten :)
Oke, succes :-)
Het volgende heb ik geprobeerd alleen... komen de antwoorden niet te zien...


<!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>
En hoe ben je tot deze bijzondere brei aan code gekomen?

} 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?
Ramon van Dongen op 12/06/2019 21:33:08

En hoe ben je tot deze bijzondere brei aan code gekomen?

} 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


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
        )

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



[size=xsmall]Toevoeging op 12/06/2019 21:51:16:[/size]

ps: ik snap alleen je 'maximum score' nog niet zo. Wat wordt hier precies mee bedoelt?
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
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?

Reageren