bkpaul Posted May 16, 2008 Share Posted May 16, 2008 Hi Folks, I am a total newbie to php (at some point I will have a go at learning it) but I have a pressing problem that maybe someone could help me with please. I found a script to perform a task that I really do need automated but its output is not exactly what I need, I don't need the team names I just need the actual fixtures outputted to a mysql table, table name is fixtues and the only 2 fields are 'home' and 'away', database name is 'fsl'. Could anyone amend the script for me to: ask for the number of teams (as it already does), remove the team names bit and send the results to the database as described above. I know a fair few people will be helped by this script so you would not only be just helping me! Thanks for any assistance you can give the script is: <?php /* * This code owes an enormous debt to * http://www.barrychessclub.org.uk/berger2001.htm */ function main() { ?> <style> input, textarea { display: block; margin-bottom: 1em; } label { font-weight: bold; display: block; } </style> <h1>Fixtures Generator</h1> <p>This page is part of <a href="http://bluebones.net/2005/05/league-fixtures-generator/">bluebones.net</a>.</p> <?php // Find out how many teams we want fixtures for. if (! isset($_GET['teams']) && ! isset($_GET['names'])) { print get_form(); } else { # XXX check for int print show_fixtures(isset($_GET['teams']) ? nums(intval($_GET['teams'])) : explode("\n", trim($_GET['names']))); } } function nums($n) { $ns = array(); for ($i = 1; $i <= $n; $i++) { $ns[] = $i; } return $ns; } function show_fixtures($names) { $teams = sizeof($names); print "<p>Fixtures for $teams teams.</p>"; // If odd number of teams add a "ghost". $ghost = false; if ($teams % 2 == 1) { $teams++; $ghost = true; } // Generate the fixtures using the cyclic algorithm. $totalRounds = $teams - 1; $matchesPerRound = $teams / 2; $rounds = array(); for ($i = 0; $i < $totalRounds; $i++) { $rounds[$i] = array(); } for ($round = 0; $round < $totalRounds; $round++) { for ($match = 0; $match < $matchesPerRound; $match++) { $home = ($round + $match) % ($teams - 1); $away = ($teams - 1 - $match + $round) % ($teams - 1); // Last team stays in the same place while the others // rotate around it. if ($match == 0) { $away = $teams - 1; } $rounds[$round][$match] = team_name($home + 1, $names) . " , " . team_name($away + 1, $names); } } // Interleave so that home and away games are fairly evenly dispersed. $interleaved = array(); for ($i = 0; $i < $totalRounds; $i++) { $interleaved[$i] = array(); } $evn = 0; $odd = ($teams / 2); for ($i = 0; $i < sizeof($rounds); $i++) { if ($i % 2 == 0) { $interleaved[$i] = $rounds[$evn++]; } else { $interleaved[$i] = $rounds[$odd++]; } } $rounds = $interleaved; // Last team can't be away for every game so flip them // to home on odd rounds. for ($round = 0; $round < sizeof($rounds); $round++) { if ($round % 2 == 1) { $rounds[$round][0] = flip($rounds[$round][0]); } } // Display the fixtures for ($i = 0; $i < sizeof($rounds); $i++) { print "<p>Round " . ($i + 1) . "</p>\n"; foreach ($rounds[$i] as $r) { print $r . "<br />"; } print "<br />"; } print "<p>Second half is mirror of first half</p>"; $round_counter = sizeof($rounds) + 1; for ($i = sizeof($rounds) - 1; $i >= 0; $i--) { print "<p>Round " . $round_counter . "</p>\n"; $round_counter += 1; foreach ($rounds[$i] as $r) { print flip($r) . "<br />"; } print "<br />"; } print "<br />"; if ($ghost) { print "Matches against team " . $teams . " are byes."; } } function flip($match) { $components = split(' , ', $match); return $components[1] . " , " . $components[0]; } function team_name($num, $names) { $i = $num - 1; if (sizeof($names) > $i && strlen(trim($names[$i])) > 0) { return trim($names[$i]); } else { return $num; } } function get_form() { $s = ''; $s = '<p>Enter number of teams OR team names</p>' . "\n"; $s .= '<form action="' . $_SERVER['SCRIPT_NAME'] . '">' . "\n"; $s .= '<label for="teams">Number of Teams</label><input type="text" name="teams" />' . "\n"; $s .= '<input type="submit" value="Generate Fixtures" />' . "\n"; $s .= '</form>' . "\n"; $s .= '<form action="' . $_SERVER['SCRIPT_NAME'] . '">' . "\n"; $s .= '<div><strong>OR</strong></div>' . "\n"; $s .= '<label for="names">Names of Teams (one per line)</label>' . '<textarea name="names" rows="8" cols="40"></textarea>' . "\n"; $s .= '<input type="submit" value="Generate Fixtures" />' . "\n"; $s .= "</form>\n"; return $s; } main(); ?> Link to comment https://forums.phpfreaks.com/topic/105894-help-needed-with-fixture-generator-script/ Share on other sites More sharing options...
bkpaul Posted May 16, 2008 Author Share Posted May 16, 2008 Anyone, help would be greatly appreciated! Thanks Link to comment https://forums.phpfreaks.com/topic/105894-help-needed-with-fixture-generator-script/#findComment-543226 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.