Foros del Web » Programando para Internet » PHP »

Ejecutar una funcion por resultado de operacion matematica

Estas en el tema de Ejecutar una funcion por resultado de operacion matematica en el foro de PHP en Foros del Web. Saludos. Necesito ayuda con lo siguiente. Tengo 2 campos en mi tabla $clickinicial $clickconsumidos y tengo la siguiente operacion $clickrestantes = $clickinicial - $clickconsumidos; Los ...
  #1 (permalink)  
Antiguo 05/10/2005, 18:11
 
Fecha de Ingreso: junio-2003
Mensajes: 74
Antigüedad: 14 años, 5 meses
Puntos: 1
Ejecutar una funcion por resultado de operacion matematica

Saludos.

Necesito ayuda con lo siguiente.

Tengo 2 campos en mi tabla

$clickinicial
$clickconsumidos

y tengo la siguiente operacion

$clickrestantes = $clickinicial - $clickconsumidos;

Los click consumidos estan cambiando constantemente.

Tengo tambien un campo que se llama status y desde el primer momento esta con valor activo pero necesito que cuando $clickrestantes llegue a cero me cambie el estatus de activo a inactivo.

La verdad no se como crear esa funcion que haga el cambio de estatus automaticamente al momento de llegar a cero el campo de consumidos.

De verdad agradeceria toda su ayuda.
__________________
Roberto
www.tukeke.com
  #2 (permalink)  
Antiguo 05/10/2005, 21:38
 
Fecha de Ingreso: agosto-2005
Mensajes: 28
Antigüedad: 12 años, 3 meses
Puntos: 0
Hola rstory. Segun como cuentas, la solución no tiene mucha complicación.

Es muy sencillo, tienes que crear una condición que verifique que el resultado matematico sea 0, y te ejecute una actualización del campo status. Seria algo asi:

<?

$clickrestantes = $clickinicial - $clickconsumidos; // calculamos la diferencia

$status = "inactivo";
$status2 = "activo";

if($clickrestantes == 0){ // decimos que ejecute la condición cuando $clickrestantes sea = 0

//incluye aqui la conexion a la base de datos que corresponda a la actualización d status

mysql_query("UPDATE `nombre_tabla` SET `status` = '$status' WHERE status='$status2'"); // aqui actualizamos el valor del status, que era "activo", y le asignamos "inactivo"

}
else
{

echo "No se ha actualizado pq aun hay diferencia distinta de 0"; // esta linea es para seguimiento del funcionamiento, si la diferencia no es 0, aparecerá este mensaje

}

?>

Lo importante es tener la diferencia, el resto es coser y cantar, si tienes alguna duda, no dudes en exponerla. Tb si te corre prisa te dejo mi e-mail:

[email protected]

Un saludo a todos, Web Master Lyoko. www.codelyokoweb.com
  #3 (permalink)  
Antiguo 06/10/2005, 12:30
 
Fecha de Ingreso: junio-2003
Mensajes: 74
Antigüedad: 14 años, 5 meses
Puntos: 1
Re:

Listo estoy ejecutando este script y me actualiza la base de datos pero debo refrescar 2 veces la pagina para que me haga el cambio si la ejecto una sola vez no hace el UPDATE

Código PHP:
$result mysql_query("SELECT * from campanas");

// desde aqui es provicional para monitorear los datos

while ($row=mysql_fetch_array($result))
{

print 
$row[click];
print 
"<br>";
print 
$row[clickhechos];
print 
"<br>";
 
print 
$clickrestantes;

// hasta aqui llega lo provisional

$activo "Activo";
$inactivo "Inactivo";

  if(
$row[click] - $row[clickhechos] > 0){ 


mysql_query("UPDATE campanas SET estatus = '$activo' "); // aqui actualizamos el valor del status, que era "activo", y le asignamos "inactivo"

}
else 
{

mysql_query("UPDATE campanas SET estatus = '$inactivo'"); 
}    
    

Otra pregunta.

Si coloco ese script en el index de mi portal cada vez que entre un usuario se deberia ejecutar y actualizar la BD correcto ?????
__________________
Roberto
www.tukeke.com
  #4 (permalink)  
Antiguo 06/10/2005, 12:48
 
Fecha de Ingreso: septiembre-2005
Mensajes: 101
Antigüedad: 12 años, 2 meses
Puntos: 0
pues si entra dos veces si xD

puedes ponerle un script de para que refresque la pagina en 1 segundo
  #5 (permalink)  
Antiguo 06/10/2005, 14:37
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 13 años, 6 meses
Puntos: 0
El problema lo tienes en la condición que pones para cambiar el estatus.

Si lo piensas bien, deberías actualizar a Inactivo cuando
$row[click] - $row[clickhechos] fuese igual a 1. Es decir cuando sólo le quede un click. Porque si lo hacces cuando ya no le quedan clicks, resulta que puede entrar N veces más 1. (Cuando los clicks disponibles son cero, tu script actualiza la tabla con Inactivo, pero lo hace después de que el usuario haya entrado.)
  #6 (permalink)  
Antiguo 07/10/2005, 08:26
 
Fecha de Ingreso: junio-2003
Mensajes: 74
Antigüedad: 14 años, 5 meses
Puntos: 1
Casi. me esta actualizando bien siempre y cuando tenga un solo registro, pero hay por ejemplo 4 actualiza pero si consigue uno para actualiza cambia todos los demas, es decir si hay un registro activo muestra todos activo y si mando a actualizar y el primero deberia se inactivo cambia todos los demas.

Probe de todo y nada. SI alguien ve el errorse lo agradeceria.

Código PHP:
$result mysql_query("SELECT campana_id, click, clickhechos, estatus from campanas ");
while (
$row=mysql_fetch_array($result))
{
print
" <input type=hidden name=campana_id value="$row[campana_id].">";
print
" <input type=hidden name=click value="$row[click].">"
print
" <input type=hidden name=clickhechos value="$row[clickhechos].">"
print
" <input type=hidden name=estatus value="$row[estatus].">";
print
"<br>";
$row[estatus] = addslashes($estatus);
$click $row[click];
$clickhechos $row[clickhechos];
if(
$click $clickhechos 0){ 
$estatus ="Activo";
mysql_query("UPDATE campanas SET estatus = '$estatus' WHERE  (campana_id='$campana_id' and estatus='$estatus') "); 
}
else if(
$click $clickhechos == 0)
{
$estatus "Inactivo";
mysql_query("UPDATE campanas SET estatus = '$estatus' WHERE campana_id='$campana_id' and estatus='$estatus') "); 
}    

__________________
Roberto
www.tukeke.com
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 17:10.