Foros del Web » Programando para Internet » PHP »

Problema al ejecutar un while y un if

Estas en el tema de Problema al ejecutar un while y un if en el foro de PHP en Foros del Web. Tengo un problemilla y es que cuando ejecuto el ultimo while al hacer if no me ejecuta la consulta nada mas que una vez, la ...
  #1 (permalink)  
Antiguo 20/09/2011, 11:35
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 10 meses
Puntos: 0
Problema al ejecutar un while y un if

Tengo un problemilla y es que cuando ejecuto el ultimo while al hacer if no me ejecuta la consulta nada mas que una vez, la última os muestro el código


Código PHP:
Ver original
  1. <?php
  2. /**
  3.  * @author SyToo22
  4.  * @copyright 2011
  5.  */
  6.  //Conectamos con la bases de datos
  7. $connect=mysql_connect("localhost","","");
  8. $selectDb=mysql_select_db("test",$connect);
  9. $total=0;
  10. //Comprobamos el numero de apustas que han acertado y sumamos sus creditos
  11. $query=mysql_query("SELECT * FROM resmejor WHERE idequipo=".$_POST["name"]."");
  12. while($row=mysql_fetch_array($query))
  13. {
  14.     $total+=$row["tapuesta"];
  15. }
  16. //hayamos el el premio por credito jugado
  17. $query1=mysql_query("SELECT * FROM bote WHERE id=1");
  18. while($row1=mysql_fetch_array($query1))
  19. {
  20.     $premio=floor($row1["bote"]/$total);    
  21. }
  22. //multiplicamos el premio por los premios jugados y le añadimos los puntos a los usuarios premiados
  23. //$query2=mysql_query("SELECT usuarios.ID, usuarios.point, usuarios.username, resmejor.idequipo, resmejor.iduser, resmejor.tapuesta FROM usuarios LEFT JOIN resmejor ON resmejor.idequipo=".$_POST["name"]."");
  24. $query2=mysql_query("SELECT * FROM resmejor LEFT JOIN usuarios ON resmejor.iduser=usuarios.id");
  25. while($row2=mysql_fetch_array($query2))
  26. {
  27. if($_POST["name"]==$row2["idequipo"])
  28. {
  29.    //ESTAS LÍNEAS DE CÓDIGO NO VAN--SOLO SUMA AL FINAL
  30.    //Compruebo que el if se ejecute tantas vecex como coincidencias ademas muestro el iid del premiado como  los puntos que tiene
  31.     echo "Aqui hay premios------el id del premiado es....".$row2["iduser"]."------------".$row2["point"]."<br>";
  32.     $win=$premio*$row2["tapuesta"];
  33.     $suma=$win+$row2["point"];
  34.     $nomeva=mysql_query("UPDATE usuarios SET point='$suma' WHERE ID=".$row2["iduser"]."");
  35.     echo $win."........".$row2["point"]."--------------".$suma."<br>";
  36. }
  37. }

Como os muestro en pantalla imprime esto, esta bien ejecuta bien el bucle porque en la base datos solo hay tres conicidencias, si las modifico a una o a dos muestra bien que solo hay un premio o dos, pero a la hora de hacer el update solo me lo hace una vez, la última.

IMPRESION DE PANTALLA
Código:
Aqui hay premios------el id del premiado es....1------------2
1........2--------------3
Aqui hay premios------el id del premiado es....1------------2
2........2--------------4
Aqui hay premios------el id del premiado es....1------------2
2........2--------------4
Como podeis ver el resultado de este bucle tendría que ser

1+2=3
2+3=5
2+5=7

pero esto no es asi porque siempre mantiene el valor point en la base de datos fija hasta el final que es cuando la modifica, si volvemos a ejecutar el codigo imprimira esto:

Código:
Aqui hay premios------el id del premiado es....1------------4
1........4--------------5
Aqui hay premios------el id del premiado es....1------------4
2........4--------------6
Aqui hay premios------el id del premiado es....1------------4
2........4--------------6
Como podeis ver anteriormente sumo el ultimo que era dos.

¿Qué estoy haciendo mal¿
  #2 (permalink)  
Antiguo 20/09/2011, 13:15
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Problema al ejecutar un while y un if

En la linea
if($_POST["name"]==$row2["idequipo"])

verifica qué estás recibiendo en el $_POST así como cuántos resultados te arroja la consulta que estás manejando con $row2, ya que así a simple vista no veo nada anormal.
  #3 (permalink)  
Antiguo 20/09/2011, 13:34
Avatar de autonotel  
Fecha de Ingreso: junio-2003
Ubicación: Vigo
Mensajes: 480
Antigüedad: 20 años, 10 meses
Puntos: 13
Respuesta: Problema al ejecutar un while y un if

O bien después del while convierte en variables todos los row y después trabaja con ellos haz un echo y mira el resultado.
  #4 (permalink)  
Antiguo 21/09/2011, 10:57
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Problema al ejecutar un while y un if

Nada comprobe lo que me decíais y nada....

Código PHP:
Ver original
  1. $query2=mysql_query("SELECT * FROM resmejor LEFT JOIN usuarios ON resmejor.iduser=usuarios.id");
  2. while($row2=mysql_fetch_array($query2))
  3. {
  4. $iduser=$row2["iduser"];
  5. $win=$premio*$row2["tapuesta"];
  6. $suma=$win+$row2["point"];
  7. echo $_POST["name"]."-";
  8. echo $row2["idequipo"]."<br>";
  9. if($_POST["name"]==$row2["idequipo"])
  10. {
  11.     echo "Aquí hay premio<->y debería sumar: ".$win.".........al usuario ".$iduser."el valor de point es:".$row2["point"]."<br>";
  12.     mysql_query("UPDATE usuarios SET point='$suma' WHERE id='$iduser'");
  13. }
  14. }
  15. ?>
Esto es lo que muestra el código ejecutado en pantall (excepto los comentarios que lo he puesto para comentar.)
Código code:
Ver original
  1. 1-11 //No esta entre los valores if
  2. 1-1 //si esta en el if
  3. Aquí hay premio<->y debería sumar: 1.........al usuario 1el valor de point es:10
  4. 1-1
  5. Aquí hay premio<->y debería sumar: 2.........al usuario 1el valor de point es:10//Como podemos ver no ha sumado la anterior consulta..¿POR QUEEEEEEEEEEEEEEE?
  6. 1-1
  7. Aquí hay premio<->y debería sumar: 2.........al usuario 1el valor de point es:10//Como podemos ver no ha sumado la anterior consulta..¿POR QUEEEEEEEEEEEEEEE?
  #5 (permalink)  
Antiguo 21/09/2011, 12:04
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Problema al ejecutar un while y un if

Desesperado!! como es posible que solo sume la ultima vez? solo suma la ultima vez por cada id de usuario si un usuario realiza una apuesta si le suma, nose que puede ser porque creo que debería ejecutar el if de igual manera...estoy muyyy perdido!

Etiquetas: mysql, 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 21:56.