Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Ayuda con Clase y Funciones

Estas en el tema de Ayuda con Clase y Funciones en el foro de Frameworks y PHP orientado a objetos en Foros del Web. estoy haciendo este ejercicio y me salen varios errores Código PHP: <?php class  producto {     var  $trapeador ;  //variable donde se captura el # de trapeadores      var  $escoba ;  // variable donde se captura el # de escobas      ...
  #1 (permalink)  
Antiguo 15/06/2010, 00:01
 
Fecha de Ingreso: junio-2010
Mensajes: 5
Antigüedad: 13 años, 10 meses
Puntos: 0
Ayuda con Clase y Funciones

estoy haciendo este ejercicio y me salen varios errores

Código PHP:
<?php

class producto{
    var 
$trapeador//variable donde se captura el # de trapeadores
    
var $escoba// variable donde se captura el # de escobas
    
var $total_escoba// totaliza las escobas
    
var $total_trapeador//totaliza los trapeadores
    
var $factura// se crea la factura
    
var $precio_trapeador//precio unitario x trapeador
    
var $precio_escoba//precio unitario x escoba
    
var $iva_escoba//calcula el iva
    
var $iva_trapeador//calcula el iva
    

    /*function prod($trapeador,$escoba) {
       $this->trapeador=$trapeador;
       $this->escoba=$escoba;
       //$this->total_escoba=array(); 
       //$this->total_trapeador=array();*/
    
}
    function 
tottrap($total_trapeador) {
        
        if (
$trapeador 500)
        {
        
$this->precio_trapeador=$precio_trapeador=2500 
//si es menor a 500 cuesta 2500
        
} else {
        
$this->precio_trapeador=$precio_trapeador=2300 ;
//si es mayor a 500 cuesta 2300
        
}
        
$this->total_trapeador$total_trapeador=$trapeador $precio_trapeador;
        return 
$total_trapeador;
    }
    
    function 
ivatrap($iva_trapeador) {
        
        
$this->$iva_trapeador $total_trapeador 1.14//calculamos el iva de los trapeadores sin importar la cantidad
        
return $iva_trapeador;
    }

    function 
totescb($total_escoba) {
        
        if (
$escoba 500)
        {
        
$this->precio_escoba=$precio_escoba 2200;
        } else {
        
$this->precio_escoba=$precio_escoba 1950;
        }
        
$this->total_escoba=$total_escoba$escoba $precio_escoba;
    }

    function 
ivaescb($iva_escoba) {
        
        
$this->iva_escoba=$iva_escoba $total_escoba 1.16//calculamos en iva de las escobas sin importar la cantidad
        
    
}
    
    function 
fact($factura) {
    
        
$this->factura=$factura $iva_trapeador $iva_escoba//totalizamos los productos
    
}
    
    
 
//se instancian los objetos y se vuelven a llamar las variables con los calculos ya hechos
$producto1 = new producto ("$trapeador","$escoba"); 
$trapeador $_POST['trapeador'];
$escoba $_POST['escoba'];
$total_trapeador $_POST['total_trapeador'];
$total_escoba $_POST['total_escoba'];
$iva_trapeador $_POST['iva_trapeador'];
$iva_escoba $_POST['iva_escoba'];
$factura $_POST['factura'];

echo 
"La cantidad total de trapeadores sin IVA es de: " $producto1->tottrap();
echo 
"<br>";
echo 
"El total de los trapeadores con IVA es de: " $_POST['iva_trapeador'];
echo 
"<br>";
echo 
"La Cantidad total de escobas sin IVA es de: " $_POST['total_escoba'];
echo 
"<br>";
echo 
"El total de las escobas con IVA es de: " $_POST['iva_escoba'];
echo
"<br>";
echo 
"El total a pagar es de: " $_POST['factura'];
echo 
"<br>"
?>
<?php
//creamos el formulario para capturar los datos
?>
<html>
<body>
<form  name= "xyz" method="post" action=""> 
Digite el numero de trapeadores: 
<input type="text" name="trapeador" size="80">
<br>
Digite el numero de escobas: 
<input type="text" name="escoba" size="80">
<br>
<input type="submit" value="enviar"> 
<input type="reset" value="borrar"> 
<br>
</form>
<br>
<br>
<br>
..::Resultado::..
<br>
<br>
<br>
</body>
</html>
<?php

?>
si me pudieran colabrar, c los agradecerua enormemente
  #2 (permalink)  
Antiguo 15/06/2010, 06:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda con Clase y Funciones

es posible que nos digas los mensajes de error completos... o hay que adivinar??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 15/06/2010, 07:54
 
Fecha de Ingreso: agosto-2007
Mensajes: 10
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Ayuda con Clase y Funciones

Importante que nos mencione los errores que te muestras y aprovechando veo que estas usando POO pero PHP4, pudieras empezar con el pie derecho e ir bien con PHP5...

http://www.php.net/manual/en/language.oop5.php
  #4 (permalink)  
Antiguo 15/06/2010, 12:29
 
Fecha de Ingreso: junio-2010
Mensajes: 5
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Ayuda con Clase y Funciones

Cita:
Iniciado por pateketrueke Ver Mensaje
es posible que nos digas los mensajes de error completos... o hay que adivinar??
ok, disculpa, el error que me sale es que quiero que me haga el calculo al capturar en dos cajas de texto llamadas trapeador y escoba.
el error me sale en la linea 73, especificamente esto:
Código PHP:
echo "La cantidad total de trapeadores sin IVA es de: " $producto1->tottrap(); 
y cuando lo ejecuto este es el error:
"Fatal error: Call to undefined method producto::tottrap() in C:\wamp\www\Ejercicios\2.php on line 73"

y del comentario de deivinsontejeda te comento que antes las funciones las tenia con"function __construct()" y las cambie de nombre pero ahi si me disculpas la ignorancia de php4 a php5. antes me guie con un ejm en la web porque la verdad me estaba complicando la vida al hacer el ejercicio.

a todos, les agradezco el interes por ayudarme.

Última edición por cellularcd; 15/06/2010 a las 12:35
  #5 (permalink)  
Antiguo 15/06/2010, 13:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda con Clase y Funciones

lo que sucede es que estás cerrando tu clase antes de la función -que debería ser método- tottrap()

si, es enserio... pon atención y date cuenta de que cierras la clase, y las funciones las dejas fuera de la misma... cuando deberían ir dentro, para comportarse tal cual métodos!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 15/06/2010, 13:55
 
Fecha de Ingreso: junio-2010
Mensajes: 5
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Ayuda con Clase y Funciones

Cita:
Iniciado por pateketrueke Ver Mensaje
lo que sucede es que estás cerrando tu clase antes de la función -que debería ser método- tottrap()

si, es enserio... pon atención y date cuenta de que cierras la clase, y las funciones las dejas fuera de la misma... cuando deberían ir dentro, para comportarse tal cual métodos!!
efectivamente tenias razon. vi varios ejemplos y las funciones estaban dentro de la clase. pero... ni fu ni fa. no me quiere mostrar el valor.
para la muestra de un boton:
Código PHP:
class producto{
    var 
$trapeador//variable donde se captura el # de trapeadores
    
var $escoba// variable donde se captura el # de escobas
    
var $total_escoba// totaliza las escobas
    
var $total_trapeador//totaliza los trapeadores
    
var $factura// se crea la factura
    
var $precio_trapeador//precio unitario x trapeador
    
var $precio_escoba//precio unitario x escoba
    
var $iva_escoba//calcula el iva
    
var $iva_trapeador//calcula el iva
function tottrap() {
        
        if (
$trapeador 500)
        {
        
$this->precio_trapeador=$precio_trapeador=2500 ;
        } else {
        
$this->precio_trapeador=$precio_trapeador=2300 ;
        }
        
$this->total_trapeador$total_trapeador=$trapeador $precio_trapeador;
        return 
$total_trapeador;
    }
}
$producto1 = new producto("$trapeador","$escoba"); 
echo 
"La cantidad total de trapeadores sin IVA es de: ".$producto1->tottrap(); 
no incluyo el html del formulario porque es exactamente el mismo del 1º mensaje.
y aun asi, m deja ingresar todo, pero no el resultado.

Última edición por cellularcd; 15/06/2010 a las 14:54 Razón: quite el comentario en el Return para que devolviera el valor gracasia a GatorV
  #7 (permalink)  
Antiguo 15/06/2010, 13:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ayuda con Clase y Funciones

Tu función tottrap() no regresa nada, es por eso que no ves nada en el echo.

Saludos.
  #8 (permalink)  
Antiguo 15/06/2010, 14:01
Avatar de dots3r  
Fecha de Ingreso: julio-2008
Mensajes: 106
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Ayuda con Clase y Funciones

O.o!
Supongo que return $total_trapeador esta comentado por accidente al poner aquí el codigo no?
__________________
Ideorama. Su presencia en Internet
  #9 (permalink)  
Antiguo 15/06/2010, 14:53
 
Fecha de Ingreso: junio-2010
Mensajes: 5
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Ayuda con Clase y Funciones

Cita:
Iniciado por dots3r Ver Mensaje
O.o!
Supongo que return $total_trapeador esta comentado por accidente al poner aquí el codigo no?
claro, aunque le quite el comentario, muestra 0 en la pagina como resultado. al parecer (desde mi punto de vista) que los trapeadores se estan multiplicando por cero y ni esta tomando los 2500 o 2300 para hacer el calculo
  #10 (permalink)  
Antiguo 15/06/2010, 15:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ayuda con Clase y Funciones

Pues viendo tu clase no veo de donde obtienes las variables $trapeador, $precio_trapeador, $total_trapeador.

Recuerda que si quieres usar los valores tienes que asignarlos y usarlos con $this:
Código PHP:
Ver original
  1. class foo
  2. {
  3.        private $_num1;
  4.        private $_num2;
  5.  
  6.        public function __construct($num1, $num2)
  7.        {
  8.               $this->_num1 = $num1;
  9.               $this->_num2 = $num2;
  10.        }
  11.  
  12.        public function suma()
  13.        {
  14.               return $this->_num1 + $this->_num2;
  15.        }
  16. }
  17.  
  18. $foo = new foo(1, 2);
  19. echo $foo->add();

Saludos.
  #11 (permalink)  
Antiguo 15/06/2010, 16:33
 
Fecha de Ingreso: junio-2010
Mensajes: 5
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Ayuda con Clase y Funciones

Cita:
Iniciado por GatorV Ver Mensaje
Pues viendo tu clase no veo de donde obtienes las variables $trapeador, $precio_trapeador, $total_trapeador.

Recuerda que si quieres usar los valores tienes que asignarlos y usarlos con $this
Saludos.

el formulario html esta en el primer mensaje y solo hago la captura de cuantas unidades de escobas y trapeadores.
el precio del trapeador es bajo una condicional es decir que son dos valores distintos porque tiene que determinar si son mas de 500 o menos de 500.
y el total vendria siendo del resultado de la condicional * lo que capturo de # de trapeadores.
tu aporte es logico, pero el minusculo problema es que ya esos valores estan ingresados, lo que necesito es capturarlos y hacer el calculo correspondiente ya que me sale 0.

Código PHP:
<?php

class producto{
    var 
$trapeador//variable donde se captura el # de trapeadores
    
var $escoba// variable donde se captura el # de escobas
    
var $total_escoba// totaliza las escobas
    
var $total_trapeador//totaliza los trapeadores
    
var $factura// se crea la factura
    
var $precio_trapeador//precio unitario x trapeador
    
var $precio_escoba//precio unitario x escoba
    
var $iva_escoba//calcula el iva
    
var $iva_trapeador//calcula el iva
function tottrap($trapeador$precio_trapeador) {
        
        if (
$trapeador 500)
        {
        
$this->precio_trapeador=2500;
        } else {
        
$this->precio_trapeador=2300;
        }
        
$this->total_trapeador$total_trapeador=$trapeador $precio_trapeador;
        return 
$total_trapeador;
    }
}
//se instancian los objetos y se vuelven a llamar las variables con los calculos ya hechos
$producto1 = new producto("$total_trapeador"); 
echo 
"La cantidad total de trapeadores sin IVA es de: ".$producto1->tottrap($trapeador$precio_trapeador);
echo 
"<br>";
?>
<?php
//creamos el formulario para capturar los datos
?>
<html>
<body>
<form  name= "xyz" method="post" action=""> 
Digite el numero de trapeadores: 
<input type="text" name="trapeador" size="80">
<br>
Digite el numero de escobas: 
<input type="text" name="escoba" size="80">
<br>
<input type="submit" value="enviar"> 
<input type="reset" value="borrar"> 
<br>
</form>
<br>
<br>
<br>
..::Resultado::..
<br>
<br>
<br>
</body>
</html>
si no me hago entender, me avisan para ser mas explicito.
gracias por sus recomendaciones
  #12 (permalink)  
Antiguo 15/06/2010, 20:10
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: Ayuda con Clase y Funciones

Que tal

Como mínimo deberías iniciar simpre las clases en Mayúsculas, usar camelcase en atributos y métodos, y, por sobre todas las cosas, usar sintaxis PHP5!

Saludos!
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #13 (permalink)  
Antiguo 16/06/2010, 09:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ayuda con Clase y Funciones

Ok entiendo lo que requieres pero en tu código que expones no muestras de donde estas trayendo esas variables, y si estas descansando sobre register_globals, creo vas a tener un grave problema más tarde cuando migres a un servidor de producción.

Por otro lado nunca defines el constructor de tu clase por lo que tu clase nunca se entera del total, dejo aqui tu código sin pasar las variables del formulario pero eso ya es algo que debes de hacer tú:
Código PHP:
Ver original
  1. class Producto
  2. {
  3.          private $_totalProducto;
  4.  
  5.          public function __construct($total)
  6.          {
  7.                   $this->_totalProducto = $total;
  8.          }
  9.  
  10.          public function getPrecioTotal()
  11.          {
  12.                   if ($this->_totalProducto < 500) {
  13.                          $precioUnitario = 2500;
  14.                   } else {
  15.                          $precioUnitario = 2300;
  16.                   }
  17.  
  18.                   return $this->_totalProducto * $precioUnitario;
  19.          }
  20. }
  21.  
  22. $Trapeadores = new Producto(599);
  23. echo "El total sin IVA es: $" . number_format($Trapeadores->getPrecioTotal());

Saludos.

Etiquetas: clases, funciones, php, poo
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 16:09.