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

Consulta mysql

Estas en el tema de Consulta mysql en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Alguien que me ayude k no se cual es mi problema en el metodo Algo() Código PHP: <?php class  ManejadorDb {        // Constructor public function  ...
  #1 (permalink)  
Antiguo 09/08/2005, 22:38
 
Fecha de Ingreso: septiembre-2003
Mensajes: 384
Antigüedad: 20 años, 7 meses
Puntos: 0
Consulta mysql

Alguien que me ayude k no se cual es mi problema en el metodo Algo()

Código PHP:


<?php

class ManejadorDb
{

 
    
// Constructor
public function __construct($server,$user,$pass,$db)
    {
        if(!
$this->db mysql_connect($server,$user,$pass,$db)){
        echo 
"No hay coneccion a la DB";

        }else{

          return 
$db;
            }

    }


//Funcion algo
public function Algo()
{

$query "SELECT * FROM departamentos";
$this->db mysql_query($query) or die ("MALA ONDAAAA");

return 
$db;

}

    
//Funcion desconectarse
    
function Desconectarse()
    {
      
$this->db->mysql_close;

    }

}

?>
__________________
-----------------------------
Edgar Gonzalez
  #2 (permalink)  
Antiguo 10/08/2005, 07:04
 
Fecha de Ingreso: julio-2005
Mensajes: 26
Antigüedad: 18 años, 9 meses
Puntos: 0
Espero que esto te ayude.

Man creo que lo que falta es declarar la conexion en la funcion mysql_query, seria asi:
Código PHP:

//Funcion algo 
public function Algo() 


$query "SELECT * FROM departamentos"
$this->db mysql_query($query $db) or die ("MALA ONDAAAA"); 

return 
$db



Si no mira mas o menos como creo que se puede hacer eso...

Código PHP:

<?PHP
// Clase para conectarme a una base de datos MYSQL.

class db_conexion
{
    var 
$servidor;  // Nombre del servidor mysql.
    
var $usuario;   // Nombre de usuario de la base datos.
    
var $password;  // Contraseña del usuario de la base datos.
    
var $base_dato;  // Nombre de la base datos.
    
    
var $db_conn;     // Conexion con la base datos.
    
var $db_select;  // Seleccion de la base datos.
    
var $consulta;   // Consulta a la tabla.
    
var $resultado;  // Resultado de la consulta.
    
    
    // Función para conectarme al servidor y a la base datos en el servidor mysql.
    
    
function conexion_db()
    {
        
$this->servidor "nombre del servidor de base datos";
        
$this->usuario "nombre del usuario del servidor de base datos";
        
$this->password "contraseña del usuario del servidor de base datos";
        
$this->base_dato "Base datos de servidor";
        
        
$this->db_conn = @mysql_connect$this->servidor $this->usuario $this->password ) or die("Conexion error".mysql_error());
        
$this->db_select = @mysql_select_db$this->base_dato $this->db_conn) or die("Conexion base datos error".mysql_error());
    }
    
    
   
// Función para realizar consultas.
    
   
function consulta_db()
    { 
        
$this->conexion_db();
        
$this->resultado = @mysql_query$this->consulta$this->db_conn) or die("Error al realizar la consulta".mysql_error());
        return ( 
$this->resultado ); 
    }
    
    
//
    
    // Función para cerrar la conexion con la base datos.
    
    
function close_conn_db()
    { 
        
$this->conexion_db();
        
mysql_close$this->db_conn );
    }
}

?>
Espero que te sirva de algo...
  #3 (permalink)  
Antiguo 11/08/2005, 21:42
 
Fecha de Ingreso: septiembre-2003
Mensajes: 384
Antigüedad: 20 años, 7 meses
Puntos: 0
Bueno es que es realmente utilizando PEAR DB,

mira el code,

Código PHP:
<?
/*Clase Catalogo
Edgar Gonzalez
*/

