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

Conexión y ejecución con MySQL...Un duda es parte de las Faqs

Estas en el tema de Conexión y ejecución con MySQL...Un duda es parte de las Faqs en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Antes que todo agradecerles su ayuda, les comento que en una de las fasqs hay un tema: Conexión y ejecución con MySQL es un clase ...
  #1 (permalink)  
Antiguo 23/02/2009, 11:44
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Conexión y ejecución con MySQL...Un duda es parte de las Faqs

Antes que todo agradecerles su ayuda, les comento que en una de las fasqs hay un tema: Conexión y ejecución con MySQL es un clase que estoy ocupando y desde ya agradesco por compartirla...

Bueno esta es la clase:
Código PHP:
class conectarMySQL {
    
//iniciamos variables
    //atributos para conectar la base de datos
    
var $servidor//servidor donde se encuentra la base de datos
    
var $usuario//nombre de usuario de la base de datos
    
var $password//password de la base de datos 
    
var $bd//nombre de la base de datos a la que quieres acceder
    //////////////////////////////////////////////////////////////////////////
    
var $consulta//aquí se guarda las consultas que se realizan
    
var $enlace//aquí se almacena la conexión con la bd, sí se ha producido
    
var $resultado//aquí se guardan los datos que se generen de una consulta
    
    //constructor, donde se inicializan las variables
    
    
function __construct($servidor,$usuario,$password,$bd) {
        
$this->servidor=$servidor;
        
$this->usuario=$usuario;
        
$this->password=$password;
        
$this->bd=$bd;
    }
    
    
//conectamos con la base de datos
    
function conectar() {
        
//se realiza la conexión a la base de datos
        
if($this->enlace=mysql_connect($this->servidor,$this->usuario,$this->password)) {
            
//se intenta acceder a la base de datos que deseeamos
            
if(mysql_select_db($this->bd,$this->enlace)) {
                
//Sí es correcta muestra mensaje (sí quieres lo quitas, sólo sirve para ver si funciona).
                //echo "Conexión correcta";
            
} else {
                
//Si falla muestra el mensaje que el error está al acceder a la base de datos
                
echo "No se ha podido seleccionar la  BD";
            }
        } else {
            
//Si falla la conexión con la base de datos se muestra el mensaje
            
echo "No se ha podido conectar a la bd";
        }                 
    }
    
    
//function consultas a la bd (insertar, modificar, eliminar)
    
function consultar($query) {
        
//aquí se realizan las consultas a la base de datos
        
$this->consulta=mysql_query($query,$this->enlace);
    }
    
    
//obtener resultados de la consulta
    
function obtendatos() {
        
//aquí se obtienen los datos de la consulta
        
$this->resultado=mysql_fetch_array($this->consulta);
        return 
$this->resultado;
    }
    function 
numCoincidencias(){                // hecha por yo
        //aquí se obtienen los datos de la consulta    
        
$this->resultado=mysql_num_rows($this->consulta);
        return 
$this->resultado;
    }
    
//cerramos la conexión con la base de datos
    
function cerrarconexion() {
        
mysql_close($this->enlace);
    }
    
//libera el contenido que se encuentra en el atributo 
    
function limpiaconsulta() {
        
mysql_free_result($this->consulta);
    }

Haber yo ocupo la clase y hasta el momento no he tenido problemas el tema es que cuando hago una modificacion me la hace pero quiero mandar un mensaje por pantalla diciendole que la modificacion funciono y en el caso que no envier un mensaje que hubo un error que lo intente de nuevo.

De esta lo hago:
Código PHP:
$objBD->conectar();
    
$query "UPDATE tabla1
        SET email='$email', anexo=$anexo, cargo='$comboCargos'
        WHERE rut='$rutModificar' LIMIT 1"
;
        
                
//aquí realizamos la consulta que queramos
                
$objBD->consultar($query);    
        
                
$control=$objBD->consultar($query); 
        
