Google
Web dns.bdat.net

[PHP-ES] Re: Problema con Classe

Write haof XML files: Marcelo Sosa ( lmskako@yahoo.com.ar)
Fecha: mié 02 nov 2005 - 20:04:44 CET


Bueno, desde ya agradecido por sus ayudas...
Y les paso lo que corresponde a este problema asi lo vemos todos.

Esta bien, tienen razon con respecto a los die()'s por todos lados,
pero es que lo queria matar antes de que haga nada y ver en que
quedaron las variables, lo mismo que probe ver el tipo de variable
que me devolvia y demas funciones que ya saque.

bueno, estas son las paginas en cuestion que dan el problema, no las
numere asi, si desean reproducir esto no los moleste.
--------------------------------------------------------------------
config.php
--------------------------------------------------------------------
<?php
define("DB_HOST", "localhost");
define("DB_NAME", "nombre_db");
define("DB_USER", "usuario");
define("DB_PASS", "password");
define("DB_TIPO", "MySQL");
?>
--------------------------------------------------------------------
class_db.php
--------------------------------------------------------------------
<?php require_once("config.php");?>
<?php
class DBs{
        var $host;
        var $user;
        var $pass;
        var $db_name;
        var $db_tipo;
        
        var $id_con = 0;
        var $id_q = 0;
        //********* inicializo las variables **************
        function DBs(){
                $this->host = DB_HOST;
                $this->user = DB_USER;
                $this->pass = DB_PASS;
                $this->db_name = DB_NAME;
                if(DB_TIPO != NULL && DB_TIPO != ''){
                        $this->db_tipo = DB_TIPO;
                }else{
                        $this->db_tipo = "MySQL";
                }
        }
        //************** conectar a la BD ***************
        function conectar(){
                switch($this->db_tipo){
                        case "MySQL":
                                $this->id_con = mysql_connect($this->host,$this->user,$this->pass);
                                if($this->id_con){
                                        mysql_select_db($this->db_name, $this->id_con);
                                }
                                break;
                        case "MSSQL":
                                $this->id_con = mssql_connect($this->host,$this->user,$this->pass);
                                if($this->id_con){
                                        mssql_select_db($this->db_name, $this->id_con);
                                }
                                break;
                }
                return $this->id_con;
        }
        //***************** aqui hago las consultas *************
        function consultar($SQL = ""){
                switch($this->db_tipo){
                        case "MySQL":
                                $this->id_q = mysql_query($SQL, $this->id_con);
                                break;
                        case "MSSQL":
                                $this->id_q = mssql_query($SQL, $this->id_con);
                                break;
                }
                return $this->id_query;
        }
}
?>
--------------------------------------------------------------------
index.php
--------------------------------------------------------------------
<?php require_once('includes/class_db.php');?>
<?php
if(isset($_POST['send'])){
        $nombre = ($_POST['txtNom'] != '') ? "'".$_POST['txtNom']."'" : "NULL";
        $SQL = "INSERT INTO idiomas(nombre) VALUES(".$nombre.");";

        $res = new DBs();
        $res->conectar();
        $r = $res->consultar($SQL);
        $res->close();
        if(!$r){
                echo "tiro falso!!!";
                die;
        }
        echo "\$r=".$r;die;
        header('Location: '.$_SERVER['PHP_SELF'].'?e=0');
        exit();
}
?>
<html>
<body>
        <form name="form1" id="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
                <input name="txtNom" type="text" id="txtNom" />
                <input type="submit" name="Submit" value="Submit" />
                <input name="send" type="hidden" id="send" value="1" />
        </form>
</body>
</html>
--------------------------------------------------------------------------------

PD: Y si, ya empece a parchear esta clase hasta que salga a la luz el
problema o hasta que llegue el brujo budu a las 22:18hs.

Estamos en contacto, saludos........

> Hola a todos..
> Mi problema tiene que ver con una clase, pero ya estoy dudando si es de
> la clase misma.
>
> Les paso el codigo:
> Aqui instancio la clase e invoco sus metodos:
> -------------------------------------------
> 01: $res = new DBs();
> 02: $res->conectar();
> 03: $r = $res->consultar($SQL);
> 04: $res->close();
> 05: if(!$r){
> 06: echo "Hubo un problema...";
> 07: die;
> 08: }
> 09: echo "\$r=".$r;die;
> 10: exit();
> -------------------------------------------
> En la linea 03, el metodo consultar me devuelve TRUE o FALSE, en la 05
> pregunto y despues imprimo su valor.
>
> Hasta aqui todo bien, ahora, si comento la linea 09 (donde imprimo el
> valor de $r), la condicion if(!$r){ se convierte en TRUE....o sea ahora
> imprime "Hubo un problema..."
> Que pasa???, es la configuracion de mi PHP???, alguna pista?
>
> Saludos....
> Marcelo

-- 
PHP Spanish Localization Talk Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


Este archivo fue generado por hypermail 2.1.7 : sáb 18 mar 2006 - 18:23:40 CET