Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/08/2008, 09:57
Avatar de spekwhite
spekwhite
 
Fecha de Ingreso: julio-2008
Ubicación: Vitoria
Mensajes: 16
Antigüedad: 16 años, 8 meses
Puntos: 0
error de duplicado al calcular una clasificacion

Hola compañeros.

Estoy trabajando en un proyecto de calculo de una clasificacion apartir de una base de datos.

Parto de una base de datos con las siguientes tablas:

aciertos, psocios, qcorrecta y clasificacion

Tambien utlizo alguna como SOCIOS para obtener nombre del socio pero no es importante.

quisiera saber porque me crea una nueva fila cuando actualizo la tabla clasificacion. Llevo horas mirando el codigo y quiza sea por parte de alguna otra consulta realizada anteriormente para calcular puntos y aciertos etc.. os expongo el codigo para haber si podeis echarme una mano ya que esto para mi se me escapa de mi alcance y de mi tiempo... Muchas gracias de ante mano.

Código PHP:
<?PHP
include("lib/conexionUsuario.php");
include(
"lib/fclas.php");
   if (isset(
$_SESSION["usuario_valido"]))
   {
?>

<?PHP
   
//////////////////////////////////////////////////////////////////////////
   // si el formulario ha sido enviado
   //    validar formulario
   // fsi
   // si el formulario ha sido enviado y los datos son correctos
   //    procesar formulario
   // si no
   //    mostrar formulario
   // fsi
   //////////////////////////////////////////////////////////////////////////

// Obtener valores introducidos en el formulario
   
$calcular $_REQUEST['calcular'];
   
$jornada $_REQUEST['jornada'];

   if (isset(
$calcular))
   {
   
// Insertar la noticia en la Base de Datos
      
$conexion mysql_connect ($hostSQL,$usuarioSQL,$passSQL)
         or die (
"No se puede conectar con el servidor");

   
// Seleccionar base de datos
      
mysql_select_db ($nombreBD)
         or die (
"No se puede seleccionar la base de datos");

      
$instruccion "select * from psocios where jornada=$jornada order by nsocio asc";
      
$instruccion2 "select * from qcorrecta where jornada=$jornada";
     
      
$consulta mysql_query ($instruccion$conexion)
      or die (
"Fallo en la consulta");
      
$consulta2 mysql_query ($instruccion2$conexion)
      or die (
"Fallo en la consulta");
      
//obtener resultados quiniela correcta
      
$resultado2=mysql_fetch_array($consulta2);
      
//obtener numero de socios que han echo la quiniela
      
$nfilas=mysql_num_rows($consulta);
      
//formar array para quiniela correcta
      
$array2=array($resultado2['p1'],$resultado2['p2'],$resultado2['p3'],$resultado2['p4'],$resultado2['p5'],$resultado2['p6'],$resultado2['p7']);
      
//para cada socio calcular puntos e introducirlos a la clasificacion
      
     
for ($i=0;$i<$nfilas;$i++)
      {
      
//obtener resultados quiniela socio
      
$resultado=mysql_fetch_array($consulta);
      
//obtener nombre socio
    
      
$instruccion4 "select * from socios where nsocio=$resultado[nsocio]";
      
$consulta4 mysql_query ($instruccion4$conexion)
      or die (
"Fallo en la consulta");
      
$resultado4=mysql_fetch_array($consulta4);
      
//array para quiniela del socio
      
$array=array($resultado['p1'],$resultado['p2'],$resultado['p3'],$resultado['p4'],$resultado['p5'],$resultado['p6'],$resultado['p7']);
      
//calculo de aciertos de la jornada
      
$aboleto=aciertosboleto($array,$array2);
      
$alea=aciertolea($resultado['mlocal'],$resultado['mvisitante'],$resultado2['mlocal'],$resultado2['mvisitante']);
      
$instruccion3 "insert into aciertos(nsocio,jornada,aciertos,aciertolea) values ('$resultado[nsocio]','$jornada','$aboleto','$alea')";
      
$consulta3 mysql_query ($instruccion3$conexion)
      or die (
"Fallo en la consulta");
      
      
//aciertos totales (consulta aciertos que lleva)
      
$instruccion5 "select * from clasificacion where nsocio=$resultado[nsocio]";
      
$consulta5 mysql_query ($instruccion5$conexion)
      or die (
"Fallo en la consulta");
      
$resultado5=mysql_fetch_array($consulta5);
      
$aciertosleatotal=$resultado5['aleatotal']+$alea;
      
$aciertosboletototal=$resultado5['aboletototal']+$aboleto;
      
//actualizar clasificiacion
      
$instruccion6 "insert into clasificacion (nsocio,nombre,aboletototal,aleatotal) values ('$resultado[nsocio]','$resultado4[nombre]','$aciertosboletototal','$aciertosleatotal')";
      
$consulta6 mysql_query ($instruccion6$conexion)
      or die (
"Fallo en la consulta6");
      
//calcular puntos
      
$instruccion7 "select * from clasificacion where nsocio=$resultado[nsocio]";
      
$consulta7 mysql_query ($instruccion7$conexion)
      or die (
"Fallo en la consulta7");
      
$resultado7=mysql_fetch_array($consulta7);
      
      
$puntostotal$resultado7['aboletototal']+($resultado7['aleatotal']*2);
      
$instruccion8 "update clasificacion SET puntos=$puntostotal WHERE id=$resultado7[id]";
      
$consulta8 mysql_query ($instruccion8$conexion)
      or die (
"Fallo en la consulta");
      }
      
      
mysql_close ($conexion);

   
// Mostrar datos introducidos
      
print ("<H1>Gestión de quinielas</H1>\n");
      print (
"<H2>Resultado de la actualizacion de la nueva clasificacion</H2>\n");

      print (
"<P>El jornada se ha calculado correctamente:</P>\n");

      print (
"[ <A HREF='login.php'>Menú principal</A> ]</P>\n");

   }
   else
   {
?>

<H1>Gestión de quiniela</H1>

<H2>Calcular clasificacion</H2>

<FORM CLASS="borde" ACTION="calcula_clasificacion.php" NAME="calcular" METHOD="POST"
   ENCTYPE="multipart/form-data">
    
         <SELECT NAME="jornada">
                 <OPTION SELECTED></OPTION>
                 <?php for($i=1$i<27 ;$i++)
                        { 
?>
                       <OPTION value="<?php print($i);?>">Jornada&nbsp;<?php print($i);
                       }
?>
                       </OPTION>
         </SELECT>
<!-- Botón de envío -->
<P><INPUT TYPE="SUBMIT" NAME="calcular" VALUE="Calcular jornada"></P>

</FORM>

<P>NOTA: los datos marcados con (*) deben ser rellenados obligatoriamente</P>

<P>[ <A HREF='login.php'>Menú principal</A> ]</P>

<?PHP
   
}
?>

<?PHP

   
}
   else
   {
      print (
"<BR><BR>\n");
      print (
"<P ALIGN='CENTER'>Acceso no autorizado</P>\n");
      print (
"<P ALIGN='CENTER'>[ <A HREF='login.php' TARGET='_top'>Conectar</A> ]</P>\n");
   }

?>