Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Seleccionar base de datos

Estas en el tema de Seleccionar base de datos en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas, estoy creando una clase de conexion a la bd y tengo un metodo para seleccionar una base de datos. Código PHP: function  seleccionar (){ ...
  #1 (permalink)  
Antiguo 10/07/2011, 19:40
Avatar de kaman10  
Fecha de Ingreso: enero-2011
Ubicación: Uruguay
Mensajes: 63
Antigüedad: 13 años, 10 meses
Puntos: 1
Seleccionar base de datos

Buenas, estoy creando una clase de conexion a la bd y tengo un metodo para seleccionar una base de datos.

Código PHP:
function seleccionar(){
 if (!
mysql_select_db($this->basedatos,$this->link)){
      echo 
"Error al seleccionar la base de datos.";
      exit();
   }
      echo 
"Base de datos seleccionada. En este caso: $this->basedatos";
   return 
$this->link;

Se conecta bien a la base de datos mysql.
Al crear el objeto llamo al metodo seleccionar, pero me da el error del primer echo.
Tengo que pasar como parametro la bd para seleccionarla.
Código PHP:
$conexion= new ConexionBD;
$conexion->seleccionar('nombre_base_datos'); 
Estoy aprendiendo, me parece que no es dificil pero no se donde esta el error, agradesco me puedan ayudar
Saludos
  #2 (permalink)  
Antiguo 10/07/2011, 20:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Seleccionar base de datos

Deberías poner todo el código no solo el de seleccionar para ver porque te da error.

Saludos.
  #3 (permalink)  
Antiguo 10/07/2011, 22:29
Avatar de kaman10  
Fecha de Ingreso: enero-2011
Ubicación: Uruguay
Mensajes: 63
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Seleccionar base de datos

Ok te lo paso parte del codigo que estoy trabajando (pero creo que esta en donde lo publique).
Código PHP:
class ConexionBD{
//propiedades
private $servidor 'localhost';
private 
$usuario 'usuario';
private 
$contraseña 'clave';
private 
$link;

public 
$basedatos;

//metodos
//conexion a la base de datos
function conectarse(){
   if ((
$this->link=mysql_connect($this->servidor,$this->usuario,$this->contraseña))){//datos de mysql
      
echo "Conectado! <br />";
      }else{
      echo 
"Error conectando a la base de datos. Verifica tu usuario y clave.";
      exit();
   }
  }

function 
seleccionar(){
 if (!
mysql_select_db($this->basedatos,$this->link)){
      echo 
"Error al seleccionar la base de datos.";
      exit();
   }
      echo 
"Base de datos seleccionada. En este caso: $this->basedatos";
   return 
$this->link;
}
}
$conexion= new ConexionBD;
$conexion->seleccionar('nombre_base_datos');/*paso por parametro la base de 
datos que quiero seleccionar */ 
La base de datos que paso existe y esta cargada con registros
Cuando paso por parametro mi bd me impime esto en pantalla:

Conectado!
Error al seleccionar la base de datos.

Algo me estoy pasando por alto, pero no se que es.
Espero tu respuesta
saludos
  #4 (permalink)  
Antiguo 11/07/2011, 07:13
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: Seleccionar base de datos

Estas haciendo un seleccionar() sin antes hacer un conectar()

Saludos
  #5 (permalink)  
Antiguo 11/07/2011, 07:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Seleccionar base de datos

Aparte que tu propiedad (que esta mal que sea public) nunca la seteas por lo que $this->basededatos nunca existe, deberías de asignarla antes de llamar a seleccionar() y despues de llamar a conectar().
  #6 (permalink)  
Antiguo 11/07/2011, 19:34
Avatar de kaman10  
Fecha de Ingreso: enero-2011
Ubicación: Uruguay
Mensajes: 63
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Seleccionar base de datos

Cita:
Iniciado por FFabre Ver Mensaje
Estas haciendo un seleccionar() sin antes hacer un conectar()

Saludos
Perdon FFabre, se me paso de incluirlo acá en el foro, pero en el mio si esta y me daba lo que publique antes.
Saludos
  #7 (permalink)  
Antiguo 11/07/2011, 20:42
Avatar de kaman10  
Fecha de Ingreso: enero-2011
Ubicación: Uruguay
Mensajes: 63
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Seleccionar base de datos

GatorV es cierto si la asignaba dentro de la clase me funciona, pero el problema estaba al declararla al instanciar el objeto. Por lo que veo no hay otra forma de hacerlo?

Se me pido que lo haga asi (es un ejercicio de poo que estoy haciendo)
Código PHP:
$conexion->seleccionar('nombre_base_datos'); 
pero no funciona.
La solucion seria de esta manera:
Código PHP:
$conexion= new ConexionBD;
$conexion->conectarse();
$conexion->$basedatos 'nombre_base_datos';
$conexion->seleccionar('nombre_base_datos');/*paso por parametro la base de 
datos que quiero seleccionar */ 
De esta manera funciona.
Gracias por la respuesta
Saludos
  #8 (permalink)  
Antiguo 12/07/2011, 06:48
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: Seleccionar base de datos

Esto no te hace falta, de hecho esta mal puesto =P :

$conexion->$basedatos = 'nombre_base_datos';

Si a seleccionar($db) le pasas el nombre de la base de datos, dentro de la misma función podés hacer $this->basedatos = 'nombre_base_datos' y despues conectar. Además te sacarías de encima la propiedad pública.
Saludos!
  #9 (permalink)  
Antiguo 12/07/2011, 06:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Seleccionar base de datos

Si lo que quieres es conectar por un parámetro tendrías que tener:
Código PHP:
Ver original
  1. pubic function seleccionar($bd)
  2. {
  3.       if (!mysql_select_db($bd,$this->link)){
  4.           echo "Error al seleccionar la base de datos.";
  5.           exit();
  6.       }
  7.       $this->basedatos = $bd;
  8.       echo "Base de datos seleccionada. En este caso: $this->basedatos";
  9.       return $this->link;
  10. }

Saludos.

Etiquetas: seleccionar
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 10:02.