Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Llamar una funcion PHP en Select MYSQL

Estas en el tema de Llamar una funcion PHP en Select MYSQL en el foro de Mysql en Foros del Web. Buenos Días Necesitaría sacar el saldo que la persona tiene, positivo o negativo sumando o restando los movimientos de la tabla "cuentacorriente" dependiendo del signo ...
  #1 (permalink)  
Antiguo 17/08/2010, 07:23
Usuario no validado
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires
Mensajes: 413
Antigüedad: 15 años
Puntos: 3
Llamar una funcion PHP en Select MYSQL

Buenos Días

Necesitaría sacar el saldo que la persona tiene, positivo o negativo sumando o restando los movimientos de la tabla "cuentacorriente" dependiendo del signo que esta en la tabla "tipomovimientos".

Para eso hize una funcion PHP, pero me dice que la funcion "sumaoresta" no existe, Por las dudas les paso el código:

function saldo($idusuario){
$result=mysql_query("select sum(sumaoresta(cuentacorriente.importe,tipomovimie ntos.signo)) as retorno from cuentacorriente,tipomovimientos where idusuario='$idusuario' and cuentacorriente.idtipomovimiento=tipomovimientos.i dtipomovimiento") or die(mysql_error());
$registro=mysql_fetch_array($result);
return($registro[retorno]);
}

function sumaoresta($imp,$sig){
$ret="0";
if ($sig=="+") {$ret=$imp*1;}
if ($sig=="-") {$ret=$imp*-1;}
if ($sig==" ") {$ret=$imp*0;}
return($ret);
}

Mil gracias si alguien me puede ayudar.
  #2 (permalink)  
Antiguo 17/08/2010, 08:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Llamar una funcion PHP en Select MYSQL

No puedes hacer "dialogar" al MySQL con PHP. MySQL es servidor, no cliente.
En todo caso podrías crear una función en C para ello, pero de todos modos no sería lo más práctico.
Lo que en realidad tienes que hacer, y es lo que se debe hcer, es realizar la consulta cruzando las tablas de modo que te devuelva los datos que buscas. Para eso es que el SQL existe, y no solo para darte tablas planas de lo que ingresaste...
Código MySQL:
Ver original
  1.     SUM(IF(TM.signo = '+', CC.importe, IF(TM.signo = '-', CC.importe * (-1), 0))) retorno
  2. FROM cuentacorriente CC INNER JOIN tipomovimientos TM ON CC.idtipomovimiento=TM.idtipomovimiento
  3. WHERE idusuario='$idusuario';

Más allá de esta solución, me resulta muy extraño almacenar en una misma tabla un monto y el "signo" a aplicar. Me da a pensar que estás juntando en una misma tabla el "Debe" y el "Haber" de una cuenta, cosa que a todas luces parece un error de diseño, porque se trata de conceptos (y entidades) completamente diferentes.
Sería interesante saber qué es lo que diseñaste...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 17/08/2010, 13:02
Usuario no validado
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires
Mensajes: 413
Antigüedad: 15 años
Puntos: 3
Respuesta: Llamar una funcion PHP en Select MYSQL

Si amigo, asi me funciono Perfecto, te agradezco mucho.
Lo diseñe asi porque es una tabla de movimientos de cuentas corrientes en las cuales esta el idusuario, idtipomovimiento ejemplo(factura, pago) y el importe, solamente para la visualizacion en la pantalla el saldo tiene, si es deudor o acreedor. Por eso tengo que relacionar ambas tablas.
Nuevamente Muchas Gracias por tu ayuda

Etiquetas: funcion, llamar, php, select
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:02.