Foros del Web » Programando para Internet » PHP »

PHP OO Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Estas en el tema de Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR) en el foro de PHP en Foros del Web. Saludos a todos, Estoy apenas comenzando a implementar las funciones de mysqli, ya que como se sabe estan declaradas obsoletas las funciones de mysql. Hasta ...
  #1 (permalink)  
Antiguo 04/07/2013, 12:05
 
Fecha de Ingreso: noviembre-2011
Ubicación: Zulia/Maracaibo
Mensajes: 24
Antigüedad: 12 años, 4 meses
Puntos: 0
Exclamación Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Saludos a todos,
Estoy apenas comenzando a implementar las funciones de mysqli, ya que como se sabe estan declaradas obsoletas las funciones de mysql. Hasta cierto punto todo estaba muy bien pero cuando llego el momento de utilizar un metodo que creé para obtener el ultimo id insertado me arroja cero; he intentado solucionarlo de mil maneras pero sigo con el mismo problema.
Si alguien puede ayudarme se los agradezco, es que tengo poco tiempo para entregar la aplicacion y esto me tiene atrazado.

Aca les dejo el codigo.
Ahhh por cierto la aplicacion espara carga de cv, creo el usuario y necesito el último id de usuario ingresado para el resto de la información que se requiere.

Codigo



Clase base de datos
Código PHP:
Ver original
  1. <?php
  2.  
  3. abstract class AppDataBaseModel{
  4.  
  5.     private static $THE_HOST        = _APP_HOST_NAME_;
  6.     private static $THE_USER        = _APP_HOST_USER_;
  7.     private static $THE_PASSWORD    = _APP_HOST_PASSWORD_;
  8.     private static $THE_DATABASE    = _APP_HOST_DATABASE_;
  9.     private $dbConnection;
  10.     private $lastID;
  11.    
  12.  
  13.     protected function openConnection(){
  14.         $this->dbConnection = @new mysqli(self::$THE_HOST,
  15.                                           self::$THE_USER,
  16.                                           self::$THE_PASSWORD,
  17.                                           self::$THE_DATABASE);
  18.         if(mysqli_connect_errno()){
  19.             echo'Ha ocurrido un error al conectar con el servidor..!';
  20.         }
  21.        
  22.     }
  23.     private function closeConnection(){
  24.         $this->dbConnection->close();
  25.         //$this->dbConnection->free();
  26.     }
  27.     protected function executeQuery($mysqlQuery){
  28.         $this->openConnection();   
  29.         $queryResult = $this->dbConnection->query($mysqlQuery);
  30.         if(!$queryResult){
  31.             echo'Ha ocurrido un error al ejecutarse la consulta a la base de datos..!'.$this->dbConnection->error;
  32.         }else{
  33.             return $queryResult;
  34.         }      
  35.         $this->closeConnection();
  36.     }  
  37.     protected function countRows($mysqliQueryResult){
  38.         $this->openConnection();
  39.         $queryResult = $mysqliQueryResult->num_rows;
  40.         if($queryResult){
  41.             return $queryResult;
  42.         }else{
  43.             echo'Ha ocurrido un error al contar los registros de la tabla..!';
  44.         }
  45.         $this->closeConnection();
  46.     }  
  47.     protected function getLastID($theTable,$theId){
  48.         $this->openConnection();
  49.         $this->lastID = ''.$theId.'';    
  50.         $queryResult = $this->executeQuery("SELECT LAST_INSERT_ID() AS ".$this->lastID." FROM ".$theTable.";");
  51.         if($queryResult){
  52.             return $queryResult;
  53.         }else{
  54.             echo 'Ha ocurrido un error al intentar buscar el ultimo id insertado..!'.$this->dbConnection->error;
  55.         }
  56.         //$this->closeConnection();
  57.     }
  58.  
  59.         protected function escapeSqlString($fieldName){
  60.         $this->openConnection();
  61.         $queryResult = $this->dbConnection->real_escape_string($fieldName);
  62.         if($queryResult){
  63.             return $queryResult;
  64.         }else{
  65.             echo $this->dbConnection->error;
  66.         }
  67.         $this->closeConnection();
  68.     }
  69.    
  70.  
  71.     protected function mysqliFetchObject($param){
  72.         $this->openConnection();
  73.         $queryResult = $param->fetch_object();
  74.         return $queryResult;
  75.     }
  76.    
  77.     protected function mysqliFetchAssoc($param){
  78.         $this->openConnection();
  79.         $getResult = $param->fetch_assoc();
  80.         return $getResult;
  81.     }
  82.    
  83.     LENGUAJE EN CASO DE QUE CAMBIE EN EL FUTURO
  84.     protected function mysqliFetchArray($param){
  85.         $this->openConnection();
  86.         $getResult = $param->fetch_array();
  87.         return $getResult;
  88.     }
  89. }
  90.  
  91. ?>


