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

0 Miembros and 1 Guest are viewing this topic.

Offline dulex on: October 12, 2017, 05:37:47 PM

  • *
  • Rank: Dedicado
  • Posts: 33
  • Gracias recibida: 2
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.
« Ultima edicion: October 12, 2017, 10:16:04 PM by dulex »

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

  • Php Coder
  • *
  • *
  • Rank: Liga mayor
  • Posts: 189
  • Gracias recibida: 470
el operador de comparativo es ==

ejemplo: if 1 == 1 ...

Offline dulex #2 on: October 12, 2017, 08:15:45 PM

  • *
  • Rank: Dedicado
  • Posts: 33
  • Gracias recibida: 2
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
« Ultima edicion: October 12, 2017, 08:32:31 PM by dulex »

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

  • Php Coder
  • *
  • *
  • Rank: Liga mayor
  • Posts: 189
  • Gracias recibida: 470
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 on: October 12, 2017, 10:15:43 PM

  • *
  • Rank: Dedicado
  • Posts: 33
  • Gracias recibida: 2
@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 on: October 12, 2017, 10:46:10 PM

  • Php Coder
  • *
  • *
  • Rank: Liga mayor
  • Posts: 189
  • Gracias recibida: 470
@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 on: October 12, 2017, 11:14:03 PM

  • *
  • Rank: Dedicado
  • Posts: 33
  • Gracias recibida: 2
@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 on: October 12, 2017, 11:16:01 PM

  • Php Coder
  • *
  • *
  • Rank: Liga mayor
  • Posts: 189
  • Gracias recibida: 470
@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 on: October 13, 2017, 12:07:01 AM

  • *
  • Rank: Dedicado
  • Posts: 33
  • Gracias recibida: 2
@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


 

Related Topics

  Subject / Started by Replies Last post
11 Replies
1160 Views
Last post July 04, 2017, 08:02:31 AM
by Marote
4 Replies
108 Views
Last post March 10, 2017, 10:17:26 AM
by Tallz
7 Replies
114 Views
Last post April 21, 2017, 09:50:38 AM
by unico
7 Replies
477 Views
Last post June 29, 2017, 07:26:08 PM
by Mu-Origenes
16 Replies
419 Views
Last post August 12, 2017, 08:56:14 AM
by CristianPeláez