Berechnung des Eintrittsalters

bhalili

Mitglied
Hallo Freunde, eine Versicherung benutz folgende Formel zur Berechnung des Eintrittsalters:
Jahr des Versicherungsbeginns - Geburtsjahr + (Faktor aus Tabelle) = Eintrittsalter

Wie bekomme ich den Faktor aus der Tabelle, wenn ich das Geburtsdatum tt.mm.jjjj und das Eintrittsdatum tt.mm.jjjj in Input-Felder eingebe und den Faktor herausfinde für die Berechnung.

Beispiel 1

Ist eine versicherte Person 15.09.1973 (Monat 09) geboren und der Versicherungsbeginn ist der 01.01.2021 (Monat 1), so berechnen wir das Eintrittsalter wie folgt:
2021-1973+(-1) = 47

Beispiel 2
Ist eine versicherte Person am 07.02.1979 (Monat 02) geboren und der Versicherungsbeginn ist der 01.11.2021, so berechnen wir das Eintrittsalter wie folgt:
2021-1979+(+1) =43

Bildschirmfoto_2020-12-02_20-30-42.png
Habe das ganze mal mit einer IF-Anweisung versucht, aber bekomme so nicht alle Variationen. Ich bin kein Programmierer und habe nur etwas experimentiert und komme nicht weiter, die Inputfelder werden später durch Selectboxen ausgetauscht. Meine Frage ist, wie bekomme ich den Faktor mit Hilfe des Geburtsmonats und dem Monat des Versicherungsbeginns?

Code:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
   <title></title>
  </head>
  <body>
    <table style="border : dotted 2px black;"
    width="400" border="0"><tr><td>


  <?php
  $datum = date("Y");


   $gebt = $_POST['gebt'] ;
   $gebm = $_POST['gebm'] ;
   $gebj = $_POST['gebj'] ;


   $eint = $_POST['eint'] ;
   $einm = $_POST['einm'] ;
   $einj = $_POST['einj'] ;



   if ($gebm == 01) {
    $faktor = 0;
} elseif ($gebm == 02) {
    $faktor = 0; 
} elseif ($gebm == 07) {
    $faktor = 0;
}

  $alter= (($datum - $gebj) + ($faktor)) ;



   echo "<b>Alter</b> = <span style=\"background-color:yellow;\">$alter</span><br>" ;

  ?>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
Geb.Tag: <input type="text" name="gebt" /><br />
Geb.Monat: <input type="text" name="gebm" /><br />
Geb.Jahr: <input type="text" name="gebj" /><br /><br><br>

Eintritt Tag: <input type="text" name="eint" /><br />
Eintritt Monat: <input type="text" name="einm" /><br />
Eintritt Jahr: <input type="text" name="einj" /><br />

<input type="Submit" value="Absenden" />
</form>

  </td>
</tr></table>
</body>
  </html>
 
Zuletzt bearbeitet:

Sempervivum

