Duda sobre variables

Iniciado por Grave, 17 Junio 2014, 10:59 AM

0 Miembros y 1 Visitante están viendo este tema.

Grave

Alguien sabe porque este codigo me da error?

<?php
 
//no direct access
defined('_JEXEC') or die('Acceso restringido'); 

class 
Organismo
{
  private 
$idorganismo=0;
  private 
$nombre="";
  private 
$pais="";
  private 
$descripcion="";
  
  public function 
__construct() { 
    
$idorganismo=$_POST['codigo'];
    
$nombre=$_POST['nombre'];
    
$pais=$_POST['continente'];
    
$descripcion=$_POST['informacion'];
    
$db JFactory::getDBO();   
  }
  public function 
crear(){
    
$query "INSERT INTO organismos VALUES(" $idorganismo ", '" $nombre "', '" $pais "', '" $descripcion "');";
    
$db->setQuery($query); 
    return 
$db->query();
  }
  public function 
editar(){
    echo 
$nombre;
    
$query "UPDATE organismos SET nombre='" $nombre "', continente='" $pais "', informacion='" $descripcion "' WHERE codigo="$idorganismo ";";
    
$db->setQuery($query); 
    return 
$db->query();
  }
  public function 
eliminar(){
    
$query "DELETE FROM organismos WHERE codigo='" $idorganismo "';";
    
$db->setQuery($query); 
    return 
$db->query();
  }
}
$input = new JInput;
$event $input->get('event''','string');
$res=false;
if(
$event != "")
{
  
$org = new Organismo;
  if(
$event  == 'new')
    
$res $org->crear();
  if(
$event == 'edit')
    
$res $org->editar();
  if(
$event == 'del')
    
$res $org->eliminar();
}
$layout $params->get('layout''default');
require 
JModuleHelper::getLayoutPath('mod_catorg'$layout); 

 
?>




Notice: Undefined variable: nombre in C:\xampp\htdocs\joomla\modules\mod_catorg\mod_catorg.php on line 26

Notice: Undefined variable: nombre in C:\xampp\htdocs\joomla\modules\mod_catorg\mod_catorg.php on line 27

Notice: Undefined variable: pais in C:\xampp\htdocs\joomla\modules\mod_catorg\mod_catorg.php on line 27

Notice: Undefined variable: descripcion in C:\xampp\htdocs\joomla\modules\mod_catorg\mod_catorg.php on line 27

Notice: Undefined variable: idorganismo in C:\xampp\htdocs\joomla\modules\mod_catorg\mod_catorg.php on line 27

Notice: Undefined variable: db in C:\xampp\htdocs\joomla\modules\mod_catorg\mod_catorg.php on line 28

Fatal error: Call to a member function setQuery() on a non-object in C:\xampp\htdocs\joomla\modules\mod_catorg\mod_catorg.php on line 28
"y el conocimiento os hara libres"

Module Console1
   Console.Write("Hello Word")
   Console.ReadLine()
End Module
http://aion.cr0n0triger.operaunite.com/

engel lex

Estoy en el cel asi que no veo muy bien, pero casi seguro que estas accediendo a la variable mal

Para acceder a las variabled de otro scope en una misma clase, debea usar $this->variable
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

marko1985

#2
Hola,

En el constructor deber llamar a los atributos que has definido con la siguiente sintáxis.

$this->TU_VARIABLE, sino las variables que has definido dentro de __construct se quedan cómo locales y no son visibles al resto de métodos, por otra parte tampoco estarás modificando $idorganismo.

Para acceder a estas variables lo mismo debes llamarlas mediante this->TUVARIABLE
si fueran constantes con self::

Prueba de esta forma

Código (php) [Seleccionar]
<?php
 
//no direct access
defined('_JEXEC') or die('Acceso restringido'); 

class 
Organismo
{
  protected 
$idorganismo=0;
  protected 
$nombre;
  protected 
$pais;
  protected 
$descripcion;
  public      
$db;
  
  public function 
__construct() { 
    
$this->$idorganismo=$_POST['codigo'];
    
$this->$nombre=$_POST['nombre'];
    
$this->$pais=$_POST['continente'];
    
$this->$descripcion=$_POST['informacion'];
    
$this->$db JFactory::getDBO();   
  }
  public function 
crear(){
    
$query "INSERT INTO organismos VALUES(" $this->$idorganismo ", '" $this->$nombre "', '" $this->$pais "', '" $this->$descripcion "');";
    
$this->db->setQuery($query); 
    return $
$this->db->query();
  }
  public function 
editar(){
    echo 
$nombre;
    
$query "UPDATE organismos SET nombre='" $this->$nombre "', continente='" $this->$pais "', informacion='" $this->$descripcion "' WHERE codigo="$this->$idorganismo ";";
    
$this->$db->setQuery($query); 
    return 
$db->query();
  }
  public function 
eliminar(){
    
$query "DELETE FROM organismos WHERE codigo='" $this->$idorganismo "';";
    
$this->$db->setQuery($query); 
    return 
$this->$db->query();
  }
}
$input = new JInput;
$event $input->get('event''','string');
$res=false;
if(
$event != "")
{
  
$org = new Organismo;
  if(
$event  == 'new')
    
$res $org->crear();
  if(
$event == 'edit')
    
$res $org->editar();
  if(
$event == 'del')
    
$res $org->eliminar();
}
$layout $params->get('layout''default');
require 
JModuleHelper::getLayoutPath('mod_catorg'$layout); 

 
?>


Espero que no se me haya escapado ningun te recomiento esta página sobre visibilidad en PHP http://www.php.net//manual/es/language.oop5.properties.php

Grave

gracias por la ayuda me ha funcionado :)
"y el conocimiento os hara libres"

Module Console1
   Console.Write("Hello Word")
   Console.ReadLine()
End Module
http://aion.cr0n0triger.operaunite.com/