Foros del Web » Programando para Internet » PHP »

Problemas con el UPDATE

Estas en el tema de Problemas con el UPDATE en el foro de PHP en Foros del Web. Hola tengo este código: Código PHP: <?php /**  * @author skirlappa  * @copyright 2011  */  //Conectamos con la bases de datos $connect = mysql_connect ( "localhost" , "" , "" ); $selectDb = mysql_select_db ...
  #1 (permalink)  
Antiguo 14/09/2011, 12:41
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 10 meses
Puntos: 0
Problemas con el UPDATE

Hola tengo este código:

Código PHP:
<?php
/**
 * @author skirlappa
 * @copyright 2011
 */
 //Conectamos con la bases de datos
$connect=mysql_connect("localhost","","");
$selectDb=mysql_select_db("test",$connect);
//unimos los resultados en un una variable
$par[1]=$_POST['imp1'].$_POST['imp2'];
$par[2]=$_POST['imp3'].$_POST['imp4'];
$par[3]=$_POST['imp5'].$_POST['imp6'];
$par[4]=$_POST['imp7'].$_POST['imp8'];
$par[5]=$_POST['imp9'].$_POST['imp10'];
$par[6]=$_POST['imp11'].$_POST['imp12'];
$par[7]=$_POST['imp13'].$_POST['imp14'];
$par[8]=$_POST['imp15'].$_POST['imp16'];
$par[9]=$_POST['imp17'].$_POST['imp18'];
$par[10]=$_POST['imp19'].$_POST['imp20'];

//Comprobamos que lo que se pasan sean números y no se dejan campos vacios
        
if(is_numeric($par[1]) && is_numeric($par[2]) && is_numeric($par[3]) && is_numeric($par[4]) && is_numeric($par[5]) && is_numeric($par[6]) && is_numeric($par[7]) && is_numeric($par[8]) && is_numeric($par[9]) && is_numeric($par[10]))
        {
            
//Si todos los valores son numerios hacemos la consulta
           
$query=mysql_query("SELECT * FROM resultados LEFT JOIN usuarios ON resultados.iduser=usuarios.id") or die (mysql_error());
           while(
$row=mysql_fetch_array($query))
           {
            if(
$par[1]==$row['par1'])
            {
                
$premio=1;
                
$total=$premio+$row['point'];
                echo 
$row['username']."--------------".$premio."---------".$row['point']."------------".$total;

                
$co1=mysql_query("UPDATE usuarios SET point='$total' WHERE id= ".$row['iduser']."") or die (mysql_error());
            }
            if(
$par[2]==$row['par2'])
            {
                
$premio=1;
                
$total=$premio+$row['point'];
                echo 
$row['username']."--------------".$premio."---------".$row['point']."------------".$total;
                
$co2=mysql_query("UPDATE usuarios SET point='$total' WHERE id= ".$row['iduser']."") or die (mysql_error());
            }   
            if(
$par[3]==$row['par3'])
            {
                
$premio=1;
                
$total=$premio+$row['point'];
                echo 
$row['username']."--------------".$premio."---------".$row['point']."------------".$total;

                
mysql_query("UPDATE usuarios SET point='$total' WHERE id= ".$row['iduser']."") or die (mysql_error());
            }            
            if(
$par[4]==$row['par4'])
            {
                
$premio=1;
                
$total=$premio+$row['point'];
                
mysql_query("UPDATE usuarios SET point='$total' WHERE id= ".$row['iduser']."") or die (mysql_error());
            }            
            if(
$par[5]==$row['par5'])
            {
                
$premio=1;
                
$total=$premio+$row['point'];
                
mysql_query("UPDATE usuarios SET point='$total' WHERE id= ".$row['iduser']."") or die (mysql_error());
            }            
            if(
$par[6]==$row['par6'])
            {
                
$premio=1;
                
$total=$premio+$row['point'];
                
mysql_query("UPDATE usuarios SET point='$total' WHERE id= ".$row['iduser']."") or die (mysql_error());
            }            
            if(
$par[7]==$row['par7'])
            {
                
$premio=1;
                
$total=$premio+$row['point'];
                
mysql_query("UPDATE usuarios SET point='$total' WHERE id= ".$row['iduser']."") or die (mysql_error());
            }            
            if(
$par[8]==$row['par8'])
            {
                
$premio=1;
                
$total=$premio+$row['point'];
                
mysql_query("UPDATE usuarios SET point='$total' WHERE id= ".$row['iduser']."") or die (mysql_error());
            }            
            if(
$par[9]==$row['par9'])
            {
                
$premio=1;
                
$total=$premio+$row['point'];
                
mysql_query("UPDATE usuarios SET point='$total' WHERE id= ".$row['iduser']."") or die (mysql_error());
            }            
            if(
$par[10]==$row['par10'])
            {
                
$premio=1;
                
$total=$premio+$row['point'];
                
mysql_query("UPDATE usuarios SET point='$total' WHERE id= ".$row['iduser']."") or die (mysql_error());
            }
           } 
        }
        else
        {
            
//si los valores no son numericos ERROR
            
echo "ERROR: En una de sus apuestas ha introducido un valor no numérico.";
        }
