Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Actualizar clasificacion BBDD con PHP

Estas en el tema de Actualizar clasificacion BBDD con PHP en el foro de PHP en Foros del Web. Buenas a todos Tengo una BBDD de una liga de tenis. Quiero buscar por cada socio todos los partidos jugados con resultado, saber si ha ...
  #1 (permalink)  
Antiguo 09/11/2015, 10:23
 
Fecha de Ingreso: noviembre-2015
Ubicación: Murcia
Mensajes: 17
Antigüedad: 8 años, 5 meses
Puntos: 0
Actualizar clasificacion BBDD con PHP

Buenas a todos

Tengo una BBDD de una liga de tenis.
Quiero buscar por cada socio todos los partidos jugados con resultado, saber si ha ganado o no y por cuanto y luego despues hacer un update para que se actualice el usuario y sus puntos, juegos y demás para todos los socios de la liga.
En definitiva, quiero que me recalcule toda la BBDD con los partidos que han jugado.

Ejemplo

1. Real Madrid 3 - 3 Barcelona
2. Real Madrid 0 - 5 Sporting
3. Barcelona 3 - 1 Sporting

Resultado

Real Madrid Ganados: 0 Empates: 1 Perdidos: 1 Puntos: 1 GF: 3 GC: 8 DG: -5
Sporting Ganados: 1 Empates: 0 Perdidos: 1 Puntos: 3 GF: 6 GC: 3 DG: 3
Barcelona Ganados: 1 Empates: 1 Perdidos: 0 Puntos: 4 GF: 6 GC: 4 DG: 2

Y despues, actualizar toda la BBDD de cada equipo.




Pego el codigo que estoy haciendo y que no me da resultado

Gracias de antemano

Código:
<?php

$host="xxxxx"; // Host name 
$username="xxxxx"; // Mysql username 
$password="xxxxx"; // Mysql password 
$db_name="xxxxx"; // Database name 
$tbl_name="xxxxx"; // Table name

