Error en código PHP

Hola, al intentar ejecutar una actualización en una aplicación web que he diseñado me esta dando este error :
Fatal error: Call to undefined method empresa::modificar()
el codigo es el siguiente:
switch ($operacion) {
  case 'modificar':
 $mis_empresa->modificar($_POST[nombre],$_POST[estado],$_POST[proyecto],$_POST[cargo],$_POST[calificacion],$nume);break;
  case 'agregar':
  $mis_empresa->agregar($_POST[nombre],$_POST[estado],$_POST[proyecto],$_POST[cargo],$_POST[calificacion],$nume);break;
  case 'borrar':
  $mis_empresa->borrar($nume);break;
 }  
Me podéis decir porque y que es lo que estamal .
Muchas gracias

1 respuesta

Respuesta
1
Como estas, tu problema se debe a que estas usando cadenas en case'cadena' y en un switch case debes utilizar números enteros como muestra el siquinte ejemplo.
http://php.net/manual/en/control-structures.switch.php
te recomiendo que utilices if.
if ($operacion) {
  if ($operacion=='modificar')
{
 $mis_empresa->modificar($_POST[nombre],$_POST[estado],$_POST[proyecto],$_POST[cargo],$_POST[calificacion],$nume);break;

else if($operacion== 'agregar')
{  $mis_empresa->agregar($_POST[nombre],$_POST[estado],$_POST[proyecto],$_POST[cargo],$_POST[calificacion],$nume);break;
}
else if($operacion== 'borrar')
{
  $mis_empresa->borrar($nume);break;
}
}
Hola muchas gracias, por tu ayuda, he codificado como me aconsejas y me sigue dando el mismo error Fatal error: Call to undefined method empresa::modificar()
Como soy novato no se si este error es problema de código o de version. Estoy intentando generar una aplicación en PHP con Dreamweaver. ¿Se te ocurre algo del porque del error?
Muchas gracias
Fjmachicado lo que sucede es que estas intentado llamar el método de una clase llamada mis_empresa, es decir que estas utilizando programación orientada a objetos en php; desde la versión 5 de php se puede utilizar programación orientada a objetos y por el mensaje que está arrojando php es muy seguro que tangas instalado php 5.
Lo primero que tienes que hacer es definir la clase mis_empresa en un archivo php del mismo nombre, no es obligatorio usar el mismo nombre, pero es recomendable por motivos de orden y de compresión.
La definición de la clase mis_empresa y sus respectivos métodos sería algo así:
//archivo mis_empresa.php
<?php
class mis_empresa {
function modificar($nombre,$estado,$proyecto,$cargo,$calificacion,$nume)
{
    // Instrucciones del método modificar
    echo 'Método modificar OK';
}
function agregar($nombre,$estado,$proyecto,$cargo,$calificacion,$nume)
{    // Instrucciones del método agregar
    echo 'Método Agregar OK';
    }
function borrar($nume)
 {
// Instrucciones del método borrar
echo 'Método eliminar OK';
     }                               
}
?>
// Archivo opcion.php
<?php
//incluimos la clase mis_empres
require_once("mis_empresa.php");
// creamos un objeto de la clase mis_empres
$Empresa=new mis_empresa();
if ($operacion) {
  if ($operacion=='modificar')
{
$Empresa->modificar($_POST['nombre'],$_POST['estado'],$_POST['proyecto'],$_POST['cargo'],$_POST['calificacion'],$nume);
}
else if($operacion== 'agregar')
{  $Empresa->agregar($_POST['nombre'],$_POST['estado'],$_POST['proyecto'],$_POST['cargo'],$_POST['calificacion'],$nume);
}
else if($operacion== 'borrar')
{
  $Empresa->borrar($nume);
}
else {
echo 'opción no valida';    
    }
}
else {
echo 'opción tiene un valor nulo';    
    }
?>
Una segunda opción es las utilizar funciones de php, pero es me mejor que te habitúes a trabajar con programación orientada a objetos, para tu caso sería algo así:
//archivo funciones_empresa.php
<?php
function modificar($nombre,$estado,$proyecto,$cargo,$calificacion,$nume)
{
    // Instrucciones de la función modificar
    echo 'Metodo modificar OK';
}
function agregar($nombre,$estado,$proyecto,$cargo,$calificacion,$nume)
{
    // Instrucciones de la función  agregar
    echo 'Metodo Agregar OK';
    }
function borrar($nume)
 {
// Instrucciones de la función  borrar
echo 'Metodo eliminar OK';
     }                     
?>
//archivo opcion.php
<?php
//incluimos archivo de funciones
require_once("funciones_empresa.php");
if ($operacion) {
  if ($operacion=='modificar')
{
modificar($_POST['nombre'],$_POST['estado'],$_POST['proyecto'],$_POST['cargo'],$_POST['calificacion'],$nume);
}
else if($operacion== 'agregar')
{  
agregar($_POST['nombre'],$_POST['estado'],$_POST['proyecto'],$_POST['cargo'],$_POST['calificacion'],$nume);
}
else if($operacion== 'borrar')
{
 borrar($nume);
}
else {
echo 'opción no valida';    
    }
}
else {
echo 'opción tiene un valor nulo';    
    }
?>
Retiro lo dicho respecto a utilizar strings en estructuras switch en php, se pude hacer sin problemas. Tenía un pequeño cruce con java donde si se tiene que utilizar enteros, claro que con la reciente versión 7 de java se pueden utilizar strings en la estructura switch.
Así que esto es perfectamente válido para php:
<?php
//incluimos archivo de funciones
require_once("funciones_empresa.php");
switch ($operacion) {
  case 'modificar':
modificar($_POST['nombre'],$_POST['estado'],$_POST['proyecto'],$_POST['cargo'],$_POST['calificacion'],$nume);break;
  case 'agregar':
 agregar($_POST['nombre'],$_POST['estado'],$_POST['proyecto'],$_POST['cargo'],$_POST['calificacion'],$nume);break;
  case 'borrar':
borrar($nume);break;
 }   
?>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas