Clase para conexión con base de datos mysql
hola amigos!!
estoy en los primeros pasos con clases en php, me he pegado contra el escritorio una y otra vez conciente de lo novato que soy pero he aquí la cuestión:
tengo este código muy básico:
<?php
class acceso_bd{
private $host="localhost";
private $user="usr_float";
private $pass="123456";
private $db="float";
private $enlace;
public function __construct(){
$this->host=$host;
$this->user=$user;
$this->pass=$pass;
$this->db=$db;
}
private function conectar(){
$this->enlace=mysql_connect($this->host,$this->user,$this->pass);
mysql_select_db($this->db,$this->conexion) or die ("existen problemas con la base de datos.".mysql_error());
}
public function consulta(){
return $this->conectar();
}
}
$acceso_bd = new acceso_bd();
?>
estoy un poco perdido porque no se como utilizar esta clase dentro de mi código, aclaro que la he creado yo y no es ningún copiar y pegar solo que no se como continuar, los datos de acceso por supuesto son falsos.
bueno espero alguna ayudita.
saludos
Marcky
Fíjate que mysql_fetch_assoc() espera un recurso, y no un objeto. Esa función espera que se le pase el resultado que devuelve mysql_query().
No entiendo muy bien lo que intentas al hacer que conectar() sea una función privada y consulta() sea pública si dentro de ésta no haces ningún tipo de validación. Opino como Juanangt, quizás te ayudaría utlilizar otros nombres de variable para no equivocarte.
Volviendo a lo anterior, si no haces mysql_query("SELECT * FROM tabla ...") en ningún sitio, la base de datos no te devolverá nada.
Hacer código orientado a objetos es un gran intento, pero asegúrate antes de tener claros los conceptos básicos :)
Saludos!
pablogoris
hola juanangt!!
ante todo disculpa este intervalo sin que te responda!!
he cambiado el nombre de la variable tienes toda la razón.
lo que hago en el código es lo siguiente:
$consulta = "select id_noticia, titulo_noticia, noticia, fecha_noticia, categoria from noticias order by id_noticia desc limit 6";
$conecta->consulta($consulta);
linea 14 while($fila = mysql_fetch_assoc($conecta)){
$fecha = strtotime($fila['fecha_noticia']);
setlocale(LC_TIME, 'es_ES.ISO8859-1'); //Para cambiar la hora a formato ep·pañol
$formateafecha = strftime('%A, %d de %B', $fecha);
y el error que me tira es el siguiente:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, object given in D:\xampp\htdocs\PhpProject1\index.php on line 14
bueno seguiré investigando, si puedes me das una mano sino ya haz hecho demasiado!!!
un saludo
Juanangt
Para llamar al método consulta simplemente tienes que poner lo siguiente.
"$acceso_bd->consulta();" y ya conectará.... digo que faltan cosas porque por lo general en el método consulta se suele pasar como parámetro la select que quieres hacer y lo que devuelve en lugar de la conexión (que es lo que haces ahora) devolver directamente los resultados (en un array por ejemplo).
Otra cosa que a mi no me convence es que a la variable le hayas puesto el mismo nombre que la clase... sintácticamente es correcto... pero no suele ser muy habitual.
Voy a buscar algún código mio de clase y te lo paso para que lo veas....
Saludos!
pablogoris
gracias juanangt por dedicar parte de tu tiempo a mi problema.
He creado el metodo consulta como publico para poder acceder a la funcion conectar que es privada para poder recoger lo datos. Site parece que falta algo dímelo por favor!.
y aqui viene el problema:
he creado una instancia que lleva como nombre $acceso_bd. no se como utilizarla en mi código cuando intento conectarme a la base de datos.
no se como explicarme mejor, tengo la clase para conectarme pero no se como utilizarla!!
bueno, espero no haber sido tan limitado en mi explicacion!!!
un saludo juanangt
Juanangt
Hola pablogoris,
En principio el código que llevas hasta ahora es correcto.... ¿por dónde no sabes continuar? ¿que necesitas?
Así de primeras veo que te falta código en el método "consulta()" y que tienes una variable con el mismo nombre que la clase "$acceso_bd = new acceso_bd();" que después no utilizas....
Dáme más datos y te intento echar un cable.
Saludos!