Foros del Web » Programando para Internet » PHP »

Problemas insertando datos

Estas en el tema de Problemas insertando datos en el foro de PHP en Foros del Web. Hola a todos. Les comento que estoy aprendiendo a programar en php y utilizando como motor de bd a postgres. Pero me ha resultado un ...
  #1 (permalink)  
Antiguo 01/03/2010, 23:03
Juan Diego
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Problemas insertando datos

Hola a todos.

Les comento que estoy aprendiendo a programar en php y utilizando como motor de bd a postgres.

Pero me ha resultado un problema y no lo he podido identificar. Cuando estoy insertando los datois, estos nunca se me insertan cuando consulto en la base de datos y me muestra el siguiente error:
Warning: pg_query() expects parameter 1 to be resource, string given in C:\wamp\www\SISMAD\Administrador\Administrador.cla ss.php on line 44


Les dejo el codigo que utilizo.

1- Mando el Formulario
2- Aca me recibe el formulario



<?php
include 'Administrador.class.php';
$adm= new Administrador();
$adm->setnombre($_POST['nombre']);
$adm->setusuario($_POST['usuario']);
$adm->setpass($_POST['pass']);
$adm->insertar();
?>

<script>
alert("Guardado con exito");
// window.location= 'index.php';
</script>

3- Viene a la funcion insertar.

public function __construct() {

}

// Set y Get Nombre
public function setnombre($nombre) {
$this->nombre = $nombre;
}
public function getnombre() {
return $this->nombre;
}

// Set y Get Nombre de Usuario
public function setusuario($usuario) {
$this->usuario = $usuario;
}

public function getusuario() {
return $this->usuario;
}

// Set y Get Password
public function setpass($pass) {
$this->pass = $pass;
}

public function getpass() {
return $this->pass;
}

//Funcion Insertar Servicio
public function insertar() {
parent::conectar();

$insertar=pg_query("insert into 'login' (nombreu, nombreusuario, password) values ('".$this->nombre."','".$this->usuario."','".$this->pass."')",parent::$this->Conexion);
echo "Insertado con exito";
echo "dato".$this->nombre;
}


Espero me puedan ayudar.

Saludos y Gracias de antemano.
  #2 (permalink)  
Antiguo 02/03/2010, 07:53
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Problemas insertando datos

Estas heredando el resource de conexion? Estaba mal esta linea (ya la corregi)

Código PHP:
Ver original
  1. $insertar=pg_query("insert into 'login' (nombreu, nombreusuario, password) values ('".$this->nombre."','".$this->usuario."','".$this->pass."')",parent::Conexion);
__________________
HV Studio
Diseño y desarrollo web
  #3 (permalink)  
Antiguo 02/03/2010, 09:25
Juan Diego
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas insertando datos

Hola amigo hice lo uqe me hiciste y cambie esta linea:
$insertar=pg_query("insert into 'login' (nombreu, nombreusuario, password) values ('".$this->nombre."','".$this->usuario."','".$this->pass."')",parent::$this->Conexion);
Por esta:

$insertar=pg_query("insert into 'login' (nombreu, nombreusuario, password) values ('".$this->nombre."','".$this->usuario."','".$this->pass."')",parent::Conexion);

Y me muestra el siguiente error:
Fatal error: Undefined class constant 'Conexion' in C:\wamp\www\SISMAD\Administrador\Administrador.cla ss.php on line 44


Coloco la clase conexion de la cual hereda:


<?php
class Conexion {
protected $Conexion;
protected $db;


public function __construct () {
$this->Conexion='';
$this->db='';
}

//Get de la conexion
public function getConexion() {
return $this->Conexion;
}

//funcion para realizar la Conexionn
public function conectar() {
/*
* Define PostgreSQL database server connect parameters.
*/
define('PGHOST','localhost');
define('PGPORT',5432);
define('PGDATABASE','bdinelfu');
define('PGUSER', 'postgres');
define('PGPASSWORD', 'admin');
define('PGCLIENTENCODING','LATIN1');
define('ERROR_ON_CONNECT_FAILED',' No se puede conectar con el servidor de DB ahora!');

$Conexion = pg_connect('host=' . PGHOST . ' port=' . PGPORT . ' dbname=' . PGDATABASE . ' user=' . PGUSER . ' password=' . PGPASSWORD)
or die('No pudo conectarse: ' . pg_last_error());


}

}
?>