if(isset($_POST['submit'])){

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("No se puede conectar al servidor"); 
mysql_select_db("$db_name")or die("No se puede conectar a la base de datos");

$sql1 = mysql_query("SELECT n_socio FROM users");
$result1 = mysql_query($sql1) or die (mysql_error());

    if (mysql_num_rows($result1) > 0) {
   
	 while ($fila = mysql_fetch_array($result1)) {

         $numerodesocio = 0;
	 $numerodesocio = $fila['n_socio'];   
         $sql2="SELECT * FROM partidos WHERE juegoslocal !=  '' AND (local = '".$numerodesocio."' OR visitante = '".$numerodesocio."')";
	 $result2=mysql_query($sql2) or die (mysql_error());
	 
	 if (mysql_num_rows($result2) > 0) {
		 
		$partidosganados = 0;
		$partidosperdidos = 0;
		$wofavor = 0;
                $wocontra = 0;
                $juegosfavor = 0;
                $juegoscontra = 0;
                $diferenciajuegos = 0;
                $puntos = 0;
		   
		while ($fila2 = mysql_fetch_array($result2)) { 

                        $local = $fila2['local'];
                        $visitante = $fila2['visitante'];

			if (($local == $numerodesocio) AND (juegoslocal == WO)){
				
				$puntos = $puntos + 3;
				$juegosfavor = $juegosfavor + 8;
				$wofavor = $wofavor + 1;
	
			}else if (($local == $numerodesocio) AND (juegosvisitante == WO)){
				$juegoscontra = $juegoscontra + 8;
				$wocontra = $wocontra + 1;
	
			}else if (($local == $numerodesocio) AND (juegoslocal > juegosvisitante)){
				$puntos = $puntos + 3;
				 $juegosfavor = $juegosfavor + juegoslocal;
				 $juegoscontra = $juegoscontra + juegosvisitante;
				$partidosganados = $partidosganados + 1;
	
			}else if (($local == $numerodesocio) AND (juegoslocal < juegosvisitante)){		
				 $puntos = $puntos + 1;
				 $juegosfavor = $juegosfavor + juegoslocal;
				 $juegoscontra = $juegoscontra + juegosvisitante;
				 $partidosperdidos = $partidosperdidos + 1;

			}else if (($visitante == $numerodesocio) AND (juegosvisitante == WO)){
				 $puntos = $puntos + 3;
				 $juegosfavor = $juegosfavor + 8;
				 $wofavor = $wofavor + 1;
		
			}else if (($visitante == $numerodesocio) AND (juegoslocal == WO)){
				 $juegoscontra = juegoscontra + 8;
				 $wocontra = $wocontra + 1;
		
			}else if (($visitante == $numerodesocio) AND (juegosvisitante > juegoslocal)){
				 $puntos = $puntos + 3;
				 $juegosfavor = $juegosfavor + juegosvisitante;
				 $juegoscontra = $juegoscontra + juegoslocal;
				 $partidosganados = $partidosganados + 1;
		
			}else if (($visitante == $numerodesocio) AND (juegosvisitante < juegoslocal)){		
				 $puntos = $puntos + 1;
				 $juegosfavor = $juegosfavor + juegosvisitante;
				 $juegoscontra = $juegoscontra + juegoslocal;
				 $partidosperdidos = $partidosperdidos + 1;
			}
		
		}
         }
       
         $diferenciajuegos = $juegosfavor - $juegoscontra; 
         
         $sql3 = " UPDATE users SET ";
         $sql3 .= " puntos = '".$puntos."',";
         $sql3 .= " juegosfavor = '".$juegosfavor."',";
         $sql3 .= " juegoscontra = '".$juegoscontra."',";
         $sql3 .= " diferenciajuegos= '".$diferenciajuegos"',";
         $sql3 .= " partidosperdidos = '".$partidosperdidos."',";
         $sql3 .= " partidosganados = '".$partidosganados."',";
         $sql3 .= " wofavor = '".$wofavor."',";
         $sql3 .= " wocontra = '".$wocontra."'";
         $sql3 .= " WHERE n_socio = '".$numerodesocio."'";
         $resultado3 = mysql_query($sql3) or die (mysql_error());

		 
	}  	
   
   }

echo " Todas las clasificaciones han sido recalculadas <br> <br> <a href='inicio.php'> Volver </a>";
mysql_close("$host", "$username", "$password");
exit;
}

?>

<form name="form1" method="post" action=" <? echo $_SERVER['PHP_SELF']; ?>">
<table width="600" border="0" cellpadding="0" cellspacing="0">
<tr>
  <td> <br>
   ¿Seguro que quiere recalcular todas las clasificaciones de la base de datos? </td>
</tr>
<tr>
  <td align="center"> <br> <input type="submit" name="submit" value="Sí">
</form>
  <form align="center" action="inicio.php">
     <input type=submit value="No">
  </form>
  </td>
</tr>
</table>

Última edición por loganaxo; 09/11/2015 a las 10:43
  #2 (permalink)  
Antiguo 09/11/2015, 17:55
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Actualizar clasificacion BBDD con PHP

Saludo
Pues revisando.

1. En el action del form, hace falta el php en el tag de abertura.
2. A la hora de consultar la tabla users, se tiene $sql1 y $result1 que están
haciendo lo mismo. Dejar $sql1 solo como un string del query.
3. En los if hay variables indefinidas (sin $),
aunque en ocasiones, php asume las variables,
pero es mejor evitar.
Igualmente, en las comparaciones, usar las comillas para WO por ej,
de lo contrario, php buscará constantes definidas con esos nombres,
aunque asuma el WO con comillas.
4. Sí por algùn motivo no hay resultados en la segunda consulta,
las variables $partidosganados, $partidosperdidos, $wofavor, $wocontra,
$juegosfavor, $juegoscontra, $diferenciajuegos y $puntos quedarían
sin definir. Mejor dejarlas antes del if que revisa sí hay resultados.
5. Se hace uso de las variables $juegoslocal y $juegosvisitante en los if,
pero no se están dando valores a las mismas, de igual manera, se valida sí son igual a WO, pero luego se valida sí entre ellas son menores o mayores,
pero entonces en que momento cambian de ser WO a ser numéricas?.
6. En el update, en diferenciajuegos falta concatenar al final con .
7. Dejar mysql_close sin parámetro alguno.