Clase que maneja la información información del usuario

Código PHP:
Ver original
  1. <?php
  2. class UserPersonalInfo extends AppDataBaseModel{
  3.  
  4.     private $cinfoId;
  5.     private $infoUserId;
  6.     private $userInfoRif;
  7.     private $userInfoPassport;
  8.    
  9.     private $userInfoMaritalStatus;
  10.     private $userInfoBirthdate;
  11.     private $userInfoAge;
  12.  
  13.     private $userInfoLicenseType;
  14.     private $userInfoState;
  15.     private $userInfoCity;
  16.    
  17.     private $userInfoAddress;
  18.    
  19.     private $userInfoCountryCode;
  20.     private $userInfoStateCode;
  21.     private $userInfoPhoneNumber;
  22.    
  23.     private $userInfoCountryCode2;
  24.     private $userInfoStateCode2;
  25.     private $userInfoPhoneNumber2;
  26.    
  27.     private $tableName = _TABLE_USERS_INFO_;
  28.     private $tableName2 = _TABLE_USERS_;
  29.     private $tableName3 = _TABLE_USERS_LEVEL_ACCESS_;
  30.     private $theId ='i_users_personal_info_id';
  31.     private $userId ="u_user_id";
  32.     private $theUserId ='i_users_personal_info_user_id';
  33.     private $orderBy ='i_users_personal_info_id';
  34.    
  35.     public function __construct($infoId=0,$infoUserId=0,$userInfoRif="",$userInfoPassport="",$userInfoMaritalStatus="",$userInfoBirthdate="",$userInfoAge="",$userInfoLicenseType="",$userInfoState="",$userInfoCity="",$userInfoAddress="",$userInfoCountryCode="",$userInfoStateCode="",$userInfoPhoneNumber="",$userInfoCountryCode2="",$userInfoStateCode2="",$userInfoPhoneNumber2=""){
  36.  
  37.         $this->infoId = $infoId;
  38.         $this->infoUserId = $infoUserId;
  39.         $this->userInfoRif = $userInfoRif;
  40.         $this->userInfoPassport = $userInfoPassport;
  41.        
  42.         $this->userInfoMaritalStatus = $userInfoMaritalStatus;
  43.         $this->userInfoBirthdate = $userInfoBirthdate;
  44.         $this->userInfoAge = $userInfoAge;
  45.    
  46.         $this->userInfoLicenseType = $userInfoLicenseType;
  47.        
  48.         $this->userInfoState = $userInfoState;
  49.         $this->userInfoCity = $userInfoCity;
  50.         $this->userInfoAddress = $userInfoAddress;
  51.        
  52.         $this->userInfoCountryCode = $userInfoCountryCode;
  53.         $this->userInfoStateCode = $userInfoStateCode;
  54.         $this->userInfoPhoneNumber = $userInfoPhoneNumber;
  55.        
  56.         $this->userInfoCountryCode2 = $userInfoCountryCode2;
  57.         $this->userInfoStateCode2 = $userInfoStateCode2;
  58.         $this->userInfoPhoneNumber2 = $userInfoPhoneNumber2;
  59.     }//FIN DEL CONSTRUCTOR
  60.    
  61.     public function save(){
  62.         //AQUI ES DONDE LLAMO EL METODO GENERICO DE LA CLASE BASE DE DATOS PARA OBTENER EL ULTIMO ID
  63.         $resultQuery = $this->getLastID($this->tableName2,$this->userId);
  64.         $last_user_id = $this->mysqliFetchObject($resultQuery);
  65.         $this->userId = $last_user_id->u_user_id;
  66.         //LE COLOCO ESTE ECHO PARA VER SI ERROJA CERO O EL ID
  67.                 echo '<H1>ID - </H1>'.$this->userId;
  68.  
  69.         $getResult = $this->executeQuery("INSERT INTO ".$this->tableName."(i_users_personal_info_id,
  70.                                                                            i_users_personal_info_user_id,
  71.                                                                            i_users_personal_info_rif,
  72.                                                                            i_users_personal_info_passport,
  73.                                                                            i_users_personal_info_marital_status,
  74.                                                                            i_users_personal_info_birthdate,
  75.                                                                            i_users_personal_info_age,
  76.                                                                            i_users_personal_info_driving_license_type,
  77.                                                                            i_users_personal_info_state,
  78.                                                                            i_users_personal_info_city,
  79.                                                                            i_users_personal_info_address,
  80.                                                                            i_users_personal_info_phone_country_code,
  81.                                                                            i_users_personal_info_phone_state_code,                                         
  82.                                                                            i_users_personal_info_phone_number,                                         
  83.                                                                            i_users_personal_info_phone_country_code2,                                          
  84.                                                                            i_users_personal_info_phone_state_code2,
  85.                                                                            i_users_personal_info_phone_number2)
  86.                                             VALUES  ('',
  87.                                                '".$this->escapeSqlString($this->userId)."',
  88.                                                '".$this->escapeSqlString($this->userInfoRif)."',
  89.                                                '".$this->escapeSqlString($this->userInfoPassport)."',
  90.                                                '".$this->escapeSqlString($this->userInfoMaritalStatus)."',
  91.                                                '".$this->escapeSqlString($this->userInfoBirthdate)."',
  92.                                                '".$this->escapeSqlString($this->userInfoAge)."',
  93.                                                '".$this->escapeSqlString($this->userInfoLicenseType)."',
  94.                                                '".$this->escapeSqlString($this->userInfoState)."',
  95.                                                '".$this->escapeSqlString($this->userInfoCity)."',
  96.                                                '".$this->escapeSqlString($this->userInfoAddress)."',
  97.                                                '".$this->escapeSqlString($this->userInfoCountryCode)."',
  98.                                                '".$this->escapeSqlString($this->userInfoStateCode)."',
  99.                                                '".$this->escapeSqlString($this->userInfoPhoneNumber)."',
  100.                                                '".$this->escapeSqlString($this->userInfoCountryCode2)."',
  101.                                                '".$this->escapeSqlString($this->userInfoStateCode2)."',
  102.                                                '".$this->escapeSqlString($this->userInfoPhoneNumber2)."');");      
  103.         return $getResult;
  104.     }//FIN DEL METODO SAVE
  105.    
  106. }//FIN DE LA CLASE
  107.  
  108. ?>
  #2 (permalink)  