Ademas informo que la tabla login pertenece a una base de datos llamada bdinelfu.

Codigo sql de la tabla:

CREATE TABLE LOGIN (
idlogin serial NOT NULL,
nombrel char(50) NOT NULL,
nombreusuario char(50) NOT NULL,
password char(50) NOT NULL,
PRIMARY KEY(idlogin)
);

Espero me puedan ayudar, ya que por este error he estado varado una semana sin poder adelantar mi proyecto.

Saludos
  #4 (permalink)  
Antiguo 02/03/2010, 10:18
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Problemas insertando datos

Ah, entendi mal. Disculpas!
Cuando heredas, la sintaxis es la misma que si tuvieses recien declarada la propiedad, ejemplo

Código PHP:
<?php
class Padre{
    protected 
$nombre;
}

class 
Hijo extends Padre{
    protected 
$edad;
    
    public function 
__construct($nombre,$edad){
        
$this->nombre $nombre;
        
$this->edad $edad;
    }
}

$hijo = new Hijo('hernan',22);
echo 
'<pre>';
print_r($hijo);
echo 
'</pre>';
?>
Solucion:

En el metodo de conexion a la base de datos, deberias hacer esto

Código PHP:
public function conectar() {
define('PGHOST','localhost');
define('PGPORT',5432);
define('PGDATABASE','bdinelfu');
define('PGUSER''postgres');
define('PGPASSWORD''admin');
define('PGCLIENTENCODING','LATIN1');
define('ERROR_ON_CONNECT_FAILED',' No se puede conectar con el servidor de DB ahora!');

# guardas el resource en esta propiedad
$this->Conexion pg_connect('host=' PGHOST ' port=' PGPORT ' dbname=' PGDATABASE ' user=' PGUSER ' password=' PGPASSWORD)
or die(
'No pudo conectarse: ' pg_last_error());


Y luego (en tu clase heredada)

Código PHP:
Ver original
  1. public function insertar() {
  2. parent::conectar();
  3.  
  4. $insertar=pg_query("insert into 'login' (nombreu, nombreusuario, password) values ('".$this->nombre."','".$this->usuario."','".$this->pass."')",$this->Conexion);
  5. echo "Insertado con exito";
  6. echo "dato".$this->nombre;
  7. }

NOTA: ya se fue a OOP este tema =P
__________________
HV Studio
Diseño y desarrollo web
  #5 (permalink)  
Antiguo 02/03/2010, 11:41
Juan Diego
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas insertando datos

Hola amigo.. Te agradezco de verdad por intentar ayudarme.

Te comento que hice las correcciones que me dijiste y me salio el mismo mensaje.


Warning: pg_query() expects parameter 1 to be resource, string given in C:\wamp\www\SISMAD\Administrador\Administrador.cla ss.php on line 44

Como puedes ver en la clase Administrador, en esta parte:

$insertar=pg_query("insert into 'login' (nombreu, nombreusuario, password) values ('".$this->nombre."','".$this->usuario."','".$this->pass."')",$this->Conexion);
echo "Insertado con exito";
echo "dato".$this->nombre;


Al final me muestra que los datos se insertaron con exito y me muestra el nombre que inserte ( echo "dato".$this->nombre). Eso significa que si estan cogiendo los valores. Hay un error en el momento de la insersion, no se si sea porque la variable idlogin es de tipo serial.

Saludos
  #6 (permalink)  
Antiguo 02/03/2010, 13:57
 
Fecha de Ingreso: marzo-2010
Mensajes: 2
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problemas insertando datos

Hola, el problema es que está enviando mal los parámetros a pg_query [1]. La conexión es opcional (sino se manda, se toma la última establecida con pg_connect()) pero si se manda, es el primer parámetro, no el segundo.

Saludos

[1] http://co.php.net/manual/en/function.pg-query.php
  #7 (permalink)  
Antiguo 02/03/2010, 14:43
Juan Diego
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas insertando datos

Gracias Cistianpark.....

Ya solucione el problema gracias a ti...
De verdad Gracias

Un saludo....

Etiquetas: pg_query, postgresql
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 02:40.