Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: Sumar puntos segun se cumplan las variables |PHP  (Visto 1686 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline dulex Posteado: October 12, 2017, 05:37:47 PM | Modificado: October 12, 2017, 10:16:04 PM by dulex

  • 0 puntos por ventas
  • *
  • Rank: Usuario activo
  • Posts: 62
  • Gracias recibida: 18
  • mx
Hola, buenas tardes, estoy tratando de hacer lo siguiente; Si ACCOUNTID1 es igual a ACCOUNTID2 se agrega un punto a una tabla en el SQL, el problema es que si hay más de 1 AccountID2 que se cumpla o AccountID1, solo agrega un punto  en lugar de dos ya que se hacen dos comparaciones o eso es lo que quiero, no se si me explico bien :/
No estoy muy seguro si puedo publicar esto aquí.
Actualizo el POST
Code: [Select]
<?
    $AccountID1Q=mssql_query("SELECT * FROM Recruit Where Recruited_by='".$user_auth_id."' and status='false'");
    while($row=mssql_fetch_assoc($AccountID1Q)){
            $AccountID1 =$row['AccountID'];
            $status1 = $row['status'];
            echo "".$AccountID1." status: ".$status1." ";
    }
    $AccountID2Q=mssql_query("SELECT TOP 1 * FROM Character Where AccountID='".$AccountID1."' ORDER BY Resets DESC");
    while($row=mssql_fetch_assoc($AccountID2Q)){
            $resets =$row['Resets'];
            $AccountID2 = $row['AccountID'];

            echo "".$resets."<br>";
    }

    if ($AccountID1 == $AccountID2 && $resets == 1) {
      echo "se cumple todo ".$AccountID1." & ".$AccountID2."";
      $suma_reclutados = $core_db->Execute("UPDATE Recruit SET reclutados=reclutados+1 WHERE AccountID='".$user_auth_id."'");
       $suma_reclutados;
       $change_status = $core_db->Execute("UPDATE Recruit SET status='true' WHERE AccountID='".$AccountID2."'");
       $change_status;
    }
                               
?>
-De esta manera solamente se ejecuta uno a la vez, no todos a la vez como yo buscaba.
Esto es lo que he conseguido, hice unos cambios en la base de datos y así tener un status para que no agregue 1 reclutado cada que se actualice, así comprueba si el reclutado tiene el status en false y procede, de lo contrario no lo muestra en la Query, ahora lo siguiente; esto se ejecuta cada que se actualiza la página, pero solo funciona para la persona que esta logeada en el panel de usuario, ya que de ahí la variable "$user_auth_id", me gustaría poner que esto se actualizara de manera global cada 1 hora con los cron jobs de Mu Core, aún que esto creo que funciona de la siguiente manera: cuando se actualiza la página o se entra a la página donde está la funcion del cron jobs es cuando comienza el cooldown para este, esto implica que solamente ocurra cuando una persona entre al modulo donde está dicha función y solo para dicha persona se le actualizaran los Reclutados y el Status solo para las filas que tengan su nombre en la columna "Recruited_by", dicho esto, quisiera que se ejecute para todos los usuarios registrados, yo había pensado de está manera
Code: [Select]
<?
  $AccountsQ=mssql_query("SELECT * FROM MEMB_STAT");//aqui selecciono todas las cuentas que por lo menos hayan ingresado al juego 1 vez
    while($row=mssql_fetch_assoc($AccountsQ)){
            $Accounts =$row['memb___id'];
    }

    $AccountID1Q=mssql_query("SELECT * FROM Recruit Where Recruited_by='".$Accounts."' and status='false'");
    while($row=mssql_fetch_assoc($AccountID1Q)){
            $AccountID1 =$row['AccountID'];
            $status1 = $row['status'];
            echo "".$AccountID1." status: ".$status1." ";
    }

    $AccountID2Q=mssql_query("SELECT TOP 1 * FROM Character Where AccountID='".$AccountID1."' ORDER BY Resets DESC");
    while($row=mssql_fetch_assoc($AccountID2Q)){
            $resets =$row['Resets'];
            $AccountID2 = $row['AccountID'];

            echo "".$resets."<br>";
    }

    if ($AccountID1 == $AccountID2 && $resets == 1) {
      echo "se cumple todo ".$AccountID1." & ".$AccountID2."";
      $suma_reclutados = $core_db->Execute("UPDATE Recruit SET reclutados=reclutados+1 WHERE AccountID='".$Accounts."'");
       $suma_reclutados;
       $change_status = $core_db->Execute("UPDATE Recruit SET status='true' WHERE AccountID='".$AccountID2."'");
       $change_status;
    }
                               
?>
Por supuesto no me funciono  lol, ahora eso es lo que busco :/ que se ejecute para todos, que no tenga que estar logeada el usuario para que se actualice, o ustedes creen que sea mejor que se quede solo para el usuario que este en el panel de usuario.


Offline Xysad #1 Posteado: October 12, 2017, 08:13:39 PM

  • Php Coder
  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 280
  • Gracias recibida: 1290
  • ar
el operador de comparativo es ==

ejemplo: if 1 == 1 ...


Offline dulex #2 Posteado: October 12, 2017, 08:15:45 PM | Modificado: October 12, 2017, 08:32:31 PM by dulex

  • 0 puntos por ventas
  • *
  • Rank: Usuario activo
  • Posts: 62
  • Gracias recibida: 18
  • mx
Me percate de eso después, pero de todas maneras, no es lo que busco. :/ Gracias.
Al estar igual igual "==" si hay más de 1 AccountID1 y AccountID2 que comparar, se toma ejemplo 1==2 y 2==1, esto hará que el if no se cumpla, no se si me explico :/ me resulta algo difícil explicar


Offline Xysad #3 Posteado: October 12, 2017, 10:02:08 PM

  • Php Coder
  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 280
  • Gracias recibida: 1290
  • ar
Me percate de eso después, pero de todas maneras, no es lo que busco. :/ Gracias.
Al estar igual igual "==" si hay más de 1 AccountID1 y AccountID2 que comparar, se toma ejemplo 1==2 y 2==1, esto hará que el if no se cumpla, no se si me explico :/ me resulta algo difícil explicar

Si, no te entiendo. Si queres comparar es de esa manera, dentro del If va el codigo que se ejecuta en caso que esa condicion se cumpla


Offline dulex #4 Posteado: October 12, 2017, 10:15:43 PM

  • 0 puntos por ventas
  • *
  • Rank: Usuario activo
  • Posts: 62
  • Gracias recibida: 18
  • mx
@Xysad mira el post, actualice con el código que hice hace unos minutos, se me ocurrió de otra manera, haber si ya el código y la idea se entiende mejor


Offline Xysad #5 Posteado: October 12, 2017, 10:46:10 PM

  • Php Coder
  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 280
  • Gracias recibida: 1290
  • ar
@dulex y si creas otro campo en la tabla que sea algo asi como "reclamado"
entonces a su vez le decis que eso se cumple tambien si reclamado es nulo


Offline dulex #6 Posteado: October 12, 2017, 11:14:03 PM

  • 0 puntos por ventas
  • *
  • Rank: Usuario activo
  • Posts: 62
  • Gracias recibida: 18
  • mx
@dulex y si creas otro campo en la tabla que sea algo asi como "reclamado"
entonces a su vez le decis que eso se cumple tambien si reclamado es nulo
Esa es la función del status, bueno esa era mi intención, pero lo hice desde la Query, si status es false procede con la query, si es true no


Offline Xysad #7 Posteado: October 12, 2017, 11:16:01 PM

  • Php Coder
  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 280
  • Gracias recibida: 1290
  • ar
@dulex y si creas otro campo en la tabla que sea algo asi como "reclamado"
entonces a su vez le decis que eso se cumple tambien si reclamado es nulo
Esa es la función del status, bueno esa era mi intención, pero lo hice desde la Query, si status es false procede con la query, si es true no

bueno, pero igual no se hacen 2 comparaciones bro, estas errado ahi. La consulta siempre va a devolver un dato a menos que hagas un bucle


Offline dulex #8 Posteado: October 13, 2017, 12:07:01 AM

  • 0 puntos por ventas
  • *
  • Rank: Usuario activo
  • Posts: 62
  • Gracias recibida: 18
  • mx
@dulex y si creas otro campo en la tabla que sea algo asi como "reclamado"
entonces a su vez le decis que eso se cumple tambien si reclamado es nulo
Esa es la función del status, bueno esa era mi intención, pero lo hice desde la Query, si status es false procede con la query, si es true no

bueno, pero igual no se hacen 2 comparaciones bro, estas errado ahi. La consulta siempre va a devolver un dato a menos que hagas un bucle

Ya veo, entonces quito el status de la query y lo pongo en un if?, puse además de las comparaciones de AccountID puse la de los Reset, esto es por que quiero que solamente los que tengan 1 reset los cuente, el resto no, despues de que esto se cumpla pone el status en true y ya no se volvera a contar si se tiene otro char con 1 reset, no entiendo muy bien, si puedes explicarme un poco con el código, para poder entender un poco mejor, gracias :D


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
0 Replies
1235 Views
Last post March 07, 2018, 10:52:23 PM
by LeepS
2 Replies
2314 Views
Last post June 21, 2018, 10:16:33 PM
by FreeStyle
5 Replies
1215 Views
Last post September 04, 2018, 06:13:04 PM
by Cloud
0 Replies
637 Views
Last post December 31, 2018, 10:22:44 AM
by MiniBestia
3 Replies
748 Views
Last post September 30, 2019, 09:38:28 AM
by takumi12