Foros del Web » Programando para Internet » PHP »

Como hacer hack en precios

Estas en el tema de Como hacer hack en precios en el foro de PHP en Foros del Web. Buenas compañeros, Tengo una web en la cual deseo que no se muestren decimales en los precios excepto en aquellos que terminen en ,95 y ...
  #1 (permalink)  
Antiguo 09/06/2011, 14:41
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años, 1 mes
Puntos: 1
Pregunta Como hacer hack en precios

Buenas compañeros,

Tengo una web en la cual deseo que no se muestren decimales en los precios excepto en aquellos que terminen en ,95 y he localizado ya en un fichero que se llama defines.inc.php el codigo que maneja los decimales y es
Código PHP:
define('_PS_PRICE_DISPLAY_PRECISION_'2); 
Si cambio el 2 por el 0 consigo que no se muestren los decimales pero para que se muestren solo los decimales que terminen en ,95 deberia añadir algun if o algo parecido ¿Alguien sabe que codigo deberia poner?

Saludos y gracias
  #2 (permalink)  
Antiguo 09/06/2011, 15:23
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Como hacer hack en precios

pues tu te estas dando la respuesta haz una condición y listo
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #3 (permalink)  
Antiguo 09/06/2011, 15:28
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Como hacer hack en precios

Imagino que habria que hacer una condición, pero no se hacerla por eso pido ayuda
  #4 (permalink)  
Antiguo 09/06/2011, 15:49
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años
Puntos: 336
Respuesta: Como hacer hack en precios

antes que nada DEJA EL defines.inc.php COMO ESTABA! XD

tal como dijo johan16 necesitas una condición, puedes hacerlo de esta forma, no creo que sea la más optima pero funciona

solo manipulas la variable como string y tomas todo lo que está después del punto:

