Foros del Web » Programando para Internet » PHP »

Problema BBDD se dobla (o triplican) queries

Estas en el tema de Problema BBDD se dobla (o triplican) queries en el foro de PHP en Foros del Web. Buenas, soy nuevo aqui en el foro y os comento mi problema. Tengo una BBDD de una liga de tenis. Hay veces que cuando el ...
  #1 (permalink)  
Antiguo 06/11/2015, 01:20
 
Fecha de Ingreso: noviembre-2015
Ubicación: Murcia
Mensajes: 17
Antigüedad: 9 años
Puntos: 0
Problema BBDD se dobla (o triplican) queries

Buenas, soy nuevo aqui en el foro y os comento mi problema.

Tengo una BBDD de una liga de tenis.
Hay veces que cuando el jugador sube el resultado a la web se duplica o incluso se triplica (no se porque motivo) de manera que uno que ha jugado un partido y ha ganado (que serian 3 puntos) sale con dos partidos ganados y 6 puntos, por eso, se hace molesto ir buscando en la BBDD todos los resultados, buscar el que esta doblado o triplicado y modificarlo "a mano".
He de decir, que raras veces pasa pero cada vez son mas y se hace muy molesto.
Necesito ayuda si alguien me puede decir porque motivo puede ser y como solucionarlo se lo agradeceria muchisimo.

Un saludo

Aqui lo dejo:

Código:
<?php

session_start();

$idpartido = $_POST["idpa"];
$_SESSION["idpart"]=$idpartido;
$j1 = $_POST["juegoslocal"];
$j2 = $_POST["juegosvisitante"];
$cont1 = "0";
$cont2 = "0";
$cont3 = "0";
$cont4 = "0";
$cont5 = "0";

//CONECTO A BBDD

$sql2="SELECT local, visitante FROM partidos WHERE id_partido = '".$_SESSION["idpart"]."'";
$result2=mysql_query($sql2) or die (mysql_error());

if (mysql_num_rows($result2) > 0) {
while ($fila = mysql_fetch_array($result2)) {
    
         $local = $fila['local'];
         $visitante = $fila['visitante'];
   }
}

$sql3="SELECT partidosganados, partidosperdidos, wofavor, wocontra, juegosfavor, juegoscontra, diferenciajuegos, puntos FROM users WHERE n_socio = '".$local."'";
$result3=mysql_query($sql3) or die (mysql_error());

if (mysql_num_rows($result3) > 0) { 
while ($fila = mysql_fetch_array($result3)) {
    
         $partidosganadoslocal = $fila['partidosganados'];
         $partidosperdidoslocal = $fila['partidosperdidos'];
         $wofavorlocal = $fila['wofavor'];
         $wocontralocal = $fila['wocontra'];
         $juegosfavorlocal = $fila['juegosfavor'];
         $juegoscontralocal = $fila['juegoscontra'];
         $diferenciajuegoslocal = $fila['diferenciajuegos'];
         $puntoslocal = $fila['puntos'];

   }
}

$sql4="SELECT partidosganados, partidosperdidos, wofavor, wocontra, juegosfavor, juegoscontra, diferenciajuegos, puntos FROM users WHERE n_socio = '".$visitante."'";
$result4=mysql_query($sql4) or die (mysql_error());