Erfahrenes Mitglied
Nein, ich denke mit ifs wird das zu kompliziert. Ich würde statt dessen ein Array anlegen, das die Tabelle abbildet, dann ist der Zugriff ein Einzeiler:
Code:
$factors = [
    [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1],
    [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
    // usw.
    [-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0],
    [-1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0]
];
 

bhalili

Mitglied
Nein, ich denke mit ifs wird das zu kompliziert. Ich würde statt dessen ein Array anlegen, das die Tabelle abbildet, dann ist der Zugriff ein Einzeiler:
Code:
$factors = [
    [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1],
    [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
    // usw.
    [-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0],
    [-1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0]
];
Hallo Sempervivum, danke für dein Beispiel. Habe das jetzt mit deiner Hilfe hinbekommen, anbei mein Code:

Code:
<!DOCTYPE html>
<html> 
<head>
    <meta charset="UTF-8">
   <title></title>
  </head>
  <body>
    <table style="border : dotted 2px black;"
    width="600" border="0"><tr><td>


  <?php
  $datum = date("Y");
 
 
   $gebt = $_POST['gebt'] ;
   $gebm = $_POST['gebm'] ;
   $gebj = $_POST['gebj'] ;
 
  
   $eint = $_POST['eint'] ;
   $einm = $_POST['einm'] ;
   $einj = $_POST['einj'] ;
  
  
   $factors = [
    [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1],
    [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [-1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [-1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [-1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0],
    [-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0],
    [-1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0]
    ];
    
  echo $factors[$gebm][$einm];
  $faktor = $factors[$gebm][$einm];
  
  $alter= (($einj - $gebj) + ($faktor)) ;
  
 
  ?>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">

<label for="gebt">Geb.Tag:</label>
  <select name="gebt" id="gebt">
    <option value="01">01</option>
    <option value="02">02</option>
    <option value="03">03</option>
    <option value="04">04</option>
  </select> .
<label for="gebm">Geb.Monat:</label>
  <select name="gebm" id="gebm">
    <option value="0">Januar</option>
    <option value="1">Februar</option>
    <option value="2">März</option>
    <option value="3">April</option>
    <option value="4">Mai</option>
    <option value="5">Juni</option>
    <option value="6">Juli</option>
    <option value="7">August</option>
    <option value="8">September</option>
    <option value="9">Oktober</option>
    <option value="10">November</option>
    <option value="11">Dezember</option>
   </select> .
<label for="gebj">Geb.Jahr:</label>
  <select name="gebj" id="gebj">
    <option value="2005">2005</option>
    <option value="2004">2004</option>
    <option value="2003">2003</option>
    <option value="2002">2002</option>
    <option value="2001">2001</option>
    <option value="2000">2000</option>
    <option value="1999">1999</option>
    <option value="1998">1998</option>
    <option value="1997">1997</option>
    <option value="1996">1996</option>
    <option value="1995">1995</option>
    <option value="1994">1994</option>
    <option value="1993">1993</option>
    <option value="1992">1992</option>
    <option value="1991">1991</option>
    <option value="1990">1990</option>
    <option value="1989">1989</option>
    <option value="1989">1989</option>
    <option value="1988">1988</option>
    <option value="1987">1987</option>
    <option value="1986">1986</option>
    <option value="1985">1985</option>
    <option value="1984">1984</option>
    <option value="1983">1983</option>
    <option value="1982">1982</option>
    <option value="1981">1981</option>
    <option value="1980">1980</option>
    <option value="1979">1979</option>
    <option value="1978">1978</option>
    <option value="1977">1977</option>
    <option value="1976">1976</option>
    <option value="1975">1975</option>
    <option value="1974">1974</option>
    <option value="1973">1973</option>
    <option value="1972">1972</option>
    <option value="1971">1971</option>
    <option value="1970">1970</option>
    <option value="1969">1969</option>
    <option value="1968">1968</option>
    <option value="1967">1967</option>
    <option value="1966">1966</option>
    <option value="1965">1965</option>
    <option value="1964">1964</option>
    <option value="1963">1963</option>
    <option value="1962">1962</option>
    <option value="1961">1961</option>
  </select><br><br>
 
  <label for="eint">Eintritt.Tag:</label>
  <select name="eint" id="eint">
    <option value="01">01</option>
  </select> .
  <label for="einm">Eintritt.Monat:</label>
  <select name="einm" id="einm">
    <option value="0">Januar</option>
    <option value="1">Februar</option>
    <option value="2">März</option>
    <option value="3">April</option>
    <option value="4">Mai</option>
    <option value="5">Juni</option>
    <option value="6">Juli</option>
    <option value="7">August</option>
    <option value="8">September</option>
    <option value="9">Oktober</option>
    <option value="10">November</option>
    <option value="11">Dezember</option>
  </select> .
 <label for="einj">Eintritt.Jahr:</label>
  <select name="einj" id="einj">
    <option value="2021">2021</option>
    
  </select>
 
 
<input type="Submit" value="Absenden" />
</form>
 
  </td>
</tr>
<tr><td><?php  ?> </td></tr>
<tr><td><?php echo "<b>Alter</b> = <span style=\"background-color:yellow;\">$alter</span><br>" ; ?> </td></tr>
</table>
</body>
  </html>