Con eso ya debe andar, ya otra cosa es la lógica que se quiera manejar.

__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 10/11/2015, 02:10
 
Fecha de Ingreso: noviembre-2015
Ubicación: Murcia
Mensajes: 17
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Actualizar clasificacion BBDD con PHP

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo
Pues revisando.

1. En el action del form, hace falta el php en el tag de abertura.
2. A la hora de consultar la tabla users, se tiene $sql1 y $result1 que están
haciendo lo mismo. Dejar $sql1 solo como un string del query.
3. En los if hay variables indefinidas (sin $),
aunque en ocasiones, php asume las variables,
pero es mejor evitar.
Igualmente, en las comparaciones, usar las comillas para WO por ej,
de lo contrario, php buscará constantes definidas con esos nombres,
aunque asuma el WO con comillas.
4. Sí por algùn motivo no hay resultados en la segunda consulta,
las variables $partidosganados, $partidosperdidos, $wofavor, $wocontra,
$juegosfavor, $juegoscontra, $diferenciajuegos y $puntos quedarían
sin definir. Mejor dejarlas antes del if que revisa sí hay resultados.
5. Se hace uso de las variables $juegoslocal y $juegosvisitante en los if,
pero no se están dando valores a las mismas, de igual manera, se valida sí son igual a WO, pero luego se valida sí entre ellas son menores o mayores,
pero entonces en que momento cambian de ser WO a ser numéricas?.
6. En el update, en diferenciajuegos falta concatenar al final con .
7. Dejar mysql_close sin parámetro alguno.

Con eso ya debe andar, ya otra cosa es la lógica que se quiera manejar.

Muchas gracias.
Estoy probando...
Podrias poner el codigo como lo dejarias tu mismo?
Gracias
  #4 (permalink)  
Antiguo 10/11/2015, 02:42
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Actualizar clasificacion BBDD con PHP

Saludo, aquí lo dejo.