?>
La cosa es que solo me hace la suma una vez (la última) y no por cada if que sea TRUE
  #2 (permalink)  
Antiguo 14/09/2011, 13:01
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Problemas con el UPDATE

Tu codigo se simplifica asi de facil

Código PHP:
Ver original
  1. <?php
  2. /**
  3.  * @author skirlappa
  4.  * @copyright 2011
  5.  */
  6.  //Conectamos con la bases de datos
  7. $connect=mysql_connect("localhost","","");
  8. $selectDb=mysql_select_db("test",$connect);
  9. //unimos los resultados en un una variable
  10. $par[1]=$_POST['imp1'].$_POST['imp2'];
  11. $par[2]=$_POST['imp3'].$_POST['imp4'];
  12. $par[3]=$_POST['imp5'].$_POST['imp6'];
  13. $par[4]=$_POST['imp7'].$_POST['imp8'];
  14. $par[5]=$_POST['imp9'].$_POST['imp10'];
  15. $par[6]=$_POST['imp11'].$_POST['imp12'];
  16. $par[7]=$_POST['imp13'].$_POST['imp14'];
  17. $par[8]=$_POST['imp15'].$_POST['imp16'];
  18. $par[9]=$_POST['imp17'].$_POST['imp18'];
  19. $par[10]=$_POST['imp19'].$_POST['imp20'];
  20. /*
  21.  * vos cuando recibis un valor por post lo tratas como string
  22.  */
  23.  
  24. //Comprobamos que lo que se pasan sean números y no se dejan campos vacios
  25.    $query=mysql_query("SELECT * FROM resultados LEFT JOIN usuarios ON resultados.iduser=usuarios.id") or die (mysql_error());
  26.    $premio=0;
  27.    if(mysql_num_rows($query) > 0){
  28.        $premio=1; // no se por inicializas en 1
  29.        while($row=mysql_fetch_array($query))
  30.        {
  31.            for($i=1;$i<=count($par); $i++){
  32.                 if($par[$i]==$row["par$i"])
  33.                 {
  34.  
  35.                     $total= intval($premio) + intval($row['point']);
  36.                     //le agrego intval para forzarlo a numerico
  37.                     echo $row['username']."--------------".$premio."---------".$row['point']."------------".$total;
  38.  
  39.                     $co1=mysql_query("UPDATE usuarios SET point='$total' WHERE id= ".$row['iduser']."") or die (mysql_error());
  40.                 }
  41.            }
  42.        }
  43.    }
  44.    echo $premio;
  #3 (permalink)  
Antiguo 14/09/2011, 13:16
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Problemas con el UPDATE

Cita:
Iniciado por Patriarka Ver Mensaje
Tu codigo se simplifica asi de facil

