Foros del Web » Programando para Internet » PHP »

Ayuda con classes y MySQL por favor!

Estas en el tema de Ayuda con classes y MySQL por favor! en el foro de PHP en Foros del Web. Hola a todos... Necesito ayuda... Me rompi la cabeza por dos horas y todavia no me sale algo... Soy nuevo a PHP asike es por ...
  #1 (permalink)  
Antiguo 03/12/2008, 19:18
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
De acuerdo Ayuda con classes y MySQL por favor!

Hola a todos... Necesito ayuda... Me rompi la cabeza por dos horas y todavia no me sale algo... Soy nuevo a PHP asike es por eso... Les cuento...

Tengo un formulario donde se llena con datos para suscribirse a mi pagina.
Los campos piden: Nombre, Apellido, Cuenta, Password, fecha de nacimiento, pais, provincia, ciudad, y nada mas.

Al hacer clic en registrar, el formulario tiene como action: Ej. registrarse.php
Dentro de registrarse.php, tengo las varialbes q obtienen los datos de los campos: ej.

Código PHP:
<?php
$nombre 
$_POST['nombre'];
// etc....
?>
y luego de eso tengo una funcion que registra al usuario con esos datos, la cual esta definida en otro archivo: Ej. registrarse.class.php

(No copio los scripts porke son on chorizo mas o menos... asi ke lo simplifico con ejemplos a fin de llegar a lo que no me sale)

Bueno, el archivo registrarse.class.php lo tengo incluido en registrar.php con un

