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
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
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
<?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
gracias por la ayuda me ha funcionado :)