Código PHP:
//primero vemos si el numero tiene punto
if($pos=strpos($numero,".")){
  
//luego obtenemos lo que esta despues de ese punto
  
$decimal=substr($numero,$pos);
  
//verificamos si NO es .95
  
if($decimal!=".95"){
    
// si no es .95 borramos el decimal
    
$numero=substr($numero,0,$pos);
  }

ve si te sirve, no lo he probado
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #5 (permalink)  
Antiguo 09/06/2011, 16:12
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 7 meses
Puntos: 70
Respuesta: Como hacer hack en precios

Mmmmm lógicamente, necesitas hacer excepciones, por lo tanto, crea un array con tus excepciones:

Código PHP:
Ver original
  1. $arrayExcepcion = array('.95');

Ahora buscamos que el valor de tu variable $decimal no se encuentre ahí:

Código PHP:
Ver original
  1. $decimal = '.95';
  2. if (in_array($decimal, $arrayExcepcion)) {
  3.     echo "El decimal {$decimal} se encontró!";
  4. } else {
  5.     echo "El decimal {$decimal} NO se encontró!";
  6. }

Puedes tener n cantidad de excepciones, sólo tendrías que agregarlas en tu array y no estar haciendo n if.

Saludos.
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #6 (permalink)  
Antiguo 10/06/2011, 07:25
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Como hacer hack en precios

Muchas gracias por vuestra ayuda, he intentado introducir ambos codigos pero no se consigue el objetivo buscado, con el codigo de stramin es como si no se añadiria ningun codigo porque no toma en cuenta los decimales terminados en 0.95 y con el codigo de Carxl me da error el fichero php (lineas rojas) pegando todo su codigo justo debajo del define('_PS_PRICE_DISPLAY_PRECISION_', 0);. Os comento que el defines.inc.php esta formado por 90 lineas con un codigo parecido a define('PS_XXX_XXX', 0); por cada linea y tan solo hay una sección llamada /* settings php */ con un if en la que el codigo de Carxl no me crea problemas (lineas rojas) si lo pego debajo pero luego en la web me crea graves errores sin conseguir hacer la excepción del 0,95, ¿Cuál podria ser el problema?
saludos
  #7 (permalink)  
Antiguo 10/06/2011, 07:35
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años
Puntos: 336
Respuesta: Como hacer hack en precios

el problema es que no debes redefinir la muestra de precisión, esa no es la mejor manera de lograrlo.

mira, he probado el código que te he puesto con varios números:

Código PHP:
Ver original
  1. <?php
  2. $numeros=array(20.15, 20.95, 20.64, 20.24, 51.95, 16);
  3. foreach($numeros as $numero){
  4.     //primero vemos si el numero tiene punto
  5.     if($pos=strpos($numero,".")){
  6.       //luego obtenemos lo que esta despues de ese punto
  7.       $decimal=substr($numero,$pos);
  8.       //verificamos si NO es .95
  9.       if($decimal!=".95"){
  10.         // si no es .95 borramos el decimal
  11.         $numero=substr($numero,0,$pos);
  12.       }
  13.     }
  14.     echo $numero."<br>";
  15. }
  16. ?>

y me devuelve esto:

20
20.95
20
20
51.95
16

dejando solo los que tienen .95, así que algo hiciste mal.

probando el código deCarxl, dice que no se encuentra el .95 en ninguno de los casos. -karma
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #8 (permalink)  
Antiguo 10/06/2011, 07:45
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 7 meses
Puntos: 70
Respuesta: Como hacer hack en precios

A mi me funciona a la perfección.

Stramin y Lepe, revisen bien como están copiando mi código, porque tal cual está, tal cual funciona.

Stramin, el hecho de que no te funcione a ti, no quiere decir que está mal. Tu código es de lo menos usable y práctico que he visto.

Saludos.
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #9 (permalink)  
Antiguo 10/06/2011, 07:53
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Como hacer hack en precios

Justo donde tengo el define('_PS_PRICE_DISPLAY_PRECISION_', 2); tengo debajo otras variables las cuales estan de este modo:

Código PHP:
define('_PS_PRICE_DISPLAY_PRECISION_'2);
define('PS_TAX_EXC'1);
define('PS_TAX_INC'0); 
Y he dejado esa parte añadiendo tu codigo de la siguiente manera:
Código PHP:
define('_PS_PRICE_DISPLAY_PRECISION_'2);

if(
$pos=strpos($numero,".")){
  
  
$decimal=substr($numero,$pos);
  if(
$decimal!=".95"){
    
$numero=substr($numero,0,$pos);
  }


define('PS_TAX_EXC'1);
define('PS_TAX_INC'0); 
De esta manera sin cambiar el display_precisin_, 2 por el 0 no hace nigun efecto dicho codigo porque continuan apareciendo los decimales, ¿Podria ser el problema la ubicacion donde estoy pegando tu codigo?

Saludos
  #10 (permalink)  
Antiguo 10/06/2011, 07:58
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años
Puntos: 336
Respuesta: Como hacer hack en precios

Código PHP:
Ver original
  1. <?php
  2. $arrayExcepcion = array('.95');
  3. $decimal = '5.95';
  4. if (in_array($decimal, $arrayExcepcion)) {
  5.     echo "El decimal {$decimal} se encontró!";
  6. } else {
  7.     echo "El decimal {$decimal} NO se encontró!";
  8. }
  9. ?>

imprime que no se encontró

o sea funciona si el número es exactamente .95, sin embargo la petición es "excepto en aquellos que terminen en ,95", o sea que puede ser 7.95, 8.95, 123.95, etc.

por lo tanto no funciona.

lepe: deberías dejar las variables de precisión, ese no es el camino, solo usa el if, para filtrar cada número, si continuas alterando las variables de precisión, no obtendrás resultados fiables
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #11 (permalink)  
Antiguo 10/06/2011, 08:03
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Como hacer hack en precios

Cita:
Iniciado por Carxl Ver Mensaje
A mi me funciona a la perfección.

Stramin y Lepe, revisen bien como están copiando mi código, porque tal cual está, tal cual funciona.

Stramin, el hecho de que no te funcione a ti, no quiere decir que está mal. Tu código es de lo menos usable y práctico que he visto.

Saludos.
Hola Carxl, dime por favor si el orden en el que pego tu codigo esta correcto:
Código PHP:
define('_PS_PRICE_DISPLAY_PRECISION_'0);
$arrayExcepcion = array('.95');
$decimal '.95';
if (
in_array($decimal$arrayExcepcion)) {
    echo 
"El decimal {$decimal} se encontró!";
} else {
    echo 
"El decimal {$decimal} NO se encontró!";
}


define('PS_TAX_EXC'1);
define('PS_TAX_INC'0); 
Porque con este orden me da error el fichero php, saludos
  #12 (permalink)  
Antiguo 10/06/2011, 08:05
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 7 meses
Puntos: 70
Respuesta: Como hacer hack en precios

Cita:
Iniciado por stramin Ver Mensaje
imprime que no se encontró

o sea funciona si el número es exactamente .95, sin embargo la petición es "excepto en aquellos que terminen en ,95", o sea que puede ser 7.95, 8.95, 123.95, etc.

por lo tanto no funciona.


Creo que ninguno halló la lógica. Más no puedo hacer.
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #13 (permalink)  
Antiguo 10/06/2011, 10:33
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 16 años, 4 meses
Puntos: 25
Respuesta: Como hacer hack en precios

primero redonde a 2 deicmales, $tuNumero = round($num, 2);
segundo, divide partiendo de la coma a un arreglo, creo que se hace con explode, $arreglo = explode(",", $tuNumero);
tercero compara el arreglo, if($arreglo[1]=="95") echo "bingo";

mmmm, no lei tooo el post, espero pueda ayudarte en algo.
__________________
blog: hector2c.wordpress.com
email: [email protected]
  #14 (permalink)  
Antiguo 10/06/2011, 10:57
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años
Puntos: 336
Respuesta: Como hacer hack en precios

cierto, redondear a 2 los decimales asegura que no te pongan un 5.951

el método de hector2c usando explode() esta genial, no se me habia ocurrido XD
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #15 (permalink)  
Antiguo 10/06/2011, 13:53
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Como hacer hack en precios

Gracias por tu aporte hector, ¿Podrias poner el codigo todo seguido?

Carxl, no puedo entender la lógica de tu código porque no sé php, te agradeceria mucho que me comentases si esta bien tal como he puesto el codigo en el mensaje #11

Saludos
  #16 (permalink)  
Antiguo 12/06/2011, 07:32
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Como hacer hack en precios

Hola,

He intentado de multiples formas y ninguna funciona. ¿No sabriais añadir un codigo tomando como referencia el define('_PS_PRICE_DISPLAY_PRECISION_', 2); ?
Me refiero a empezar a definir los decimales modificando el codigo que anteriormente estaba en el fichero de una forma parecida a:

Código PHP:
** //primero quitamos los decimales // **
define('_PS_PRICE_DISPLAY_PRECISION_'0); 
** 
//luego buscamos el decimal 0.95 para hacer la excepción // **
if($price decimals termina en .95 define('_PS_PRICE_DISPLAY_PRECISION_'2); 
Saludos
  #17 (permalink)  
Antiguo 13/06/2011, 07:29
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años
Puntos: 336
Respuesta: Como hacer hack en precios

no

ya publiqué mas arriba que esa no es la manera de lograrlo.

PHP tiene sus funciones para controlar cadenas y decimales sin necesidad de estar definiendo esas variables.

hemos publicado varias posibles soluciones a tu problema pero sigues insistiendo en esa que no sirve, no creo que podamos hacer mucho mas por ti.
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #18 (permalink)  
Antiguo 13/06/2011, 07:54
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Como hacer hack en precios

Borrando el define('_PS_PRICE_DISPLAY_PRECISION_', 2); y pegando tu codigo en su lugar:
Código PHP:
//primero vemos si el numero tiene punto
if($pos=strpos($numero,".")){
  
//luego obtenemos lo que esta despues de ese punto
  
$decimal=substr($numero,$pos);
  
//verificamos si NO es .95
  
if($decimal!=".95"){
    
// si no es .95 borramos el decimal
    
$numero=substr($numero,0,$pos);
  }

no toma en cuenta ningun decimal de ninguna clase como te dije. Tu codigo podra funcionar ejecutando un fichero php individualmente pero en mi web no funciona porque la base de datos toma el valor de PS_PRICE, por eso decia si no es posible añadir el mismo codigo que indicaste pero acoplandolo al define('_PS_PRICE_DISPLAY_PRECISION_', 2);
saludos
  #19 (permalink)  
Antiguo 13/06/2011, 08:01
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años
Puntos: 336
Respuesta: Como hacer hack en precios

cual es el formato de PS_PRICE? un decimal con cuantos 0? si tiene mas de 2 decimales podrías limitar el substr a 3 caracteres (".95"):

if($pos=strpos($numero,".") and substr($numero,$pos,3)!=".95"){
$numero=substr($numero,0,$pos);
}

lo acorté un poco XD, lo malo es que tomara en cuenta el .951, no solo exactamente el .95

ahora si quieres que solo devuelva y compare con 2 decimales también se puede...
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #20 (permalink)  
Antiguo 13/06/2011, 08:08
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Como hacer hack en precios

lepe, creo que tienes un serio problema de logica, porque definir la constante y debajo poner un condicional no te va a solucionar las cosas, lo que debes hacer es crear una funcion para mostrar todos los precios y, dentro de esa funcion, detectar si el precio contiene .95 para mostrar dos decimales, de lo contrario, solo un entero.

No se si el script que estas usando ya cuenta con una funcion para tal efecto, si es asi, entonces solo debes modificar esa funcion y voila!
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: hack, precios
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 05:04.