Código PHP:
<? require('registrarse.class.php'?>
El tema viene cuando kiero hacer lo siguiente... Bueno, el la classe que contiene las funciones para registrar los datos en una base de datos en registrarse.class.php todo barbaro, me inserta los datos en la base de datos correctamente...

pero el tema es que luego de insertar esos datos, necesito que otra funcion me tome el ID del registro de la base de datos... ya que necesito el ID del usuario para insertar otros datos que van a ser del usuario, pero en otras tablas... ej:

Código PHP:
<?
class Registarse{
public function 
Registrarse($Nombre$Usuario$Clave){
mysql_query("INSERT INTO $TABLA (ID, nombre, usuario, clave) VALUES ('', '$Nombre', '$Usuario', '$Clave')") or die(print(mysql_error()));
// Ahora necesito el ID del usuario recien registrado arriba, para poder hacer lo siguiente: ej.
mysql_query("INSERT INTO $OTRA_TABLA (ID, opcion1, opcion2) VALUES ('$ID', '$algo', $algo2')") or die print(mysql_error()));
// Obviamente el ID de $OTRA_TABLA no es 'auto_increment' sino que necesito que sea definido a traves de una variable $ID, que pertenesca al usuario recien registrado arriba...creo q me explico...
}
?>
para obtener el $ID yo tenia esto:
Código PHP:
<?
function GetID($Usuario){
$query mysql_query("SELECT * FROM $TABLA") or die(print(mysql_error()));
        while(
$fetch mysql_fetch_array($query) or die(print(mysql_error())){
            if(
$fetch['usuario'] == $usuario){
                
$ID $fetch['ID'];
            }
        }
        return 
$ID;
    }
?>
y me andaba, pero cuando lo tenia todo sin classes, ahora necesito que la funcion esta q busca el ID del usuario, este una una clase... Y la funcion de registrarse, en otra y en otro archivo... por EJ:

clase con la funcion de obtener ID en un archivo: functions.php
clase con la funcion de registrarse en otro archivo: register.class.php

La funcion de obtener ID la necesito adentro de la classe de register.class.php (Osea, q busce el ID dentro de la classe y funcion de registrarse),

y la funcion de registrarse, la necesito en un archivo: register.php

me explico xD?

Espero q me puedan ayudar... saludos.

Última edición por thepancher; 03/12/2008 a las 19:24
  #2 (permalink)  
Antiguo 03/12/2008, 19:27
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: Ayuda con classes y MySQL por favor!

Hola thepancher,

Mejor usa mysql_insert_id() para obtener el último ID autogenerado, de esa forma es más rapido a recorrer toda la tabla.

Saludos.
  #3 (permalink)  
Antiguo 03/12/2008, 21:00
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Ayuda con classes y MySQL por favor!

Bueno, parece que me hice tanto lio al dope xD jeje...gracias! voy a ver como sale...

saludos.
  #4 (permalink)  
Antiguo 03/12/2008, 22:04
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
Pregunta Respuesta: Ayuda con classes y MySQL por favor!

anduvo barbaro, gracias... pero ahora el tema es q lo voy a necesitar igual xD ya que necesito usar las siguientes funciones (definidas en una classe) las voy a necesitar usar dentro de otras classes.... pero me salta error en el mysql_fetch_array... te muestro el script...

el tema es asi, yo en una clase de un archivo: functions.php tengo lo siguiente:

Código PHP:
<?php
class MySQLFunction{
    
    private 
$_query;
    public 
$_error;
    
    private 
$_result;
    
    public function 
ConnectMySQL($Table$FieldsOrder$Order$Limit){
        if(
$Table == ''){
            
$this->_error 'Table could not be found.';
            return 
$this->_error;
        }
        else{
            if(
$FieldsOrder == '' && $Limit != ''){
                
$this->_query mysql_query("SELECT * FROM $Table LIMIT $Limit") or die(_MYSQL_ERROR_);
                return 
$this->_query;
            }
            else if(
$FieldsOrder != '' && $Limit == ''){
                switch(
$Order){
                    case 
cres $DefineOrder 'ASC'; break;
                    case 
decr $DefineOrder 'DESC'; break;
                }
                
$this->_query mysql_query("SELECT * FROM $Table ORDER BY $FieldsOrder $DefineOrder") or die(_MYSQL_ERROR_);
                return 
$this->_query;
            }
            else if(
$FieldsOrder != '' && $Limit != ''){
                switch(
$Order){
                    case 
cres $DefineOrder 'ASC'; break;
                    case 
decr $DefineOrder 'DESC'; break;
                }
                
$this->_query mysql_query("SELECT * FROM $Table ORDER BY $FieldsOrder $DefineOrder LIMIT $Limit") or die(_MYSQL_ERROR_);
                return 
$this->_query;
            }
            else{
                
$this->_query mysql_query("SELECT * FROM $Table") or die(_MYSQL_ERROR_);
                return 
$this->_query;
            }
        }
    }
}

class 
GetUserInfo{

    private 
$_query;
    private 
$_fetch;
    private 
$_user;
    private 
$_id;
    
    public function 
UserID($User){
        
$this->_query MySQLFunctions::ConnectMySQL($USERS_TABLE"""""");
        while(
$this->_fetch mysql_fetch_array($this->_query)){
            if(
$this->_fetch['User'] == $User){
                
$this->_id $this->_fetch['ID'];
            }
        }
        return 
$this->_id;
    }

    
    public function 
User($ID){
        
$this->_query MySQLFunctions::ConnectMySQL($USERS_TABLE"""""");
        while(
$this->_fetch mysql_fetch_array($this->_query)){
            if(
$this->_fetch['ID'] == $ID){
                
$this->_user $this->_fetch['User'];
            }
        }
        return 
$this->_user;
    }
}
?>
Lo que necesito es usar las 2 ultimas funciones: una para obtener ID segund User, y la otra para obtener User, segun ID... Fuera de classes, solian andar... pero ahora lo puse asi, y lo necesito usar en otra clase, pero me da error en el mysql_fetch_array()

Alguien me dice que es lo que tengo mal :S? como veran, soy nuevo en php y mucho no se...

hasta luego.
  #5 (permalink)  
Antiguo 03/12/2008, 23:18
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Ayuda con classes y MySQL por favor!

bueno, ya consegui la respuesta a porke no me andaba... aunq me gustaria entender porke...

probe varias cosas.... hasta puse un <? require('conf.inc.php') ?> dentro de la funcion que necesito pero no me toma la variable de la tabla por ejemplo ak:

Código PHP:
<?
class GetUserInfo{

    private 
$_query;
    private 
$_fetch;
    private 
$_user;
    private 
$_id;
    
    public function 
UserID($User){
        
// Aqui mismo probe haciendo el require del archivo donde defino la variable: $USER_TABLE... 
        // Pero nada... hasta intente haciendola global xD pero no la toma, no se porke...
        // asi ke tube q definir la varialbe de la tabla aki mismo para q ande... asi:
        // $USER_TABLE = "users_table";
        
$this->_query MySQLFunctions::ConnectMySQL($USERS_TABLE"""""");
        while(
$this->_fetch mysql_fetch_array($this->_query)){
            if(
$this->_fetch['User'] == $User){
                
$this->_id $this->_fetch['ID'];
            }
        }
        return 
$this->_id;
    }

    
    public function 
User($ID){
        
$this->_query MySQLFunctions::ConnectMySQL($USERS_TABLE"""""");
        while(
$this->_fetch mysql_fetch_array($this->_query)){
            if(
$this->_fetch['ID'] == $ID){
                
$this->_user $this->_fetch['User'];
            }
        }
        return 
$this->_user;
    }
}
?>
pero bue, lo deje asi, total no es molestia, pero no entiendo porke nunca me tomo la variable, ni sikiera incluyendo el archivo donde esta definida DENTRO de la funcion, y tampoco haciendola global, q es lo q no kiero.

bueno, saludos... problem solved. :)

Gracias igual GatorV, al menos me enseñaste a usar el mysql_insert_id(): ;)

chau!
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 00:43.