Antiguo 04/07/2013, 13:04
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Alguna razon para no usar en tu clase mysqli::$insert_id ?
http://www.php.net/manual/en/mysqli.insert-id.php
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 04/07/2013, 14:37
 
Fecha de Ingreso: noviembre-2011
Ubicación: Zulia/Maracaibo
Mensajes: 24
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Por que habia leido en versiones anteriores del manual de referencia de php.net
que LAST_INSERT_ID() era mas seguro, por eso me quedé susandolo, como voy comenzando con la extension mysqli
no se si usarlo aun.

Si puedes ayudarme a resolver el problema te lo agradezco.
  #4 (permalink)  
Antiguo 04/07/2013, 14:46
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Creo que puedes leer esto, espero te sirva

http://www.php.net/manual/es/mysqli.insert-id.php

Creo es lo que buscas
  #5 (permalink)  
Antiguo 04/07/2013, 15:40
 
Fecha de Ingreso: noviembre-2011
Ubicación: Zulia/Maracaibo
Mensajes: 24
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Pero asi como lo hice tambien deberia arrojar el ultimo id..! no entiendo porque no lo hace, en eso es que quiero que me ayuden..!
  #6 (permalink)  
Antiguo 04/07/2013, 15:48
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 2 meses
Puntos: 36
Respuesta: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Por lo pronto creo que deberias de cambiar un poco tu clase, estas creando una instancia de conexión cada que quieres hacer una acción, mejor crea una variable y asignale la instancia solo una vez, despues solo accede a la variable y crea metodos para cerrar la conexion y el cursor.