Código PHP:
Ver original
  1. $host=""; // Host name
  2. $username=""; // Mysql username
  3. $password=""; // Mysql password
  4. $db_name=""; // Database name
  5.  
  6. if(isset($_POST['submit'])){
  7. // Connect to server and select databse.
  8. mysql_connect("$host", "$username", "$password")or die("No se puede conectar al servidor");
  9. mysql_select_db("$db_name")or die("No se puede conectar a la base de datos");
  10.  
  11. $sql1 = "SELECT n_socio FROM user";
  12. $result1 = mysql_query($sql1) or die (mysql_error());
  13.  
  14.     if (mysql_num_rows($result1) > 0) {
  15.    
  16.      while ($fila = mysql_fetch_array($result1)) {
  17.  
  18.          $numerodesocio = 0;
  19.      $numerodesocio = $fila['n_socio'];  
  20.          $sql2="SELECT * FROM partidos WHERE juegoslocal !=  '' AND (local = '".$numerodesocio."' OR visitante = '".$numerodesocio."')";
  21.      $result2=mysql_query($sql2) or die (mysql_error());
  22.      
  23.  
  24.      $partidosganados = 0;
  25.         $partidosperdidos = 0;
  26.         $wofavor = 0;
  27.                 $wocontra = 0;
  28.                 $juegosfavor = 0;
  29.                 $juegoscontra = 0;
  30.                 $diferenciajuegos = 0;
  31.                 $puntos = 0;
  32.  
  33.      if (mysql_num_rows($result2) > 0) {
  34.          
  35.         while ($fila2 = mysql_fetch_array($result2)) {
  36.  
  37.                         $local = $fila2['local'];
  38.                         $visitante = $fila2['visitante'];
  39.                         $juegoslocal = $fila2['juegoslocal'];
  40.                         $juegosvisitante = $fila2['juegosvisitante'];
  41.  
  42.             if (($local == $numerodesocio) AND ($juegoslocal == 'WO')){
  43.                
  44.                 $puntos = $puntos + 3;
  45.                 $juegosfavor = $juegosfavor + 8;
  46.                 $wofavor = $wofavor + 1;
  47.    
  48.             }else if (($local == $numerodesocio) AND ($juegosvisitante == 'WO')){
  49.                 $juegoscontra = $juegoscontra + 8;
  50.                 $wocontra = $wocontra + 1;
  51.    
  52.             }else if (($local == $numerodesocio) AND ($juegoslocal > $juegosvisitante)){
  53.                 $puntos = $puntos + 3;
  54.                  $juegosfavor = $juegosfavor + $juegoslocal;
  55.                  $juegoscontra = $juegoscontra + $juegosvisitante;
  56.                 $partidosganados = $partidosganados + 1;
  57.    
  58.             }else if (($local == $numerodesocio) AND ($juegoslocal < $juegosvisitante)){        
  59.                  $puntos = $puntos + 1;
  60.                  $juegosfavor = $juegosfavor + $juegoslocal;
  61.                  $juegoscontra = $juegoscontra + $juegosvisitante;
  62.                  $partidosperdidos = $partidosperdidos + 1;
  63.  
  64.             }else if (($visitante == $numerodesocio) AND ($juegosvisitante == 'WO')){
  65.                  $puntos = $puntos + 3;
  66.                  $juegosfavor = $juegosfavor + 8;
  67.                  $wofavor = $wofavor + 1;
  68.        
  69.             }else if (($visitante == $numerodesocio) AND ($juegoslocal == 'WO')){
  70.                  $juegoscontra = $juegoscontra + 8;
  71.                  $wocontra = $wocontra + 1;
  72.        
  73.             }else if (($visitante == $numerodesocio) AND ($juegosvisitante > $juegoslocal)){
  74.                  $puntos = $puntos + 3;
  75.                  $juegosfavor = $juegosfavor + $juegosvisitante;
  76.                  $juegoscontra = $juegoscontra + $juegoslocal;
  77.                  $partidosganados = $partidosganados + 1;
  78.        
  79.             }else if (($visitante == $numerodesocio) AND ($juegosvisitante < $juegoslocal)){        
  80.                  $puntos = $puntos + 1;
  81.                  $juegosfavor = $juegosfavor + $juegosvisitante;
  82.                  $juegoscontra = $juegoscontra + $juegoslocal;
  83.                  $partidosperdidos = $partidosperdidos + 1;
  84.             }
  85.        
  86.         }
  87.          }
  88.        
  89.          $diferenciajuegos = $juegosfavor - $juegoscontra;
  90.          
  91.          $sql3 = " UPDATE user SET ";
  92.          $sql3 .= " puntos = '".$puntos."',";
  93.          $sql3 .= " juegosfavor = '".$juegosfavor."',";
  94.          $sql3 .= " juegoscontra = '".$juegoscontra."',";
  95.          $sql3 .= " diferenciajuegos= '".$diferenciajuegos."',";
  96.          $sql3 .= " partidosperdidos = '".$partidosperdidos."',";
  97.          $sql3 .= " partidosganados = '".$partidosganados."',";
  98.          $sql3 .= " wofavor = '".$wofavor."',";
  99.          $sql3 .= " wocontra = '".$wocontra."'";
  100.          $sql3 .= " WHERE id = '".$numerodesocio."'";
  101.          $resultado3 = mysql_query($sql3) or die (mysql_error());
  102.  
  103.          
  104.     }      
  105.    
  106.    }
  107.  
  108. echo " Todas las clasificaciones han sido recalculadas <br> <br> <a href='inicio.php'> Volver </a>";
  109. }
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 10/11/2015, 07:53
 
Fecha de Ingreso: noviembre-2015
Ubicación: Murcia
Mensajes: 17
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Actualizar clasificacion BBDD con PHP

Enorme, funciono.
Mil gracias

Etiquetas: bbdd, mysql, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:36.