PHP-Code in building_superheroes/02_step/love_calculator.php

<?php
// Funktion für das Berechnen des "Liebespotentials" zweier Namen
// Dieser Code soll in eine Klasse transferiert werden
function lovecalc ($firstname, $secondname) {
	$lovename = strtolower(preg_replace("/ /","",strip_tags(trim($firstname.$secondname))));
	$alp = count_chars($lovename);
	for($i=97;$i<=122;$i++){
		if($alp[$i]!=false){
			$anz = strlen($alp[$i]);
			if($anz<2){ $calc[] = $alp[$i]; }
			else{ for($a=0;$a<$anz;$a++){ $calc[] = substr($alp[$i],$a,1); } }
		}
	}
	while (($anzletter = count($calc))>2) {
		$lettermitte = ceil($anzletter/2);
		for($i=0;$i<$lettermitte;$i++){
			// Just a little bit SHIFT :D
			$sum = array_shift($calc)+array_shift($calc);
			$anz = strlen($sum);
			if($anz<2){ $calcmore[] = $sum; }
			else{ for($a=0;$a<$anz;$a++){ $calcmore[] = substr($sum,$a,1); } }
		}
		$anzc = count($calcmore);
		for($b=0;$b<$anzc;$b++){ $calc[] = $calcmore[$b]; }
		array_splice($calcmore,0);
	}
	$lovestat = $calc[0].$calc[1];
	return $lovestat;
}

if (isset($_POST['go'])) {
	// Hier müsste man dann in der realen Welt desinfizieren...
	$name1Value = $_POST['name1'];
	$name2Value = $_POST['name2'];
	
	// Sind beide Formular-Felder ausgefüllt?
	if ($name1Value == "" || $name2Value == "") {
		// Nein: Setze Code für negatives Feedback zusammen
		$feedback = "<div class=\"feedback_negative\">";
		$feedback .= "Bitte fülle beide Namensfelder aus!";
		$feedback .= "</div>\n";
	}
	else {
		// Ja: Setze Code für positives Feedback zusammen
		$feedback = "<div class=\"feedback_positive\" style=\"font-size: 28px; line-height: 40px;\">";
		$feedback .= "Liebespotential: ";
		$feedback .= lovecalc($name1Value, $name2Value)."%";
		$feedback .= "</div>\n";
	}
}
else {
	$name1Value = "";
	$name2Value = "";
	$feedback = "<div class=\"feedback_negative\">";
	$feedback .= "Das Formular wurde noch nicht verschickt. Bitte fülle beide Felder aus und klicke den Submit-Button!";
	$feedback .= "</div>\n";
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Übung 2: Love Calculator</title>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Roboto+Condensed&family=Roboto:ital,wght@0,400;0,500;1,400&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="/css/styles.css">
    <link rel="stylesheet" href="/css/formstyles.css">
</head>
<body>
    <div id="container">
		<h1>Übung 2: Love Calculator</h1>
        <p>Ziel: Transfer des Codes einer Funktion zu einer Klasse.</p>
		<ul>
		    <li>Ausgangs-Code: Eine Funktion zur Bestimmung des &quot;Liebespotentials&quot; zweier Namen.</li>
            <li>Das &quot;Innenleben&quot; dieser Funktion musst du nicht begreifen, der Code soll 1:1 übernommen werden.</li>
		    <li>Auch das Formular mit dem @-Mechanismus soll so belassen werden, wie es ist.</li>
		    <li>Versuche vorgängig zu verstehen, wie die Daten (Namen) in die Funktion hineingelangen, wie und wann die Funktion aufgerufen wird und wie das Resultat in das Dokument ausgeben wird.</li>
		    <li>Transferiere den Code der Funktion in eine Klassen-Datei.</li>
	    </ul>

        <?=$feedback?>
        <form method="post" action="">
            <div class="form_control">
		        <label for="name1">Erster Name: </label>
		        <input type="text" name="name1" id="name1" value="<?=$name1Value?>">
            </div>
            <div class="form_control">
		        <label for="name2">Zweiter Name: </label>
		        <input type="text" name="name2" id="name2" value="<?=$name2Value?>">
            </div>
            <div class="form_control">
		        <button type="submit" name="go" class="btn btn-blue">Verschicken</button>
            </div>
	    </form>
        <p><img src="../images/love_calculator.jpg"></p>
	</div>
</body>
</html>