Class Catalogo{

    function 
__construct(){
        
//Obtengo mi variable global de conectarme
        
$this->dbm GLOBALS['dbm'];
    }

//Obtengo todos mis Departamentos
    
public function ObtenerDepartamentos()
    {
    
$consulta "SELECT id_departamento,nombre FROM departamentos";
$resultado $this->dbm->DbGetAll($consulta);

        return 
$resultado;
    }


}
//termino de la clase
?>
pero el return no me muestra nada no se por que

tambien he probado cambiandole el query, pero no hace nada

la funcion DbGetAll(), es una funcion predeterminada de PEAR que me da todos los records de la tabla con un fetch predeterminado tambien
__________________
-----------------------------
Edgar Gonzalez
  #4 (permalink)  
Antiguo 12/08/2005, 07:10
 
Fecha de Ingreso: julio-2005
Mensajes: 26
Antigüedad: 18 años, 9 meses
Puntos: 0
Creo que no es mucho.

Man,

Mirando tu código existe algo que me parece que al usar GLOBALS, no es la forma de usarlo, creo que se delcara de la siguiente marena:
Código PHP:
 $GLOBALS['dbm']; 
Por tanto ha de quedar de la siguiente forma tu código:
Código PHP:
<? 
/*Clase Catalogo 
Edgar Gonzalez 
*/ 

Class Catalogo

    function 
__construct(){ 
        
//Obtengo mi variable global de conectarme 
        
$this->dbm $GLOBALS['dbm']; 
    } 

//Obtengo todos mis Departamentos 
    
public function ObtenerDepartamentos() 
    { 
    
$consulta "SELECT id_departamento,nombre FROM departamentos"
$resultado $this->dbm->DbGetAll($consulta); 

        return 
$resultado
    } 


}
//termino de la clase 
?>
después que lo cambies prueba ha realizar un echo ha esto:
Código PHP:
echo $resultado $this->dbm->DbGetAll($consulta); 
Y mira ver si devuelve resultado.

Espero que te sirva de algo esto creo que no es mucho pero te comento que no he usado PEAR DB, apenas lo he mirado por arriba.

Saludos
  #5 (permalink)  
Antiguo 12/08/2005, 20:24
 
Fecha de Ingreso: septiembre-2003
Mensajes: 384
Antigüedad: 20 años, 7 meses
Puntos: 0
ya esta un poco mejor, solo que cuando invoco al metodo, me da un Array, mira:

Código PHP:
<?
/*Clase Catalogo
Edgar Gonzalez
*/

Class Catalogo{

    function 
__construct(){
        
//Obtengo mi variable global de conectarme
        
$this->dbm $GLOBALS['dbm'];
    }

//Obtengo todos mis Departamentos
    
public function ObtenerDepartamentos()
    {
    
$consulta "SELECT id_departamento,nombre FROM departamentos";
$resultado $this->dbm->DbGetAll($consulta);

        return 
$resultado;
    }


}
//termino de la clase
?>
De esta manera invoco el metodo, pero aun asi me sale "Array", me inmagino que tendre que hacer un loop,switch o for(), para que me muestre los datos, pero no me viene nada a la mente ahora


Código PHP:
<?
include('include/top.php');
include(
'classes/catalogo.php');

$catalogo = New Catalogo();
echo 
$catalogo->ObtenerDepartamentos();
include(
'include/bottom.php');
?>
__________________
-----------------------------
Edgar Gonzalez
  #6 (permalink)  