        echo 
"Esto es lo que tiene $control :".$control
Entonces yo agrege esas dos ultimas lineas con la idea de saber si $control me arrojaba algoy si ese algo lo podia meter en un if.

algo asi:
Código PHP:
if $control ==1{
echo 
"Modificacion correcta";
}else{
echo 
"Modificacion Incorrecta";

Pero el tema es que no me arroja nada, la variable $control me aparece en blanco nose si estoy llamando al metodo correcto de la clase o quizas tengo que crear un metodo para esas respuestas .... por ejemplo para insertar eliminar o modificar alguna variable de bandera que seas capaz de decirme que la modificacion la insercion o eliminacion esta correcta.

Espero haberme explicado bien...y desde ya cualquier sugerencia o critica sera bien recibida.

Gracias...
  #2 (permalink)  
Antiguo 23/02/2009, 12:05
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
bueon para que puedas usar esa sintaxis, lo pimero que tienes q hacer es que la funcion consultar devuelva algo, pero ahroa lo que hace es guarar el resutlado nada mas

para que devuelva algo como lo que vos queres deberias de hacer algo asi

Código PHP:
function consultar($query) { 
        
//aquí se realizan las consultas a la base de datos 
        
$this->consulta=mysql_query($query,$this->enlace); 
return !(bool)
mysql_errno($this->enlace);
    } 
mysql_errno() devuelve 0 si no hay error y el error id si lo hay, pasandolo a (bool) 0 seria false, y cuando hay error seria true, pero para q sea mas intiutivo de si la consulta salio ok q devuelva un true y no un false es q le agrego el !

intenta con ello a ver como te va


luego lo usas de esta manera

Código PHP:
......
$objBD->consultar($query);     
$control=$objBD->consultar($query);  
echo 
'La consulta '.($control===true?'NO':'SI').' tiene errores'
__________________
Degiovanni Emilio
developtus.com

Última edición por GatorV; 23/02/2009 a las 12:12
  #3 (permalink)  
Antiguo 23/02/2009, 12:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Conexión y ejecución con MySQL...Un duda es parte de las Faqs

Como tip no te recomiendo llamar dos veces a consultar, ya que con la primera haces la consulta y seguramente la segunda no se ejecute, o si se ejecuta te marque algún error.

Saludos
  #4 (permalink)  
Antiguo 23/02/2009, 12:54
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Conexión y ejecución con MySQL...Un duda es parte de las Faqs

muchas gracias por tu ayuda emiliodeg me funciona .... perfecto mil gracias.

Gracias gatorv por tu tiempo...

Última edición por juan007; 23/02/2009 a las 13:12
  #5 (permalink)  
Antiguo 26/02/2009, 19:15
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Conexión y ejecución con MySQL...Un duda es parte de las Faqs

Compañeros...me ha aparecido un problema en el momento de insertar en un libro de visitas y ocupando la idea que me propuso emiliodeg en vez de insertarme una fila en la tabla de la base de datos ...me inserta dos con los mismos datos...les dejo el codigo, haber si me pueden hachar una manito.

Código PHP:
$objBD->conectar();
                
$query="INSERT INTO libro_visitas (nombre_usuario, email, valoracion, comentario,fecha,apodo) VALUES ('$nombreUsuario', '$email', '$valoracionWeb', '$comentarios','$fecha','$nombreApodo')";
        
//aquí realizamos la consulta que queramos
        
$objBD->consultar($query);    
        
$control=$objBD->consultar($query);  
        
        echo 
"<br><br>";
        if (
$control===true){
            echo 
"El comentario fue agregado satisfactoriamente";
        }else{
            echo 
"El comentario NO pudo ser agregado...intentalo nuevamente";
        } 
eso es...y la clase esta con el alcance que me hizo emiliodeg

Código PHP:
class conectarMySQL {
    
//iniciamos variables
    //atributos para conectar la base de datos
    
var $servidor//servidor donde se encuentra la base de datos
    
var $usuario//nombre de usuario de la base de datos
    
var $password//password de la base de datos 
    
var $bd//nombre de la base de datos a la que quieres acceder
    //////////////////////////////////////////////////////////////////////////
    
var $consulta//aquí se guarda las consultas que se realizan
    
var $enlace//aquí se almacena la conexión con la bd, sí se ha producido
    
var $resultado//aquí se guardan los datos que se generen de una consulta
    
    //constructor, donde se inicializan las variables
    
    
function __construct($servidor,$usuario,$password,$bd) {
        
$this->servidor=$servidor;
        
$this->usuario=$usuario;
        
$this->password=$password;
        
$this->bd=$bd;
    }
    
    
//conectamos con la base de datos
    
function conectar() {
        
//se realiza la conexión a la base de datos
        
if($this->enlace=mysql_connect($this->servidor,$this->usuario,$this->password)) {
            
//se intenta acceder a la base de datos que deseeamos
            
if(mysql_select_db($this->bd,$this->enlace)) {
                
//Sí es correcta muestra mensaje (sí quieres lo quitas, sólo sirve para ver si funciona).
                //echo "Conexión correcta";
            
} else {
                
//Si falla muestra el mensaje que el error está al acceder a la base de datos
                
echo "No se ha podido seleccionar la  BD";
            }
        } else {
            
//Si falla la conexión con la base de datos se muestra el mensaje
            
echo "No se ha podido conectar a la bd";
        }                 
    }
    
    function 
consultar($query) { 
        
//aquí se realizan las consultas a la base de datos 
        
$this->consulta=mysql_query($query,$this->enlace); 
        return !(bool)
mysql_errno($this->enlace);
    }  
 
    
    
//obtener resultados de la consulta
    
function obtendatos() {
        
//aquí se obtienen los datos de la consulta
        
$this->resultado=mysql_fetch_array($this->consulta);
        return 
$this->resultado;
    }
    function 
numCoincidencias(){                
        
//aquí se obtienen los datos de la consulta    
        
$this->resultado=mysql_num_rows($this->consulta);
        return 
$this->resultado;
    }
    
//cerramos la conexión con la base de datos
    
function cerrarconexion() {
        
mysql_close($this->enlace);
    }
    
//libera el contenido que se encuentra en el atributo 
    
function limpiaconsulta() {
        
mysql_free_result($this->consulta);
    }

Eso seria ojala que puedan guiarme que no entiendo ni se me ocurre como puedo hacerlo....desde ya muchas gracias
  #6 (permalink)  
Antiguo 26/02/2009, 20:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Conexión y ejecución con MySQL...Un duda es parte de las Faqs

Hola juan007,

Te inserta dos veces por lo que te dije, llamas dos veces a $obj->consultar()

Saludos
  #7 (permalink)  
Antiguo 27/02/2009, 05:59
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Conexión y ejecución con MySQL...Un duda es parte de las Faqs

creo haber solucionado el problema para eso elimine una linea, ahora me inserta solo la fila y lo que deseaba era que enviara un mensaje comunicandole al usuario que la insercion habia sido satisfactoria.
Quedo de la siguiente forma:

Código PHP:
$objBD->conectar();
                
$query="INSERT INTO libro_visitas (nombre_usuario, email, valoracion, comentario,fecha,apodo) VALUES ('$nombreUsuario', '$email', '$valoracionWeb', '$comentarios','$fecha','$nombreApodo')";
        
//aquí realizamos la consulta que queramos
        
$control=$objBD->consultar($query);  
         
        echo 
"<br><br>";
        if (
$control===true){
            echo 
"El comentario fue agregado satisfactoriamente";
        }else{
            echo 
"El comentario NO pudo ser agregado...intentalo nuevamente";
        } 
Se elimino esta linea:
Código PHP:
$objBD->consultar($query); 
Ahora mi pregunta es: ¿SERA LA FORMA MAS CORRECTA PARA HACERLO?

Hasta el momento he hecho unas cuantas pruebas tan solo para el insertar ... no deberia tener problemas para el eliminar o modificar.

Gracias por sus comentario...
  #8 (permalink)  
Antiguo 27/02/2009, 09:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Conexión y ejecución con MySQL...Un duda es parte de las Faqs

Hola juan007,

¿No lees mis mensajes? Desde el primero te dije que tenias que eliminar esa línea extra o te iba a causar duplicidad...
  #9 (permalink)  
Antiguo 27/02/2009, 11:28
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Conexión y ejecución con MySQL...Un duda es parte de las Faqs

gracias GatorV....pero pense que lo decias como recomendacion.....y gracias por la paciencia y buena voluntad.
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:33.