Esto es para mejorar tu código. Dejar ahora reviso por que estas batallando !!
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.
  #7 (permalink)  
Antiguo 04/07/2013, 16:10
 
Fecha de Ingreso: noviembre-2011
Ubicación: Zulia/Maracaibo
Mensajes: 24
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

ok haré eso,pero aun no veo una solución a mi problema, si puedes darme una te lo agradezco.
  #8 (permalink)  
Antiguo 04/07/2013, 16:28
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: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Pues de hecho ese es el problema principal, el último ID es por conexión, si cierras y abres por eso pierdes el ID...
  #9 (permalink)  
Antiguo 04/07/2013, 18:00
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 2 meses
Puntos: 36
Respuesta: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Ps entonces ahí esta jejeje, digo, primero hay que ir por los mas básico, ahí es donde generalmente se nos dan los problemas !!!
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.
  #10 (permalink)  
Antiguo 05/07/2013, 15:04
 
Fecha de Ingreso: noviembre-2011
Ubicación: Zulia/Maracaibo
Mensajes: 24
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Cita:
Iniciado por GatorV Ver Mensaje
Pues de hecho ese es el problema principal, el último ID es por conexión, si cierras y abres por eso pierdes el ID...
Bueno intenté dejando la conexión abierta y aún continúa el problema, Esto me tiene ya me tiene loco, ayuda por favor..!

Con la extensión mysql trabaja perfecto.
  #11 (permalink)  
Antiguo 05/07/2013, 15:39
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: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Ya veo, la función LAST_INSERT_ID() te devuelve el último ID autogenerado, no creo que este disponible siempre, solo esta disponible si tu columna tiene un AUTO_INCREMENT definido, revisa eso.

Ahora si la columna es AUTO_INCREMENT no tienes porque recuperarlo antes e insertarlo, se genera solito y al final solo debes de usar $mysqli->insert_id para obtenerlo.

Saludos.
  #12 (permalink)  
Antiguo 05/07/2013, 16:30
 
Fecha de Ingreso: noviembre-2011
Ubicación: Zulia/Maracaibo
Mensajes: 24
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Cita:
Iniciado por GatorV Ver Mensaje
Ya veo, la función LAST_INSERT_ID() te devuelve el último ID autogenerado, no creo que este disponible siempre, solo esta disponible si tu columna tiene un AUTO_INCREMENT definido, revisa eso.

Ahora si la columna es AUTO_INCREMENT no tienes porque recuperarlo antes e insertarlo, se genera solito y al final solo debes de usar $mysqli->insert_id para obtenerlo.

Saludos.
De hecho la columna si es AUTO_INCREMENT y nolo estoy poniendo antes de insertarlo, lo estoy llamando cuando ya se ha generado el ultimo id de usuario si te fijas donde lo llamo es en la clase UserPersonalInfo, que maneja otra información del usuario.

De momento sigo trabajando conla extensión mysql hasta que tenga resuelto este problema por eso es que tengo la clase db de esa manera, para que sea compatible con ambas extensiones, ese es el único problemita.! Ayudame por favor..!
  #13 (permalink)  
