Comunidad de diseño web y desarrollo en internet online

Problemas con funciones Call to undefined function:..

Citar            
MensajeEscrito el 15 Feb 2008 01:29 pm
Buenos días a todos.

Para empezar tengo un objeto llamado carrito el cual es un shopping cart de imagenes, el ha venido trabajando bien hasta que le agregue una nueva funcion cotiza_producto() que lo que hace es colocar el precio del producto que ya esta dentro del carrito de compra (esto debido a que es una venta de fotos y no todas tienen el mismo precio así que depende del uso), en fin cuando hago el llamado a esta función tengo el siguiente error: Fatal error: Call to undefined function: cotiza_producto() in /home/digitals/public_html/fotogaleria/mostrar_precio.php on line 45

He aqui los códigos
carrito2.php

Código :

<?php 
class carrito { 
    //atributos de la clase 
    var $num_productos; 
    var $array_id_prod; 
    var $array_nombre_prod; 
   var $array_cotizado;
   var $array_rubro;
   var $array_cod_precio;
 
     //constructor. Realiza las tareas de inicializar los objetos cuando se instancian 
    //inicializa el numero de productos a 0 
    function carrito () { 
       $this->num_productos=0; 
    } 

    //Introduce un producto en el carrito. Recibe los datos del producto 
    //Se encarga de introducir los datos en los arrays del objeto carrito 
    //luego aumenta en 1 el numero de productos 
    function introduce_producto($id_prod,$nombre_prod,$cotizado,$rubro,$cod_precio){ 
      $this->array_id_prod[$this->num_productos]=$id_prod; 
       $this->array_nombre_prod[$this->num_productos]=$nombre_prod; 
      $this->array_cotizado[$this->num_productos]=$cotizado; 
       $this->array_rubro[$this->num_productos]=$rubro; 
      $this->array_cod_precio[$this->num_productos]=$cod_precio; 
       $this->num_productos++; 
    } 

    //Muestra el contenido del carrito de la compra 
    //ademas pone los enlaces para eliminar un producto del carrito 
    function imprime_carrito(){ 
      $sw="false";
      for($a=0;$a<$this->num_productos;$a++){
          if($this->array_id_prod[$a]!=0){ 
            $sw = "true";
         }
         else {
            $sw = "false";
         }
      }
      if($sw=="true") {
         $mensaje= "Imágenes que actualmente se encuentrarn en su carrito de compras.";
      }
      else {$mensaje = "No hay nada en el carrito";}
      echo "<table border=0 cellspacing=0 cellpadding=0 align=center>
         <tr>
            <td colspan=2 class='titulo_verde'>".$mensaje."</td>
         </tr>";
      echo "<tr><td>&nbsp;</td></tr>";
       for ($i=0;$i<$this->num_productos;$i++){ 
          if($this->array_id_prod[$i]!=0){ 
           $imagen_id = $this->array_id_prod[$i];
         include("conexion.php");
         $sql = "select archivo from galeria where cod_imagen=" . $imagen_id;
         
         $result = mysql_query($sql);
         if ($row = mysql_fetch_array($result))
         $imagen_foto = $row["archivo"];
          echo "<tr><td colspan=2>&nbsp;</td></tr>";
          echo "<tr><td ><img alt=foto src='galeria/thumbs/" . $imagen_foto ."'/></td>";
          echo "<td><table border=0>
                  <tr><td class='link_menu' align='left'># Imagen:</td><td class='link_menu'>".$imagen_id."</td></tr>
                  <tr><td class='link_menu' align='left'>Nombre:</td><td class='link_menu'>". $this->array_nombre_prod[$i] ."</td></tr>
                     
                  <tr><td>&nbsp;</td><td align=left><a class='titulo_verde' href='eliminar_producto2.php?linea=".$i."'>Eliminar producto</a></td><td></td></tr>
                  <tr><td>&nbsp;</td><td align=left><a class='titulo_verde' href=cotizacion2.php?linea=".$i."&id=".$this->array_id_prod[$i].">Cotizar esta imagen</a></td><td></td></tr>
               </table>
            </td>
         </tr>   ";
         echo "<tr><td colspan=2 style='border-bottom-color:#CCCCCC; border-bottom-style:dotted; border-bottom-width:thin'>&nbsp;</td></tr>";
      
          } 
        
       } 
      
    } 
   
   function descarga_carrito(){ 
       $suma = 0; 
       $datos = "";
      for ($i=0;$i<$this->num_productos;$i++){ 
            if($this->array_id_prod[$i]!=0){ 
            $arreglo[$i] = array("id"=>$this->array_id_prod[$i],
                            "nombre"=>$this->array_nombre_prod[$i],
            
                           );
              
          }
       } 
       $datos["arreglo"]= $arreglo;
      return($datos);
    } 

    //elimina un producto del carrito. recibe la linea del carrito que debe eliminar 
    //no lo elimina realmente, simplemente pone a cero el id, para saber que esta en estado retirado 
    function elimina_producto($linea){ 
       $this->array_id_prod[$linea]=0; 
    } 
   function revisa_carrito($codigo){
   $sw="false";
      for($i=0;$i<$this->num_productos;$i++){
         if ($this->array_id_prod[$i] == $codigo){
            $sw = "true";
         }
         else {
            $sw = "false";
         }
      }
      return $sw;
   }
} 
   function dato_producto($linea){
      $arreglo[$linea] = array("id"=>$this->array_id_prod[$linea],
                            "nombre"=>$this->array_nombre_prod[$linea],
      );
      return($arreglo);                     
   }
   [color=red]function cotiza_producto($linea,$cotizado,$rubro,$cod_precio,$dolares){ 
      $this->array_cotizado[$linea]=$cotizado; 
       $this->array_rubro[$linea]=$rubro; 
      $this->array_cod_precio[$linea]=$cod_precio; 
    } [/color]
   