if (mysql_num_rows($result4) > 0) { 
while ($fila = mysql_fetch_array($result4)) {
    
         $partidosganadosvisitante = $fila['partidosganados'];
         $partidosperdidosvisitante = $fila['partidosperdidos'];
         $wofavorvisitante = $fila['wofavor'];
         $wocontravisitante = $fila['wocontra'];
         $juegosfavorvisitante = $fila['juegosfavor'];
         $juegoscontravisitante = $fila['juegoscontra'];
         $diferenciajuegosvisitante = $fila['diferenciajuegos'];
         $puntosvisitante = $fila['puntos'];

   }
}

 if(($_POST['tiporesultado'] == '1') AND ($cont1 == 0)){
    $cont1= $cont1 + 1;
 
  if(($j1 == NULL)||($j2 == NULL)||(($j1 != 8) AND ($j2 !=8))||(($j1 == 8) AND ($j2 == 8))){
    echo "Debe introducir el número de juegos correctamente <br> <br> <a href='post_login_mispartidos.php'> Volver </a>";
  }else{

    $sql = " UPDATE partidos SET ";
    $sql .= " juegoslocal ='".$j1."'";
    $sql .= ", juegosvisitante = '".$j2."'";
    $sql .= " WHERE id_partido = '".$_SESSION["idpart"]."'";
    $res = mysql_query($sql) or die (mysql_error());

    if (($j1 == 8) AND ($cont2 == 0)){

    $cont2= $cont2 + 1;

    $puntoslocal = $puntoslocal + 3;
    $juegosfavorlocal = $juegosfavorlocal + $j1;
    $juegoscontralocal = $juegoscontralocal + $j2;
    $diferenciajuegoslocal = $diferenciajuegoslocal + $j1 - $j2;
    $partidosganadoslocal = $partidosganadoslocal + 1;
    $puntosvisitante = $puntosvisitante + 1;
    $juegosfavorvisitante = $juegosfavorvisitante + $j2;
    $juegoscontravisitante = $juegoscontravisitante + $j1;
    $diferenciajuegosvisitante = $diferenciajuegosvisitante + $j2 - $j1;
    $partidosperdidosvisitante = $partidosperdidosvisitante + 1;

    $sql5 = " UPDATE users SET ";
    $sql5 .= " puntos = '".$puntoslocal."',";
    $sql5 .= " juegosfavor = '".$juegosfavorlocal."',";
    $sql5 .= " juegoscontra = '".$juegoscontralocal."',";
    $sql5 .= " diferenciajuegos = '".$diferenciajuegoslocal."',";
    $sql5 .= " partidosganados = '".$partidosganadoslocal."'";
    $sql5 .= " WHERE n_socio = '".$local."'";
    $res5 = mysql_query($sql5) or die (mysql_error()); 
    
    $sql6 = " UPDATE users SET ";
    $sql6 .= " puntos = '".$puntosvisitante."',";
    $sql6 .= " juegosfavor = '".$juegosfavorvisitante."',";
    $sql6 .= " juegoscontra = '".$juegoscontravisitante."',";
    $sql6 .= " diferenciajuegos= '".$diferenciajuegosvisitante."',";
    $sql6 .= " partidosperdidos = '".$partidosperdidosvisitante."'";
    $sql6 .= " WHERE n_socio = '".$visitante."'";
    $res6 = mysql_query($sql6) or die (mysql_error()); 

   }
   
   if (($j2 == 8) AND ($cont3 == 0)){

    $cont3= $cont3 + 1;

    $puntoslocal = $puntoslocal + 1;
    $juegosfavorlocal = $juegosfavorlocal + $j1;
    $juegoscontralocal = $juegoscontralocal + $j2;
    $diferenciajuegoslocal = $diferenciajuegoslocal + $j1 - $j2;
    $partidosperdidoslocal = $partidosperdidoslocal + 1;
    $puntosvisitante = $puntosvisitante + 3;
    $juegosfavorvisitante = $juegosfavorvisitante + $j2;
    $juegoscontravisitante = $juegoscontravisitante + $j1;
    $diferenciajuegosvisitante = $diferenciajuegosvisitante + $j2 - $j1;
    $partidosganadosvisitante = $partidosganadosvisitante + 1;
    
    $sql5 = " UPDATE users SET ";
    $sql5 .= " puntos = '".$puntoslocal."',";
    $sql5 .= " juegosfavor = '".$juegosfavorlocal."',";
    $sql5 .= " juegoscontra = '".$juegoscontralocal."',";
    $sql5 .= " diferenciajuegos = '".$diferenciajuegoslocal."',";
    $sql5 .= " partidosperdidos = '".$partidosperdidoslocal."'";
    $sql5 .= " WHERE n_socio = '".$local."'";
    $res5 = mysql_query($sql5) or die (mysql_error()); 
    
    $sql6 = " UPDATE users SET ";
    $sql6 .= " puntos = '".$puntosvisitante."',";
    $sql6 .= " juegosfavor = '".$juegosfavorvisitante."',";
    $sql6 .= " juegoscontra = '".$juegoscontravisitante."',";
    $sql6 .= " diferenciajuegos= '".$diferenciajuegosvisitante."',";
    $sql6 .= " partidosganados = '".$partidosganadosvisitante."'";
    $sql6 .= " WHERE n_socio = '".$visitante."'";
    $res6 = mysql_query($sql6) or die (mysql_error());  

   }
  
       echo "Resultado por juegos subido correctamente <br> <br> <a href='post_login_mispartidos.php'> Volver </a>";
   mysql_close("$host", "$username", "$password");
   break;
   exit;
  }
 }
 
 if(($_POST['tiporesultado'] == '2') AND ($cont4 == 0)){

    $cont4= $cont4 + 1;

    $sql = " UPDATE partidos SET ";
    $sql .= " juegoslocal = 'WO' ,";
    $sql .= " juegosvisitante = '0' ";
    $sql .= " WHERE id_partido = '".$_SESSION["idpart"]."'";
    $res = mysql_query($sql) or die (mysql_error()); 
    
    $puntoslocal = $puntoslocal + 3;
    $wocontravisitante = $wocontravisitante + 1;
    $wofavorlocal = $wofavorlocal + 1;
    $juegoscontravisitante = $juegoscontravisitante + 8;
    $juegosfavorlocal = $juegosfavorlocal + 8;
    $diferenciajuegosvisitante = $diferenciajuegosvisitante - 8;
    $diferenciajuegoslocal = $diferenciajuegoslocal + 8;
    
    $sql5 = " UPDATE users SET ";
    $sql5 .= " puntos = '".$puntoslocal."',";
    $sql5 .= " wofavor = '".$wofavorlocal."',";
    $sql5 .= " diferenciajuegos = '".$diferenciajuegoslocal."',";
    $sql5 .= " juegosfavor = '".$juegosfavorlocal."'";
    $sql5 .= " WHERE n_socio = '".$local."'";
    $res5 = mysql_query($sql5) or die (mysql_error()); 
    
    $sql6 = " UPDATE users SET ";
    $sql6 .= " wocontra = '".$wocontravisitante."',";
    $sql6 .= " diferenciajuegos = '".$diferenciajuegosvisitante."',";
    $sql6 .= " juegoscontra = '".$juegoscontravisitante."'";
    $sql6 .= " WHERE n_socio = '".$visitante."'";
    $res6 = mysql_query($sql6) or die (mysql_error());

      echo "Resultado por WO a favor del local subido correctamente <br> <br> <a href='post_login_mispartidos.php'> Volver </a>";
   mysql_close("$host", "$username", "$password");
   break; 
   exit;
 }

 if(($_POST['tiporesultado'] == '3') AND ($cont5 == 0)) {

    $cont5= $cont5 + 1;

    $sql = " UPDATE partidos SET ";
    $sql .= " juegoslocal = '0' ,";
    $sql .= " juegosvisitante = 'WO' ";
    $sql .= " WHERE id_partido = '".$_SESSION["idpart"]."'";
    $res = mysql_query($sql) or die (mysql_error());
    
    $puntosvisitante = $puntosvisitante + 3;
    $wocontralocal = $wocontralocal + 1;
    $wofavorvisitante = $wofavorvisitante + 1;
    $juegoscontralocal = $juegoscontralocal + 8;
    $juegosfavorvisitante = $juegosfavorvisitante + 8;
    $diferenciajuegoslocal = $diferenciajuegoslocal - 8;
    $diferenciajuegosvisitante = $diferenciajuegosvisitante + 8;
    
    $sql5 = " UPDATE users SET ";
    $sql5 .= " wocontra = '".$wocontralocal."',";
    $sql5 .= " diferenciajuegos = '".$diferenciajuegoslocal."',";
    $sql5 .= " juegoscontra = '".$juegoscontralocal."'";
    $sql5 .= " WHERE n_socio = '".$local."'";
    $res5 = mysql_query($sql5) or die (mysql_error()); 
    
    $sql6 = " UPDATE users SET ";
    $sql6 .= " puntos = '".$puntosvisitante."',";
    $sql6 .= " wofavor = '".$wofavorvisitante."',";
    $sql6 .= " diferenciajuegos = '".$diferenciajuegosvisitante."',";
    $sql6 .= " juegosfavor = '".$juegosfavorvisitante."'";
    $sql6 .= " WHERE n_socio = '".$visitante."'";
    $res6 = mysql_query($sql6) or die (mysql_error());    

      echo "Resultado por WO a favor del visitante subido correctamente <br> <br> <a href='post_login_mispartidos.php'> Volver </a>";
   mysql_close("$host", "$username", "$password");
   break; 
   exit;
 }