Antiguo 05/07/2013, 19:30
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: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Pero en tu clase UserPersonalInfo en el método save() estas llamando al Insert ID antes de hacer el INSERT, es lo que te estaba diciendo...
  #14 (permalink)  
Antiguo 05/07/2013, 19:36
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 2 meses
Puntos: 36
Respuesta: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

@aesu Nos compartiste las dos clases que estas usando, pero también podrías compartir como es que la estas usando ??
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.
  #15 (permalink)  
Antiguo 06/07/2013, 09:57
 
Fecha de Ingreso: noviembre-2011
Ubicación: Zulia/Maracaibo
Mensajes: 24
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

bueno en realidad son tres clases...
-AppDataBaseModel
-User
-UserPersonalInfo

Esta es la otra la cual agrega el usuario y después de agregado es que obtengo el último id insertado
Código PHP:
Ver original
  1. <?php
  2.  
  3. class User extends AppDataBaseModel{
  4.     private $userName;
  5.     private $userCountryId;
  6.     private $userLastName;
  7.     private $userIdnumberNationality;
  8.     private $userIdnumber;
  9.     private $userMail;
  10.     private $userLogin;
  11.     private $userPassword;
  12.     private $userRegDate;
  13.     private $userEditedDate;
  14.     private $userLastVisit;
  15.     private $userActivated;
  16.     private $userStatus;
  17.     private $userLevelAccess;
  18.     private $userTerms;
  19.    
  20.     private $tableName = _TABLE_USERS_;
  21.     private $tableName2 = _TABLE_USERS_LEVEL_ACCESS_;
  22.     private $tableName3 = _TABLE_USERS_INFO_;
  23.     private $theId ='u_user_id';
  24.     private $orderBy ='u_user_id';
  25.    
  26.     //DECLARAMOS EL CONSTRUCTOR DE LA CLASE EL CUAL SE LLAMA AL MOMENTO DE INSTANCIAR LA CLASE Y RECIBE LOS DATOS A TRAVES DE SUS PARAMETROS
  27.     public function __construct($userId=0,$userCountryId=0,$userName="",$userLastName="",$userIdnumberNationality="",$userIdnumber="",$userMail="",$userLogin="",$userPassword="",$userRegDate=0,$userEditedDate=0,$userLastVisit=0,$userActivated="",$userStatus="",$userLevelAccess=0,$userTerms=0){
  28.  
  29.    
  30.         $this->userName = $userName;
  31.         $this->userCountryId = $userCountryId;
  32.         $this->userLastName = $userLastName;
  33.         $this->userIdnumberNationality = $userIdnumberNationality;
  34.         $this->userIdnumber = $userIdnumber;
  35.         $this->userMail = $userMail;
  36.         $this->userLogin = $userLogin;
  37.         $this->userPassword = $userPassword;
  38.         $this->userRegDate = $userRegDate;
  39.         $this->userEditedDate = $userRegDate;
  40.         $this->userLastVisit = $userLastVisit;
  41.         $this->userActivated = $userActivated;
  42.         $this->userStatus = $userStatus;
  43.         $this->userLevelAccess = $userLevelAccess;
  44.     }//FIN DEL CONSTRUCTOR
  45.    
  46.     public function save(){
  47.    
  48.         $getResult = $this->executeQuery("INSERT INTO ".$this->tableName."(u_user_id,
  49.                                                u_user_country_id,
  50.                                                u_user_name,
  51.                                                u_user_lastname,
  52.                                                u_user_id_number_nationality,
  53.                                                u_user_id_number,
  54.                                                u_user_mail,
  55.                                                u_user_login,
  56.                                                u_user_password,
  57.                                                u_user_reg_date,
  58.                                                u_user_edited_date,
  59.                                                u_user_last_visit,
  60.                                                u_user_activated,
  61.                                                u_user_status,
  62.                                                u_user_level_access,
  63.                                                u_user_policy)
  64.                                             VALUES  ('',
  65.                                                '".$this->userCountryId."',
  66.                                                '".$this->escapeSqlString($this->userName)."',
  67.                                                '".$this->escapeSqlString($this->userLastName)."',
  68.                                                '".$this->escapeSqlString($this->userIdnumberNationality)."',
  69.                                                '".$this->escapeSqlString($this->userIdnumber)."',
  70.                                                '".$this->escapeSqlString($this->userMail)."',
  71.                                                '".$this->escapeSqlString($this->userLogin)."',
  72.                                                '".$this->escapeSqlString(md5($this->userPassword))."',
  73.                                                NOW(),
  74.                                                NOW(),
  75.                                                '',
  76.                                                '".$this->userActivated."',
  77.                                                '".$this->userStatus."',
  78.                                                '".$this->userLevelAccess."',
  79.                                                '".$this->userTerms."');"); 
  80.                        
  81.         return $getResult;
  82.     }//FIN DEL METODO SAVE
  83.    
  84.  
  85. }//FIN DE LA CLASE
  86.  
  87. ?>
  #16 (permalink)  
