Foros del Web » Programando para Internet » PHP »

Ayudaa..! =( todo un RETO,como hago lo siguiente.. :S

Estas en el tema de Ayudaa..! =( todo un RETO,como hago lo siguiente.. :S en el foro de PHP en Foros del Web. Hola! primero que nada n Gran saludos todos! aqui en foros del web, siempre me han ayudado , siemre me encuentro en algun aprieto reviso.. ...
  #1 (permalink)  
Antiguo 03/03/2010, 03:22
Avatar de JoseGMariani  
Fecha de Ingreso: diciembre-2008
Ubicación: Edo Lara
Mensajes: 251
Antigüedad: 15 años, 4 meses
Puntos: 8
Ayudaa..! =( todo un RETO,como hago lo siguiente.. :S

Hola! primero que nada n Gran saludos todos! aqui en foros del web, siempre me han ayudado , siemre me encuentro en algun aprieto reviso.. y investigo cuando ya no me queda mas nada que estoy ahogado.. posteo, lo bueno es que mientras reviso aprendo y ayudo comoa 10 menores que yo en el camino.. .. y es precisamente eso por lo que estoy aki, hace muyy poco tiempo empece con PHP .. :S y aprendi las cosas basicas... consultas, envio de variables por post y get las diferencias y eso.. insertar imprimir.. secciones.. login, esas son las cosas q e aprenddo pero odvio q se q aunn me falta... y demaciado! :S

EL PUNTO es el siguiente, decido hacer un sistema q simula, en pare a un bnco, claro no pensaran en un banco real sencillamente son puros insert q haCen parte de deposito etc.. me dije a mi mismo, voya tratar de hacerlo todo solo.. pero lamentablemente necesito a alguien que me enseñe.. me eh qdado trancado..

LA COSA ES ASI! ES UN RETO! eee!! ACEPTO SUGERENCIAS DE COMO HACERLO... MUXAS VECES LOS MAXIMOS PROGRAMADORES de AKI LE DAN LA VUELTA DE UNA FORMAA INIMAGINABLE,.

es asi, tengo una base con muxas tablas.. pero las tablas que aki estan involucradas son 2. la tabla Usuarios, y la tabla Inversiones.

La tabla Usarios :

(tiene todo los campos del registro de ese usuario, pero ademas tiene un campo que se llama disponible, ya les explico por que se los dijo. )


-la tabla inversiones campos:

1-nombre:
2-monto:
3-plazo:
4-dia:
5-ganacia: variable que se calcula depende del monto. ej: $monto\2
6-Renovable:


La cosa es la siguiente Un usuario llena un formilario en donde dice el monto, el plazo (que serian los mismos dias.. pero ya les dijo por que lo repeti) y cuantas veces es renovable.

EJEMPLO: si un usuario dice:
moto: 10$
plazo: 30dias
renovable=1

entoncs cuando pasen los 30 dias.. a ese usuario se le va sumar la varible ganancia, que esta estalecida previamente como un porcentaje de la variable moto. en el campo disponibel de la tabla usuarios, y renovale se va a convertir en 0 , y los dias van a volver a ser 30. (por eso es q uso el campo plazo) y vana s eguir contandoce cuando sean 0 se le va sumar lo que este en el campo , ganancia y lo que el puso en invertido. y se borra esa fila.

es como un cronometro.. ese codigo que hace eso .. quiero ponerlo en una tarea programada en el servidor crob job algo asi se escribe en ingles..

el PROBLEMA ES, AKI VIENE EL problema! QUE UN USUARIO puede hacer varias inversioones a diferentes plazo..

entoncs cuando mando a actualizar el valor de el campo disponible .. me agarra solo el utimo usuario...

EN pregunta directa.. .SI tengo varios usuarios y tengo un codigo que dice , cuando invertido y dia sea 0. update disponible=disponible+$monto .. el problema es que no me agarra todo los usuarios en donde invertido y dia sea 0 si no que solamente el ultimo...

y si son dos usuarios con el mismo nombre deberia agarrarme esas dos actualizacciones.. peor solo me agarra el que este deultimo en la tabla.. espero que me hayan entendido .. Cualquier duda preguntenme porfavor...

si ienzan poder hacerlo de otra manera.. tambien soy todo oidos! :S

es que T.T CREO Q ESO NOC PUEDE HACER .. =( por q o hay nada q me indentifique el usuaro y como es un cosa general.. :S de todas maneras se que m falta muxoo y de qe hay tantas cosas qu enoc q quisas si s epuede hacer.. lo mas seguro es que Si.... espero alguna repsuesta gracias de todas menras tratare de acortar esta pregunta si no tengo repsuesta.. =(

el codigo es
Código PHP:
<?
session_start
();
include (
'conexion.php');
$lol=0;
$query "UPDATE inversiones SET dia = dia-1 where dia>'$lol'"
mysql_query($query) or die(mysql_error());
echo
"se quito 1 dia";
$consulta=mysql_query("SELECT renovable, ganancia, nombre, invertido FROM inversiones where dia='$lol'");
    
$lado=mysql_num_rows ($consulta);
while(
$row=mysql_fetch_array($consulta)){
$renovable=$row["renovable"];
$ganancia=$row["ganancia"];
$invertido=$row["invertido"];
$nombre=$row["nombre"];
}
if (
$renovable>0){ 
$query "UPDATE inversiones SET renovable = renovable-1 where dia='$lol'"
mysql_query($query) or die(mysql_error());
echo
"-1 renovable";

if (
$renovable>0){
$query "UPDATE inversiones SET dia =30 where plazo='30' "
mysql_query($query) or die(mysql_error());
$query "UPDATE usuarios SET disponible = disponible+$ganancia where nombre='$nombre'"
mysql_query($query) or die(mysql_error());

echo 
"-Se renovo 30";
}
if (
$renovable>0){ 
$query "UPDATE inversiones SET dia =60 where plazo='60' "
mysql_query($query) or die(mysql_error());
echo 
"-Se renovo 60";
}
if (
$renovable>0){ 
$query "UPDATE inversiones SET dia =90 where plazo='90' "
mysql_query($query) or die(mysql_error());
echo 
"-Se renovo 90";
}
}
if (
$renovable==0){ 
$query "UPDATE usuarios SET disponible = disponible+$ganancia+$invertido where nombre='$nombre'"
mysql_query($query) or die(mysql_error());
echo
"  Fin";
}
?>

los echo se los puce para ir probando.. con un usuario si funciona el problema es con varios..:s como le indico a cuales son..:s m agarra el ultimo..:s
  #2 (permalink)  
Antiguo 03/03/2010, 05:26
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: Ayudaa..! =( todo un RETO,como hago lo siguiente.. :S

El caso yo creo que son los ifs. Es una mala estructuración. Hay cuatro condiciones iguales con lo que el programa no sabe cuál escoger.
Además no haces el final con elseif, sino que le pones if($campo==0) directamente. Te recomiendo lo siguiente:

Código PHP:
Ver original
  1. if($renovable>0) {
  2.  
  3. $query[0]="SENTENCIA SQL";
  4. $query[1]="SENTENCIA SQL";
  5. $query[2]="SENTENCIA SQL";
  6. $query[3]="SENTENCIA SQL";
  7. $query[4]="SENTENCIA SQL";
  8.  
  9. foreach($query as $sentencia) {
  10.      mysql_query($sentencia, $conexion);
  11. }
  12.  
  13.  
  14. } elseif ($renovable==0) {
  15.  
  16. // La otra sentencia
  17.  
  18. }
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #3 (permalink)  
Antiguo 03/03/2010, 07:58
Avatar de principiantedelphp  
Fecha de Ingreso: febrero-2010
Mensajes: 160
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Ayudaa..! =( todo un RETO,como hago lo siguiente.. :S

Por favor, evita los bucles a toda costa (me han traido muchos dolores de cabeza y horas perdidas) y estructura en forma de bloques (funciones, etc.). Usa mientras puedas switch...case y si no queda otra, los menos ifs posible y por supuesto NUNCA repitas variables con igual valor (if ($renovable>0)?????). Al menos usa arrays para tal variable.
Considero, sin ofender, que deberías empezar con algún proyecto más sencillo que este.
  #4 (permalink)  
Antiguo 03/03/2010, 08:33
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: Ayudaa..! =( todo un RETO,como hago lo siguiente.. :S

Cita:
Iniciado por principiantedelphp Ver Mensaje
Por favor, evita los bucles a toda costa (me han traido muchos dolores de cabeza y horas perdidas) y estructura en forma de bloques (funciones, etc.). Usa mientras puedas switch...case y si no queda otra, los menos ifs posible y por supuesto NUNCA repitas variables con igual valor (if ($renovable>0)?????). Al menos usa arrays para tal variable.
Considero, sin ofender, que deberías empezar con algún proyecto más sencillo que este.
No estoy de acuerdo con evitar los bucles. Si los controlas bien, es la herramienta más potente de la programación ;) Sustituir bucles por switch o ifs es una locura mal pensada.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #5 (permalink)  
Antiguo 03/03/2010, 10:50
Avatar de JoseGMariani  
Fecha de Ingreso: diciembre-2008
Ubicación: Edo Lara
Mensajes: 251
Antigüedad: 15 años, 4 meses
Puntos: 8
Respuesta: Ayudaa..! =( todo un RETO,como hago lo siguiente.. :S

Buenas, Muchass gracias CHuLoSoy , lo voya probar aunq la verdad el problema en si, no es ese.. y si tenia pensado que el codigo fuera asi con el elseif , peroo no me sabia como se escribia... no tenia internet si no hasta ayer y lo primero que hice fue pedir ayuda urgentemente al foro.. probe en poner andif ifand hahaha peroo nunk se me ocurrio poner elseif..

De todas formas ese no es el problema..aunq de todas maneras es una mejora! gracias por la recomendaccion en realidad asi deveria ser por que es mas limpio! ... :S pero en parte el problema no son los if... si se fijan bien a ñla final para que la sentencia if>$invertido o cualquier otra tenga que ver con invertido...

dias=0 para que asi la consulta se haga y esa variable exista .. de lo contrario no pasaria nada.. ven, =D eh hay el truco..

el problema esta en que los update no tienes especificado un nombre de usuario.. si no que tienen la variable $nombre.. y como la variable $nombre son todos los nombres donde dias=0 por que la sonsulta lo dice asi

Código PHP:
$consulta=mysql_query("SELECT renovable, ganancia, nombre, invertido FROM inversiones where dia='$lol'"); 
    
$lado=mysql_num_rows ($consulta); 
while(
$row=mysql_fetch_array($consulta)){ 
$renovable=$row["renovable"]; 
$ganancia=$row["ganancia"]; 
$invertido=$row["invertido"]; 
$nombre=$row["nombre"]; 

entoncs me agarra los el ultimo nombre por ejemplo:

(en su odern)

nombre dia- monto- plazo- ganancia- renovable

jose.........0......10.......30..........5........ ...... 0

pedro.........0......10.......60..........5....... ....... 0

juan.........0......10.......30..........5........ ...... 1


en un caso como ese, me deveria actualizar a jose y a pedro.

(y a juan renovable pasa a 0 y dias se actualiza a lo que dija plazo. esta parte ya lo hace. )

lo que pasa es que viene, y solo me actualiza a Pedro. por que en este caso es el ultimo que esta en la base ... ese es el problema.. por la impresion de la variable $nombre.. creo .. si tienes alguna sugerencia.. :(

Etiquetas: siguiente, todo
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:32.