?>
  #2 (permalink)  
Antiguo 06/11/2015, 06:22
Avatar de gonzaherrera77  
Fecha de Ingreso: noviembre-2015
Mensajes: 60
Antigüedad: 9 años
Puntos: 7
Respuesta: Problema BBDD se dobla (o triplican) queries

Primero de todo lo que te podria recomendar es que no uses la extension MYSQL para conectarte ala base de datos por que ya esta obsoleta, si no usa la extensión MYSQLI y si es posible programación orientada a objetos.

¡Saludos!
  #3 (permalink)  
Antiguo 06/11/2015, 07:38
 
Fecha de Ingreso: noviembre-2015
Ubicación: Murcia
Mensajes: 17
Antigüedad: 9 años
Puntos: 0
Respuesta: Problema BBDD se dobla (o triplican) queries

Cita:
Iniciado por gonzaherrera77 Ver Mensaje
Primero de todo lo que te podria recomendar es que no uses la extension MYSQL para conectarte ala base de datos por que ya esta obsoleta, si no usa la extensión MYSQLI y si es posible programación orientada a objetos.

¡Saludos!
Lo sé, gracias por el consejo.
No puedo ya que tiene mucho tiempo la web
  #4 (permalink)  
Antiguo 07/11/2015, 10:21
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Problema BBDD se dobla (o triplican) queries