Antiguo 12/08/2005, 23:26
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Hola:
Si quieres ver si el array se ha generado correctamente, puedes hacer esto:
Código PHP:
$unArray $catalogo->ObtenerDepartamentos();
var_dump($unArray); 
Para mostrar bien los datos ya tendrás que utilizar un bucle como bien mencionas.
Código PHP:
$unArray $catalogo->ObtenerDepartamentos();
foreach(
$unArray as $campo=>$valor){
   echo 
"Campo: ".$campo." --- Valor: ".$valor."<hr />";

Ya que utilizas PHP5, también puedes recorrer ese array utilizando un iterador.

Saludos
  #7 (permalink)  
Antiguo 13/08/2005, 08:35
 
Fecha de Ingreso: septiembre-2003
Mensajes: 384
Antigüedad: 20 años, 7 meses
Puntos: 0
Oh, Gracias Jpinedo cuando hago el array dump, me sale esto y si hago el foreach, me sale "Array"

Código PHP:
array(1) { [0]=>  array(2) { ["id_departamento"]=>  string(1"1" ["nombre"]=>  string(5"Edgar" } } 

Probe introduciendole 2 campos mas, sale esto del dump:
Código PHP:
array(3) { [0]=>  array(2) { ["id_departamento"]=>  string(1"1" ["nombre"]=>  string(5"Edgar" } [1]=>  array(2) { ["id_departamento"]=>  string(1"2" ["nombre"]=>  string(17"Ambar" } [2]=>  array(2) { ["id_departamento"]=>  string(1"3" ["nombre"]=>  string(22"Carolina" } } ----------------- Bottom 


PD. como te diste cuenta que uso php5_?
__________________
-----------------------------
Edgar Gonzalez

Última edición por eagoweb2; 13/08/2005 a las 08:55
  #8 (permalink)  
Antiguo 13/08/2005, 19:45
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Hola:
El foreach te da "Array" porque tu array es bidimensional, así que habrá que anidar otro foreach.
Algo así:
Código PHP:
$unArray $catalogo->ObtenerDepartamentos();
foreach(
$unArray as $registro){
    foreach(
$registro as $campo=>$valor){
        echo 
"Campo: ".$campo." --- Valor: ".$valor."<hr />";
    }

Cita:
PD. como te diste cuenta que uso php5_?
Jeje... por la declaración del constructor (en PHP4 es una función con el mismo nomre de la clase. En PHP5 se llama __construct). Además de que en PHP4 no existe la declaración de visibilidad (public, private, etc.)... nada del otro mundo.

Saludos
  #9 (permalink)  
Antiguo 22/08/2005, 19:24
 
Fecha de Ingreso: septiembre-2003
Mensajes: 384
Antigüedad: 20 años, 7 meses
Puntos: 0
Perfecto, excusame por la tardanza, tenia mi pc dañada, ya me funciona bien,
Lo que no se ahora es, ¿por que me sale el valor del primer campo si lo unico que quiero imprimir es el segundo campo?

hay otra forma que no sea por un foreach?
__________________
-----------------------------
Edgar Gonzalez
  #10 (permalink)  
Antiguo 22/08/2005, 23:29
Avatar de adriancid  
Fecha de Ingreso: abril-2005
Ubicación: Versalles, Santiago de Cuba, Cuba
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
si tambien tienes para iterar el for, while, do while, que son las estructuras de control
  #11 (permalink)  
Antiguo 23/08/2005, 15:14
 
Fecha de Ingreso: septiembre-2003
Mensajes: 384
Antigüedad: 20 años, 7 meses
Puntos: 0
BUENO SI, JEJEJE la pregunta estuvo un poco novata, pero lo que no entendi bien fue que hace esto

Código PHP:
 $unArray $catalogo->ObtenerDepartamentos();
foreach(
$unArray as $registro){
    foreach(
$registro as $campo=>$valor){
        echo 
"Campo: ".$campo." --- Valor: ".$valor."<hr />";
    }

osea se que funciona pero que me expliquen que proceso hace esto
__________________
-----------------------------
Edgar Gonzalez
  #12 (permalink)  
Antiguo 23/08/2005, 15:26
Avatar de adriancid  
Fecha de Ingreso: abril-2005
Ubicación: Versalles, Santiago de Cuba, Cuba
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
http://www.php.net/manual/es/control...es.foreach.php
  #13 (permalink)  
Antiguo 24/08/2005, 13:20
 
Fecha de Ingreso: septiembre-2003
Mensajes: 384
Antigüedad: 20 años, 7 meses
Puntos: 0
perfecto, muchas gracias, es la mejor consulta de internet, claro en la casa del proveedor :p
__________________
-----------------------------
Edgar Gonzalez
  #14 (permalink)  
Antiguo 25/08/2005, 10:00
 
Fecha de Ingreso: septiembre-2003
Mensajes: 384
Antigüedad: 20 años, 7 meses
Puntos: 0
Mi tabla departamentos en mi db es:
Código HTML:
id_departamento | nombre | Descripcion |
Esta es mi funcion en la clase
Código PHP:
public function ObtenerDepartamentos()
    {
    
$consulta "SELECT id_departamento,nombre FROM departamentos";
$resultado $this->dbm->DbGetAll($consulta);

        return 
$resultado;
    } 
esto es como hago la iteracion

Código PHP:
$catalogo = New Catalogo();
$catalogo->ObtenerDepartamentos();
$unArray $catalogo->ObtenerDepartamentos();
 foreach(
$unArray as $campo){
    foreach(
$campo as $otrocampo=>$otrovalor){
      echo 
$otrovalor."<br>";
    }

 } 
mi pregunta es, como logro imprimir un solo campo, sin tener que cambiar el query en ObtenetDepartamentos(),?

ya que cuando hago la iteracion, me sale el id_departamento, y el "nombre" y solo quiero el nombre y el id para manejarme dentro de la pagina,
__________________
-----------------------------
Edgar Gonzalez
  #15 (permalink)  
Antiguo 26/08/2005, 22:35
 
Fecha de Ingreso: septiembre-2003
Mensajes: 384
Antigüedad: 20 años, 7 meses
Puntos: 0
no me entendieron ? :P
__________________
-----------------------------
Edgar Gonzalez
  #16 (permalink)  
Antiguo 31/08/2005, 12:20
 
Fecha de Ingreso: julio-2005
Mensajes: 26
Antigüedad: 18 años, 9 meses
Puntos: 0
Tal ves funcione...

Hola no se si esto funciones pero prueba hacer esto haber si funciona:

Código PHP:
$catalogo = New Catalogo(); 
$catalogo->ObtenerDepartamentos(); 
$unArray $catalogo->ObtenerDepartamentos(); 
foreach(
$unArray as $campo){ 
    foreach(
$campo as $otrocampo=>$otrovalor){ 
      echo 
$otrovalor[0]."<br>"
    } 


Saludos
  #17 (permalink)  
Antiguo 31/08/2005, 21:23
 
Fecha de Ingreso: septiembre-2003
Mensajes: 384
Antigüedad: 20 años, 7 meses
Puntos: 0
no ombe k va, no funciona, pero gracias por tu ayuda
__________________
-----------------------------
Edgar Gonzalez
  #18 (permalink)  
Antiguo 01/09/2005, 18:55
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Hola:
Es que el bucle foreach recorre todo el array posición por posición.
Un registro devuelto con mysql_fetch_() contiene todos los campos devueltos por la consulta. Por eso al recorrerlo con un foreach se muestran todos.

¿Solución?
No recorras el array. Simplemente imprime los campos que necesites.
Código PHP:
foreach($unArray as $registro){
    echo 
"Nombre : ".$registro['nombre']."<hr />";
    
// También tienes disponible la variable $registro['id_departamento'] para usar

Saludos
  #19 (permalink)  
Antiguo 01/09/2005, 19:09
 
Fecha de Ingreso: septiembre-2003
Mensajes: 384
Antigüedad: 20 años, 7 meses
Puntos: 0
wao jpinedo, gracias diste en el calvo

thx
__________________
-----------------------------
Edgar Gonzalez
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 15:26.