Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/08/2013, 08:16
dankko
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Insertar datos uno por uno en tabla MYSQL

Lo que hago es pasarle los IDs de cada equipo para generar el partido, estos los saco a través de una consulta indicándole antes de que campeonato se trata. No lo puse entero por simplificar el trabajo y no tener que explicar todo, pudiendolo explicar de manera errónea y que no se me entendiera.

Vamos a probar así a ver si se entiende mejor:

Código PHP:
Ver original
  1. <?php
  2.         /*
  3.          * This code owes an enormous debt to
  4.          * http://www.barrychessclub.org.uk/berger2001.htm
  5.          */
  6.          
  7.         function main() {
  8.             ?>
  9.             <style>
  10.             input, textarea { display: block; margin-bottom: 1em; }
  11.             label { font-weight: bold; display: block; }
  12.             </style>
  13.             <h1>Fixtures Generator</h1>
  14.             <p>This page is part of <a
  15.             href="http://bluebones.net/2005/05/league-fixtures-generator/">bluebones.net</a>.</p>
  16.             <?php
  17.             // Find out how many teams we want fixtures for.
  18.             if (! isset($_GET['teams']) && ! isset($_GET['names'])) {
  19.                 print get_form();
  20.             } else {
  21.                 # XXX check for int
  22.                print show_fixtures(isset($_GET['teams']) ?  nums(intval($_GET['teams'])) : explode("\n", trim($_GET['names'])));
  23.             }
  24.         }
  25.          
  26.         function nums($n) {
  27.             $ns = array();
  28.             for ($i = 1; $i <= $n; $i++) {
  29.                 $ns[] = $i;
  30.             }
  31.             return $ns;
  32.         }
  33.          
  34.         function show_fixtures($names) {
  35.             $teams = sizeof($names);
  36.          
  37.             print "<p>Jornadas para $teams equipos.</p>";
  38.          
  39.             // If odd number of teams add a "ghost".
  40.             $ghost = false;
  41.             if ($teams % 2 == 1) {
  42.                 $teams++;
  43.                 $ghost = true;
  44.             }
  45.            
  46.             // Generate the fixtures using the cyclic algorithm.
  47.             $totalRounds = $teams - 1;
  48.             $matchesPerRound = $teams / 2;
  49.             $rounds = array();
  50.             for ($i = 0; $i < $totalRounds; $i++) {
  51.                 $rounds[$i] = array();
  52.             }
  53.            
  54.             for ($round = 0; $round < $totalRounds; $round++) {
  55.                 for ($match = 0; $match < $matchesPerRound; $match++) {
  56.                     $home = ($round + $match) % ($teams - 1);
  57.                     $away = ($teams - 1 - $match + $round) % ($teams - 1);
  58.                     // Last team stays in the same place while the others
  59.                     // rotate around it.
  60.                     if ($match == 0) {
  61.                         $away = $teams - 1;
  62.                     }
  63.                     $rounds[$round][$match] = team_name($home + 1, $names)
  64.                         . " v " . team_name($away + 1, $names);
  65.                 }
  66.             }
  67.          
  68.             // Interleave so that home and away games are fairly evenly dispersed.
  69.             $interleaved = array();
  70.             for ($i = 0; $i < $totalRounds; $i++) {
  71.                 $interleaved[$i] = array();
  72.             }
  73.            
  74.             $evn = 0;
  75.             $odd = ($teams / 2);
  76.             for ($i = 0; $i < sizeof($rounds); $i++) {
  77.                 if ($i % 2 == 0) {
  78.                     $interleaved[$i] = $rounds[$evn++];
  79.                 } else {
  80.                     $interleaved[$i] = $rounds[$odd++];
  81.                 }
  82.             }
  83.          
  84.             $rounds = $interleaved;
  85.          
  86.             // Last team can't be away for every game so flip them
  87.             // to home on odd rounds.
  88.             for ($round = 0; $round < sizeof($rounds); $round++) {
  89.                 if ($round % 2 == 1) {
  90.                     $rounds[$round][0] = flip($rounds[$round][0]);
  91.                 }
  92.             }
  93.            
  94.             // Display the fixtures        
  95.             for ($i = 0; $i < sizeof($rounds); $i++) {
  96.                 print "<p>Jornada " . ($i + 1) . "</p>\n";
  97.                 foreach ($rounds[$i] as $r) {
  98.                     print $r . "<br />";
  99.                 }
  100.                 print "<br />";
  101.             }
  102.             print "<p>Second half is mirror of first half</p>";
  103.             $round_counter = sizeof($rounds) + 1;
  104.             for ($i = sizeof($rounds) - 1; $i >= 0; $i--) {
  105.                 print "<p>Round " . $round_counter . "</p>\n";
  106.                 $round_counter += 1;
  107.                 foreach ($rounds[$i] as $r) {
  108.                     print flip($r) . "<br />";
  109.                 }
  110.                 print "<br />";
  111.             }
  112.             print "<br />";
  113.          
  114.             if ($ghost) {
  115.                 print "Matches against team " . $teams . " are byes.";
  116.             }
  117.         }
  118.          
  119.         function flip($match) {
  120.             $components = explode(' v ', $match);
  121.             return $components[1] . " v " . $components[0];
  122.         }
  123.          
  124.         function team_name($num, $names) {
  125.             $i = $num - 1;
  126.             if (sizeof($names) > $i && strlen(trim($names[$i])) > 0) {
  127.                 return trim($names[$i]);
  128.             } else {
  129.                 return $num;
  130.             }
  131.         }
  132.          
  133.         function get_form() {
  134.             $s = '';
  135.          
  136.             $s .= '<form action="' . $_SERVER['SCRIPT_NAME'] . '">' . "\n";
  137.             $s .= '<label for="names">Introducir el ID de los equipos participantes (uno por linea)</label>'
  138.                 . '<textarea name="names" rows="8" cols="40">
  139.       FC Barcelona
  140.       Real Madrid
  141.       Valencia CF
  142.       Sevilla
  143.       Osasuna
  144.       Málaga
  145.       Celta
  146.       Villarreal
  147.       Granada
  148.       Atlético de Madrid
  149.       Getafe
  150.       Althetic Club
  151.               </textarea>' . "\n";
  152.             $s .= '<input type="submit" value="Generate Fixtures" />' . "\n";
  153.             $s .= "</form>\n";
  154.             return $s;
  155.         }
  156.          
  157.         main();
  158.      
  159.     $ssql ="insert  into matches (round,home,away)  values ('" . $round. "','" . $home. "','" . $away. "')";
  160.           if (mysql_query($ssql)){
  161.                 echo '<span class="label label-success">¡Partido insertado correctamente!</span>';
  162.           }else{
  163.                 echo '<span class="label label-important">¡Ha habido un error!</span>';
  164.          
  165.         ?>

Pongámos que ya generé los equipos con los que quiero que se realice el emparejamiento.

Como podría utilizar el foreach aquí? No logro entenderlo por mucho que leo, no entiendo muy bien el proceso que realiza.