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>


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!
Beste Arien,

Ik zal het meteen doen!

Dank :)

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

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.
Het is een vast aantal van 4. Het is mij wel gelukt om voorbeeld te maken, maar dus niet als werkend php.


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


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


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




[size=xsmall]Toevoeging op 12/06/2019 17:25:56:[/size]

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

Reageren