Antiguo 06/07/2013, 10:07
 
Fecha de Ingreso: noviembre-2011
Ubicación: Zulia/Maracaibo
Mensajes: 24
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Así es como las estoy usando:

Obtengo los datos de los formularios con este archivo

Código PHP:
Ver original
  1. <?php
  2.  
  3. if(isset($_REQUEST['task'])){
  4.    
  5.  
  6.     $task = $_REQUEST['task'];
  7.    
  8.     //DATOS DE ACCESO A LA CUENTA DEL USUARIO//
  9.     if(isset($_SESSION['loged_user'])){$userSession = safeString($_SESSION['loged_user']);}else{$userSession=NULL;}
  10.     if(isset($_SESSION['level_user'])){$userLevel = safeString($_SESSION['level_user']);}else{$userLevel=NULL;}
  11.     if(isset($_REQUEST['name'])){$name = safeString($_REQUEST['name']);}else{$name=NULL;}
  12.     if(isset($_REQUEST['lastname'])){$lastName = safeString($_REQUEST['lastname']);}else{$lastName=NULL;}
  13.     if(isset($_REQUEST['idnumber_nationality'])){$userIdnumberNationality = safeString($_REQUEST['idnumber_nationality']);}else{$userIdnumberNationality = NULL;}
  14.     if(isset($_REQUEST['idnumber'])){$idNumber = safeString($_REQUEST['idnumber']);}else{$idNumber=NULL;}
  15.     if(isset($_REQUEST['email'])&&$_REQUEST['email']!==NULL){$userName=safeString($_REQUEST['email']);}else{$userName=NULL;}
  16.     if(isset($_REQUEST['email'])){$userMail = safeString($_REQUEST['email']);}else{$userMail=NULL;}
  17.  
  18.     if(isset($_REQUEST['password'])){$passWord = safeString($_REQUEST['password']);}else{$passWord = NULL;}
  19.     if(isset($_REQUEST['confirmpassword'])){$confirmPassWord=safeString($_REQUEST['confirmpassword']);}else{$confirmPassWord=NULL;}
  20.     if(isset($_REQUEST['status'])){$userStatus = safeString($_REQUEST['status']);}else{$userStatus = NULL;}
  21.     if(isset($_REQUEST['activate'])){$activate = safeString($_REQUEST['activate']);}else{$activate = '0';}
  22.     if(isset($_REQUEST['level'])){$userLevelAccess = $_REQUEST['level'];}else{$userLevelAccess = '4';}
  23.  
  24.     //DATOS DE LA INFORMACION PERSONAL DEL USUARIO//
  25.     if(isset($_REQUEST['infoId'])){$infoId = $_REQUEST['infoId'];}else{$infoId = '';}
  26.     if(isset($_REQUEST['rif'])){$userInfoRif = $_REQUEST['rif'];}else{$userInfoRif = '';}
  27.     if(isset($_REQUEST['passport'])){$userInfoPassport = $_REQUEST['passport'];}else{$userInfoPassport = '';}
  28.     if(isset($_REQUEST['marital_status'])){$userInfoMaritalStatus = $_REQUEST['marital_status'];}else{$userInfoMaritalStatus = '';}
  29.     if(isset($_REQUEST['birthday'])){$userInfoBirthdate = $_REQUEST['birthday'];}else{$userInfoBirthdate = '';}
  30.     if(isset($_REQUEST['age'])){$userInfoAge = $_REQUEST['age'];}else{$userInfoAge = '';}
  31.     if(isset($_REQUEST['license_grade'])){$userInfoLicenseType = $_REQUEST['license_grade'];}else{$userInfoLicenseType = '';}
  32.     if(isset($_REQUEST['state'])){$userInfoState = $_REQUEST['state'];}else{$userInfoState = '';}
  33.     if(isset($_REQUEST['city'])){$userInfoCity = $_REQUEST['city'];}else{$userInfoCity = '';}
  34.    
  35.    
  36.     if(isset($_REQUEST['address'])){$userInfoAddress = safeString($_REQUEST['address']);}else{$userInfoAddress = NULL;}
  37.    
  38.     if(isset($_REQUEST['phone_country_code'])){$userInfoCountryCode = safeString($_REQUEST['phone_country_code']);}else{$userInfoCountryCode = NULL;}
  39.     if(isset($_REQUEST['phone_code_area'])){$userInfoStateCode = safeString($_REQUEST['phone_code_area']);}else{$userInfoStateCode = NULL;}
  40.     if(isset($_REQUEST['phone'])){$userInfoPhoneNumber = safeString($_REQUEST['phone']);}else{$userInfoPhoneNumber = NULL;}
  41.  
  42.     if(isset($_REQUEST['phone_country_code2'])){$userInfoCountryCode2 = safeString($_REQUEST['phone_country_code2']);}else{$userInfoCountryCode2 = NULL;}
  43.     if(isset($_REQUEST['phone_code_area2'])){$userInfoStateCode2 = safeString($_REQUEST['phone_code_area2']);}else{$userInfoStateCode2 = NULL;}
  44.     if(isset($_REQUEST['phone2'])){ $userInfoPhoneNumber2 = safeString($_REQUEST['phone2']);}else{$userInfoPhoneNumber2 = NULL;}
  45.  
  46.  
  47.    
  48.  
  49.     $obj = new User($id,$countryId,$name,$lastName,$userIdnumberNationality,$idNumber,$userMail,$userName,$passWord,'','','',$activate,$userStatus,$userLevelAccess,$userTerms);
  50.    
  51.     $objUI = new UserPersonalInfo($infoId,$id,$userInfoRif,$userInfoPassport,$userInfoMaritalStatus,$userInfoBirthdate,$userInfoAge,$userInfoLicenseType,$userInfoState,$userInfoCity,$userInfoAddress,$userInfoCountryCode,$userInfoStateCode,$userInfoPhoneNumber,$userInfoCountryCode2,$userInfoStateCode2,$userInfoPhoneNumber2);
  52.  
  53. switch ($task){
  54.             case 'add':
  55.                 include_once'views/app_form_users.php';
  56.             break;
  57.            
  58.             case 'save':
  59.                 $triggerAlert=NULL;
  60.                 $checkMailExist = $obj->checkUserFieldAvalibility('u_user_mail',$userMail);
  61.                 if($name==NULL){$triggerAlert='Escriba el nombre</br>';}
  62.                 if($lastName==NULL){$triggerAlert.='Escriba el apellido</br>';}
  63.                 if($userMail==NULL){$triggerAlert.='Escriba el correo.</br>';}
  64.                 //if($checkMailExist==true){$triggerAlert.='El correo que intenta ingresar ya esta registrado, no es posible ingresarlo de nuevo..!<br>';}
  65.                 if(check_email($userMail)==false){$triggerAlert.='El correo no es valido..!<br>';}
  66.                 if($passWord==NULL){$triggerAlert.='Escriba la clave.</br>';}
  67.                 if($confirmPassWord==NULL){$triggerAlert.='Escriba la clave de confirmaci&oacute;n.</br>';}
  68.                 if($passWord!==$confirmPassWord){$triggerAlert.='La claves no coinciden.</br>';}
  69.                 if($triggerAlert==NULL){
  70.                     //AQUI AGREGO PRIMERO AL USUARIO POR ESO DIGO QUE YA SE HA INSERTADO EL ID DE USUARIO POR LO QUE SE GENERA EL ULTIMO ID
  71.                     $eventResult = $obj->save();
  72.                     //LUEGO AQUI AGREGO LA OTRA INFORMACION DEL USUARIO..
  73.                                          
  74.                     $eventResultUI = $objUI->save();
  75.                    
  76.                
  77.                     if(!$eventResult && !$eventResultUI){
  78.                         $Warning = '<div id="Msg">
  79.                                         <div id="warningAlertError">
  80.                                             <div id="warningError">
  81.                                                 <div id="warningErrorText">Error al guardar..!</div>
  82.                                             </div>
  83.                                         </div>
  84.                                     </div>';
  85.                     } else{
  86.                         $Warning = '<div id="Msg">
  87.                                         <div id="warningAlertSave">
  88.                                             <div id="warningSave">
  89.                                                 <div id="warningSaveText">Datos guardados..!</div>
  90.                                             </div>
  91.                                         </div>
  92.                                     </div>';
  93.                     }  echo''.$Warning.'';
  94.                 }else{
  95.                     echo'<div id="Msg">
  96.                             <div id="warningAlertError">
  97.                                 <div id="warningError">
  98.                                     <div id="warningErrorText">'.$triggerAlert.'</div>
  99.                                 </div>
  100.                             </div>
  101.                          </div>';
  102.                 }
  103.                
  104.             break;
  105.            }//FIN SWITCH
  106. }//FIN IF
  #17 (permalink)  
