<?php
// Hier gebe ich einfach ein paar Tipps vor um das Skript kurz zu testen
$_POST["cids"] =array("1602", "1595", "1596", "1598", "1600", "1603", "1597", "1601", "1599", 1799, 1899, 1999);
$_POST["tip_home_1602"] ="2";
$_POST["tip_away_1602"] ="1";
$_POST["tip_home_1595"] ="2";
$_POST["tip_away_1595"] ="1";
$_POST["tip_home_1596"] ="1";
$_POST["tip_away_1596"] ="2";
$_POST["tip_home_1598"] ="1";
$_POST["tip_away_1598"] ="2";
$_POST["tip_home_1600"] ="1";
$_POST["tip_away_1600"] ="0";
$_POST["tip_home_1603"] ="2";
$_POST["tip_away_1603"] ="1";
$_POST["tip_home_1597"] ="3";
$_POST["tip_away_1597"] ="0";
$_POST["tip_home_1601"] ="0";
$_POST["tip_away_1601"] ="3";
$_POST["tip_home_1599"] ="3";
$_POST["tip_away_1599"] ="3";
$_POST["tip_home_1799"] ="3";
$_POST["tip_away_1799"] ="0";
$_POST["tip_home_1899"] ="3";
$_POST["tip_away_1899"] ="0";
$_POST["tip_home_1999"] ="3";
$_POST["tip_away_1999"] ="0";
function checkTipVerstoss()
{
// Hier sind die Vorgaben abgelegt, die nachher überprüft werden sollen. 2:1 darf max. 3 mal, 3:1 max 3 mal. etc auftreten
$vorgabe = array(
"2:1" => 3,
"3:1" => 3,
"4:1" => 3,
"1:1" => 3,
"3:0" => 3,
);
$tips = array();
// In dem Array $_POST["cids"] stecken alle IDs der getippten Spiele
// Einmal array_unique drüberlaufen lassen, damit keine ID doppelt vorkommt und Tipps doppelt gezählt würden
$_POST["cids"] = array_unique($_POST["cids"]);
foreach ($_POST["cids"] as $spielId)
{
// Hier die Werte einlesen
$tipHome = intval($_POST["tip_home_$spielId"]);
$tipAway = intval($_POST["tip_away_$spielId"]);
// Checken, ob es sich bei den beiden Eingaben überhaupt um Zahlen handelt
if ($tipHome >= 0 && $tipAway >= 0)
{
// Jetzt den jeweiligen Tipp in die Sammlung hinzufügen
$tip = $tipHome.":".$tipAway;
// Wenn der Tipp noch nicht existiert, das Feld anlegen und auf 1 setzen.
if (!isset($tips[$tip]))
{
$tips[$tip] = 1;
}
else
{
// Wenn der Tipp schon existiert, den Counter um 1 hochsetzen.
$tips[$tip]++;
}
// Die folgenden Zeilen sorgen dafür, dass z.b. ein 1:2 genauso zählt wie 2:1. Wenn nicht gewünscht löschen.
$tip = $tipAway.":".$tipHome;
if (!isset($tips[$tip]))
{
$tips[$tip] = 1;
}
else
{
$tips[$tip]++;
}
}
}
// Nun alle Vorgaben durchgehen und dann im $tips Array nachsehen, ob und wie viel die einzelnen Tipps getippt wurden. Wenn > max wird eine Ausgabe ausgegeben und die Fehlervariable auf "wahr" gesetzt.
$keinFehler = true;
foreach ($vorgabe as $key => $indi)
{
if (isset($tips[$key]))
{
$anz = $tips[$key];
if ($anz > $indi)
{
// Fehler ausgabe oder nicht?
echo "Es wurde zu oft $key getippt! Erlaubt sind maximal $indi Tipps, getippt wurden $anz mal!<br />";
$keinFehler = false;
}
}
}
// Funktion meldet zurück ob wo zu oft getippt wurde oder nicht.
return $keinFehler;
}
?>
<?php
if (checkTipVerstoss())
{
// Ablegen in Datenbank etc.
}
else
{
echo "Bitte korrigieren Sie Ihre Tipps anhand obiger Fehlermeldungen.<br />Ihr Tipp wurde nicht gespeichert!<br />";
}