?>

y este es el codigo de mostrar_precio.php

Código :

<?php   
include("carrito2.php");
session_start();
   
   $uso = $_POST["uso"];
   $especifico = $_POST["especifico"];
   $tamanio = $_POST["tamanio"];
   $tiraje = $_POST["tiraje"];
   $distribucion = $_POST["distribucion"];
   $territorio=$_POST["territorio"];
   $fecha=$_POST["fecha"];
   $duracion=$_POST["duracion"];
   $user_id =7;//$_COOKIE["id"];
   $donde = $_REQUEST["donde"];
   $alcance = $_REQUEST["alcance"];
   $id = $_REQUEST["id"];
   $linea = $_REQUEST["linea"];
   
   if($uso==1){
      $sql = "select precio,dolares,cod_precio from precios_libro where codigo=".$especifico." and tiraje=".$tiraje." and tamano_pag='".$tamanio."' and dist_elect=".$distribucion;
   } else if ($uso==2){
      $sql = "select precio,dolares,cod_precio from precios_revista where codigo=".$especifico." and tiraje=".$tiraje." and tamano_pag='".$tamanio."' and dist_elect=".$distribucion;
   } else if ($uso==3) {
      $sql = "select precio,dolares,cod_precio from precios_periodico where codigo=".$especifico." and tiraje=".$tiraje." and dist_elect=".$distribucion;
   } else if ($uso==4) {
      $sql = "select precio,dolares,cod_precio from precios_movil where codigo=".$especifico." and tiraje=".$tiraje;
   } else if ($uso==5){
      $sql = "select precio,dolares,cod_precio from precios_web where codigo=".$especifico." and uso=".$uso." and alcance=".$alcance;
   } else if ($uso==6){
      $sql = "select precio,dolares,cod_precio from precios_tv where codigo=".$especifico." and tamano=".$tamanio;
   }
   include("conexion.php");
   //echo $sql;
   $result = mysql_query($sql);
   if(!$result) echo "Mysql Error: " . mysql_error();
   if($row=mysql_fetch_array($result)){
      $precio = $row["precio"];
      $dolares = $row["dolares"];
      $cod_precio = $row["cod_precio"];
   }
   
   if ($linea==""){
      $_SESSION["carrito"]->introduce_producto($id,$nombre_prod,$cotizado,$rubro,$cod_precio);
   } else {
      $_SESSION["carrito"]->cotiza_producto($linea,$cotizado,$uso,$cod_precio,$precio,$dolares);
   }
   include("resumen_cotizacion.php");
?>


Se que este error da cuando la funcion no existe pero ya me asegure que alli esta, que la estoy llamando con el nombre correcto y aun asi no funciona.

Espero me puedan ayudar.
Gracias
Ana.

Por maygreth

20 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 15 Feb 2008 02:16 pm
Hola, ya lo resolvi.

Resulta que tenia declarada la función fuera de las llaves { } que definian el objeto carrito.

Igualmente, gracias.
Ana

Por maygreth

20 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 20 Feb 2008 04:14 am
¿Usas php 4? Si es asi, no le hagas caso a la primera sugerencia, pero deberias actualizar tu servidor a php 5.
Sugerencias
  1. Es bueno que uses los modificadores de visibilidad private, protected y public. Referencia:
    http://www.php.net/manual/es/language.oop5.visibility.php
  2. Deberias evitar en lo maximo imprimir (echo) dentro de una clase, pierde portabilidad y usabilidad tu código. Pues todos los proyectos no tienen el mismo html.
  3. Deberias aprender a usar un sistema de plantillas, para que no mezcles código php y html


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 20 Feb 2008 01:11 pm
Gracias Maikel,
Tomaré en cuenta tus sugerencias. Si uso php5.

Saludos.
Ana.

Por maygreth

20 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 10 Mar 2008 11:49 pm
Hola! buenas Noches!
Puedes decirme como hacer un carrito de compras en flash? veo que ya creaste alguno y yo tengo ahorita ese problema, he buscado por todos lados pero no encuentro casi nada de información.
Espero que puedas ayudarme enviandome cualquier información que tengas disponible...
[email protected]
Muchas gracias!!! :D

Por anibrimo84

29 de clabLevel



 

Venezuela

msie7
Citar            
MensajeEscrito el 19 Jul 2008 02:46 pm
Estás seguro que no encontraste nada? Yo no sé qué hacer con toda la info que encontré solo en Cristalab. Ni hablar si me pongo a navegar por la web. Usa los buscadores buscando "carrito" o "carrito compras", y pedite otro par de ojos para soportar la entrada de información en tus pupilas. Vamos, picarón... que no es tan difícil hacerlo. Y es mucho más satisfactorio a que te lo haga otro.

Por masmorsa

1 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Sep 2008 11:03 pm
en mi caso tambien encontre mucha informacion ..pero ninguna funciono hasta ahora
solo cuando alguien sujirio(se escribira asi ? :P) algo sobre arrays bidimensionales intente pero ese push me da muchos problemasxD

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.