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>


cijfer = ((score / maximum_score) * 8,5) + 1,5 waardoor het 7,45 is <- correct -> afgerond
round($cijfer, 1);
-> bij l dan weer half punt erbij of H een half punt eraf. Het mag dus niet boven de 10 uitkomen

Dus feitelijk kom je op zoiets:


<?php
// alleen als de REQUEST_METHOD 'POST' is
if($_SERVER['REQUEST_METHOD'] == "POST"){

$cijfers = array(); // lege array maken

	if($_POST['maximum_score'] > 0){ // maximum score moet hoger dan 0 zijn

		// door de ingevulde scores heen lopen
		foreach($_POST['score'] AS $id => $score){
			
			if(trim($score) !== '' AND isset($_POST['niveau'][$id])){ //float($score) > 0 AND
			
				// bepalen hoeveel er extra bij moet komen
				if($_POST['niveau'][$id] == 'L'){ 		$extra = 0.5;	}
				elseif($_POST['niveau'][$id] == 'H'){ 	$extra = -0.5;	}
				else{									$extra = 0;		}
			
				// de cijfer berekening formule
				$cijfers[$id] = round(((($score/$_POST['maximum_score']) * 8.5) + 1.5 + $extra),1);
				
				// als cijfer boven de 10 uit zou komen, terug op 10 zetten
				if($cijfers[$id] > 10){
					$cijfers[$id] = 10;
				}		
			}		
		}
	}
}
?>
<!DOCTYPE html>
<html>
<body>
<form method="post">
<label for="maximum_score">Maximum score:</label>
<input type="number" id="maximum_score" name="maximum_score" <?php if(isset($_POST['maximum_score'])){ echo 'value="'.$_POST['maximum_score'].'"'; } ?>>
<table>
<tr>
  <th>Nr</th>
  <th>Naam</th>
  <th>Score</th>
  <th>Niveau</th>
  <th>Cijfer</th>
</tr>
<?php

	// aantal deelnemers 
	$aantal = 4;
	
	for($i = 1; $i <= $aantal; $i++){

		echo '<tr>
				  <td>'.$i.'</td>
				  <td><input type="text" name="naam['.$i.']" '.(isset($_POST['naam'][$i]) ? 'value="'.$_POST['naam'][$i].'"' : '').'></td>
				  <td><input type="number" name="score['.$i.']" '.(isset($_POST['score'][$i]) ? 'value="'.$_POST['score'][$i].'"' : '').'></td>
				  <td>
					 <input type="radio" name="niveau['.$i.']" value="L" '.((isset($_POST['niveau'][$i]) AND $_POST['niveau'][$i] == 'L') ? 'checked="checked"' : '').'>L 
					 <input type="radio" name="niveau['.$i.']" value="M" '.((isset($_POST['niveau'][$i]) AND $_POST['niveau'][$i] == 'M') ? 'checked="checked"' : '').'>M 
					 <input type="radio" name="niveau['.$i.']" value="H" '.((isset($_POST['niveau'][$i]) AND $_POST['niveau'][$i] == 'H') ? 'checked="checked"' : '').'>H 
				  </td>
				  <td>'.(isset($cijfers[$i]) ? $cijfers[$i] : '').'</td>
				</tr>';
	}
?>
</table>
<input type="submit" value="Klikkie klikkie">
</form>
</body>
</html> 


Phphulp lijnt het niet helemaal netjes uit. Probeer het eens uit.
Bedankt voor je hulp Ramon! Het moet hiermee wel lukken #crossfingers. Ik ben gelukkig nog wel aanwezig op het forum :)

Reageren