Saludo
Pues haría falta revisar sí ya fueron asignados los puntos
en la tabla de partidos antes de realizar updates,
con eso se debería solucionar.
__________________
"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 09/11/2015, 10:07
 
Fecha de Ingreso: noviembre-2015
Ubicación: Murcia
Mensajes: 17
Antigüedad: 9 años
Puntos: 0
Respuesta: Problema BBDD se dobla (o triplican) queries

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo
Pues haría falta revisar sí ya fueron asignados los puntos
en la tabla de partidos antes de realizar updates,
con eso se debería solucionar.
Los puntos se suman en las variables asi que no entran en la BBDD hasta que se hace el update.
La realiza una vez por lo general, pero en ocasiones, el update se duplica e incluso se triplica.
Necesito una solucion urgentemente.
Por favor, ayudenme
  #6 (permalink)  
Antiguo 09/11/2015, 14:09
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Problema BBDD se dobla (o triplican) queries

Saludo
Pues precisamente, a lo que me refería era validar
sì el proceso ya fue realizado o no antes de hacerlo.

Ej
Me imagino que WO o O en la tabla de partidos
arranca sin valor, y luego toma valor cuando acaba
la partida y se hacen estos updates, por ende, antes de
todo el proceso que ya tienes, yo harìa un select inicial
donde pregunte si estos campos ya tienen valor, si no lo tienen,
que ingrese, pero si lo tiene, que no entre más.

Prueba eso.
__________________
"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

Etiquetas: bbdd, mysql, queries, 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 17:53.