Kleinste Zahl auswerten für Statistik

sexmagic

Gesperrt
Hall Leute,

irgendwie sitze ich aufm Schlauch und darum brauche ich eure Hilfe.

Ich muss einen Golfscore Rechner erstellen, dazu habe ich fogelnde Vorgaben:

Es gibt eine Tabelle mit 4 Spalten:

Code:
Spieler 1  |  Spieler 2  |  Spieler 3  |  Spieler 4

Nun habe ich ein Formular mit 4 Eingabefeldern, bei jedem gespieltem Loch gibts einen Score, dieser wird in die Felder eingetragen.
In jeder Runde wird durch den Score der beste Schlag ermittelt, das ist die niedrigste Zahl.

Ich möchte nun die niedrigste Zahl aus den Eingabefeldern ausfindig machen und in einer Separaten Zeile in der Tabelle einen Punkt für den Besten Schlag vegeben.

Beispiel:

Hier wurden zb. 3 löcher gespielt und 2 mal hatte Spieler 1 den esten Schlag.

Team 1 führt derzeit mit 1 Punkt Vorsprung.


Code:
|            Team 1         |           Team 2          |
Spieler 1  |  Spieler 2  |  Spieler 3  |  Spieler 4  
------------------------------------------------------------------
4                6                12              3
5                7                 6               9
2                4                 3               7
------------------------------------------------------------------
2                0                0                1


Ich hoffe das war einigermassen verständlich.

Jedenfalls würde ich nun gerne mit PHP die eingegebenen Werte im Formular auswerten, jedoch weis ich nicht wie ich die eingegebenen Zahlen vergleichen soll.

Ich könnte massenhaft Ifs verwenden um jeden möglichen Fall abzudecken, aber da muss es doch auch einen einfacheren Weg geben.

Vielleicht könnte mir einer einen Tip geben wie ich das sauber lösen kann.

Vielen Dank für eure Hilfe!

-sm
 
Folgendes sollte dich der Lösung näher bringen...
PHP:
// Punkte der einzelnen Spieler
$spieler = array();

// Gespielte Löcher, vgl. deine Tabelle oben, um den Aufbau des Arrays zu verstehen
$loecher = array(array(4,6,12,3), array(5,7,6,9), array(2,4,3,7));

foreach($loecher as $loch)
{
    // Wenn der Spieler noch keine Punkte hat, setze auf 0 Punkte, damit PHP nicht meckert, wenn error_reporting auf E_ALL ist
    if(!isset($spieler[array_search(min($loch))]))
    {
        $spieler[array_search(min($loch))] = 0;
    }

    $spieler[array_search(min($loch))] += 1;
}

P.s: Das ist ungetestet, aber ich meine, dass es im Prinzip so funktioniert, wie du es dir vorstellst. Was du noch gucken musst, wenn zwei oder mehr Spieler ein Loch mit gleich vielen Schlägen absolvieren. Da weiß ich gerade nicht, wie PHP in so einem Fall "reagieren" würde. Musst du mal testen...
 
Zuletzt bearbeitet:
WOW Danke mAu, extrem schnelle Antwort, danke!

Aber da blick ich jetzt nichtmehr ganz durch.

Dann müsste ich ja in das Array beim jedem loch noch ein Array hinzufügen oder?

hm.. und wie bekomme ich die Arrays aus dem Formularfeld in das Array löcher?

Ach ne, es schaut vielversprechend aus aber ich blick nicht durch.

Also mit dem Array_search und dem min suche ich den kleinsten wert im Array, aber wie wird das dann dem jeweiligen Spieler zugeordnet weil das Spielerarray hat ja keine beziehung auf die Spielernamen.

Ich blick nicht durch.

Kannst dus mir vielleicht nochmal vereinfacht darstellen (wobei das für dich warscheinlich schon die vereinfachte Variante ist :P )

Danke jedenfalls für den Lösungsansatz.
 
Hier ist nochmal die "Komplettlösung", wie gewünscht :) Das Problem ist noch, wie man den Fall handhabt, wenn zwei oder mehr Spieler mit der gleichen Anzahl an Schlägen ein Loch abschließt. Bis jetzt wird dem Spieler, der am ersten geschlagen hat, der Punkt gut geschrieben.
PHP:
<pre>
<form action="var-test.php" method="post">
	<input type="text" name="player[1][1]" value="" /> <input type="text" name="player[1][2]" value="" /> <input type="text" name="player[1][3]" value="" />
	<input type="text" name="player[2][1]" value="" /> <input type="text" name="player[2][2]" value="" /> <input type="text" name="player[2][3]" value="" />
	<input type="text" name="player[3][1]" value="" /> <input type="text" name="player[3][2]" value="" /> <input type="text" name="player[3][3]" value="" />
	<input type="submit" name="ok" />
</form>

<?php
if(isset($_POST['ok']))
{
	// Punkte der einzelnen Spieler
	$spieler = array();
	foreach($_POST['player'] as $loch)
	{
		// Wenn der Spieler noch keine Punkte hat, setze auf 0 Punkte, damit PHP nicht meckert, wenn error_reporting auf E_ALL ist
		if(!isset($spieler['spieler' . array_search(min($loch), $loch)]))
		{
			$spieler['spieler' . array_search(min($loch), $loch)] = 0;
		}
		
		// Erhöhe Punkte für den Spieler
		$spieler['spieler' . array_search(min($loch), $loch)] += 1;
	}
	
	// Jetzt kannst du dir das Ergebnis anschauen
	print_r($spieler);
}
?>
</pre>
 
Wenn das Ganze datenbankgestützt ist, könntest du auch dem Datenbanksystem die Arbeit übernehmen lassen.
 
Leider muss ich ohne DB auskommen Gumbo.

mAu das funktioniert prächtig, vielen vielen Dank, du hast mir sehr geholfen damit!
Hab deine Hilfsbereitschaft natürlich gleich bewertet!!

Wir talken mal wieder, war nett.

Danke nochmal.

;)
 
Zurück