Antiguo 08/07/2013, 13:23
 
Fecha de Ingreso: noviembre-2011
Ubicación: Zulia/Maracaibo
Mensajes: 24
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Cita:
Iniciado por Reedyseth Ver Mensaje
@aesu Nos compartiste las dos clases que estas usando, pero también podrías compartir como es que la estas usando ??
Publiqué el funcionamiento de las clases revisalas por favor a ver si vez el problema..!
  #18 (permalink)  
Antiguo 08/07/2013, 13:28
 
Fecha de Ingreso: noviembre-2011
Ubicación: Zulia/Maracaibo
Mensajes: 24
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Cita:
Iniciado por GatorV Ver Mensaje
Pero en tu clase UserPersonalInfo en el método save() estas llamando al Insert ID antes de hacer el INSERT, es lo que te estaba diciendo...
Hola GatorV

Publiqué el funcionamiento de las clases revisalas por favor a ver si vez el problema..!
son tres:
-AppDataBaseModel
-User
-UserPersonalInfo

También el código donde las llamo para usarlas..!
Gracias de antemano.
  #19 (permalink)  
Antiguo 08/07/2013, 13:35
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: Problema al obtener el ultimo id insertado(AYUDENME POR FAVOR)

Prueba usar directamente insert_id que es una propiedad de MySQLi. También como te había comentado antes si cierras y abres la conexión en todas tus consultas pierdes el insert_id eso no se debe de hacer, el funcionamiento correcto es algo así:
Código PHP:
Ver original
  1. <?php
  2. $mysqli = new mysqli(SQLI_SERVER, MYSQLI_USER, MYSQLI_PWD, MYSQLI_DBNAME);
  3. if ($result = $mysqli->query("INSERT INTO user(f_name, l_name) VALUES('$f_name', '$l_name');")) {
  4.    echo 'The ID is: '.$mysqli->insert_id;
  5. }

Etiquetas: mysql, registro, select, sql, tabla, ultimo
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 18:37.