Código PHP:
Ver original
  1. <?php
  2. /**
  3.  * @author skirlappa
  4.  * @copyright 2011
  5.  */
  6.  //Conectamos con la bases de datos
  7. $connect=mysql_connect("localhost","","");
  8. $selectDb=mysql_select_db("test",$connect);
  9. //unimos los resultados en un una variable
  10. $par[1]=$_POST['imp1'].$_POST['imp2'];
  11. $par[2]=$_POST['imp3'].$_POST['imp4'];
  12. $par[3]=$_POST['imp5'].$_POST['imp6'];
  13. $par[4]=$_POST['imp7'].$_POST['imp8'];
  14. $par[5]=$_POST['imp9'].$_POST['imp10'];
  15. $par[6]=$_POST['imp11'].$_POST['imp12'];
  16. $par[7]=$_POST['imp13'].$_POST['imp14'];
  17. $par[8]=$_POST['imp15'].$_POST['imp16'];
  18. $par[9]=$_POST['imp17'].$_POST['imp18'];
  19. $par[10]=$_POST['imp19'].$_POST['imp20'];
  20. /*
  21.  * vos cuando recibis un valor por post lo tratas como string
  22.  */
  23.  
  24. //Comprobamos que lo que se pasan sean números y no se dejan campos vacios
  25.    $query=mysql_query("SELECT * FROM resultados LEFT JOIN usuarios ON resultados.iduser=usuarios.id") or die (mysql_error());
  26.    $premio=0;
  27.    if(mysql_num_rows($query) > 0){
  28.        $premio=1; // no se por inicializas en 1
  29.        while($row=mysql_fetch_array($query))
  30.        {
  31.            for($i=1;$i<=count($par); $i++){
  32.                 if($par[$i]==$row["par$i"])
  33.                 {
  34.  
  35.                     $total= intval($premio) + intval($row['point']);
  36.                     //le agrego intval para forzarlo a numerico
  37.                     echo $row['username']."--------------".$premio."---------".$row['point']."------------".$total;
  38.  
  39.                     $co1=mysql_query("UPDATE usuarios SET point='$total' WHERE id= ".$row['iduser']."") or die (mysql_error());
  40.                 }
  41.            }
  42.        }
  43.    }
  44.    echo $premio;
Si es verdad que está simplificado, pero lo uqe pretendo hacer con el script es sumar 1 cada vez que el resultado coincida con unmo de los campos, y esto no lo hace, si coincide uno de los 10 campos si suma 1 en el campo point, pero si coinciden 2 no suma 2, sigue sumando 1.
  #4 (permalink)  
Antiguo 14/09/2011, 16:52
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Problemas con el UPDATE

Solucionado al final por mi con este código.

Código PHP:
Ver original
  1. <?php
  2. /**
  3.  * @author skirlappa
  4.  * @copyright 2011
  5.  */
  6.  //Conectamos con la bases de datos
  7. $connect=mysql_connect("localhost","","");
  8. $selectDb=mysql_select_db("test",$connect);
  9. //unimos los resultados en un una variable
  10. $par[1]=$_POST['imp1'].$_POST['imp2'];
  11. $par[2]=$_POST['imp3'].$_POST['imp4'];
  12. $par[3]=$_POST['imp5'].$_POST['imp6'];
  13. $par[4]=$_POST['imp7'].$_POST['imp8'];
  14. $par[5]=$_POST['imp9'].$_POST['imp10'];
  15. $par[6]=$_POST['imp11'].$_POST['imp12'];
  16. $par[7]=$_POST['imp13'].$_POST['imp14'];
  17. $par[8]=$_POST['imp15'].$_POST['imp16'];
  18. $par[9]=$_POST['imp17'].$_POST['imp18'];
  19. $par[10]=$_POST['imp19'].$_POST['imp20'];
  20.  
  21. //Comprobamos que lo que se pasan sean números y no se dejan campos vacios
  22.         if(is_numeric($par[1]) && is_numeric($par[2]) && is_numeric($par[3]) && is_numeric($par[4]) && is_numeric($par[5]) && is_numeric($par[6]) && is_numeric($par[7]) && is_numeric($par[8]) && is_numeric($par[9]) && is_numeric($par[10]))
  23.         {
  24.             //Si todos los valores son numerios hacemos la consulta
  25.            $query=mysql_query("SELECT * FROM resultados LEFT JOIN usuarios ON resultados.iduser=usuarios.id") or die (mysql_error());
  26.            $premio=1;
  27.            while($row=mysql_fetch_array($query))
  28.            {
  29.             $premio=0;
  30.             for($i=1;$i<count($par)+1;$i++)
  31.             {
  32.                 if($par[$i]==$row["par$i"])
  33.                 {
  34.                     $premio++;
  35.                 }
  36.             }
  37.             $total=$row['point']+$premio;
  38.             mysql_query("UPDATE usuarios SET point='$total' WHERE id= ".$row['iduser']."") or die (mysql_error());
  39.             echo $row['username']." ha obtenido: ".$premio;
  40.            }
  41.         }  
  42.         else
  43.         {
  44.             //si los valores no son numericos ERROR
  45.             echo "ERROR: En una de sus apuestas ha introducido un valor no numérico.";
  46.         }
  47. ?>

Última edición por skirlappa; 14/09/2011 a las 17:03

Etiquetas: mysql, sql, update, variables, usuarios
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 13:50.