Foros del Web » Programando para Internet » PHP »

PHP OO Problema con LAST_INSERT_ID

Estas en el tema de Problema con LAST_INSERT_ID en el foro de PHP en Foros del Web. Hola Muchachos.... el problema que tengo es como dice el titulo, con el last insert id, la idea que tengo o mejor dicho que necesito ...
  #1 (permalink)  
Antiguo 24/10/2012, 17:07
 
Fecha de Ingreso: noviembre-2011
Mensajes: 69
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta Problema con LAST_INSERT_ID

Hola Muchachos.... el problema que tengo es como dice el titulo, con el last insert id, la idea que tengo o mejor dicho que necesito hacer es traer el campo "nro_establecimiento" que se encuentra almacenada en la tabla "establecimiento" usando una funcion "establecimieto" similar a esta, y el problema surge cuando en la funcion "tenencia" quiero pasarle el ultimo Id insertado en la tabla "establecimiento", el campo "nro_establecimiento" es incremental

Código PHP:
<?php
session_start
();
require_once(
"conectar.php");

class 
Trabajo{
    
    private 
$nombre=array();

    public function 
tenencia()
    {
        
$tipo_ten=$_POST["est_ten"];
        
$tipo_cargo=$_POST["est_carg"];
        
$nombre=$_POST["ten_nom"];
        
$apellido=$_POST["ten_ape"];
        
$tel1=$_POST["ten_tel1"];
        
$tel2=$_POST["ten_tel2"];
        
$cel=$_POST["ten_cel"];
        
$mail=$_POST["ten_mail"];
        
$mail2=$_POST["ten_mail2"];
       
        
//$id_num_est="SELECT nro_establecimiento FROM establecimiento WHERE nro_establecimiento= LAST_INSERT_ID();";    
        //$id_num_est="SELECT nro_establecimiento FROM establecimiento ORDER BY nro_establecimiento DESC LIMIT 1;";

        
$sql_id "SELECT LAST_INSERT_ID() FROM establecimiento"
        
$resultado_id=mysql_query($sql_idConectar::con());
        
$id_ultimo=mysql_result($resultado_id);          
        
        
$sql="insert into tenencia 
        values (null,'$tipo_ten','$tipo_cargo','$nombre','$apellido','$tel1','$tel2','$cel','$mail','$mail2','$id_ultimo'); "
;
        
$res mysql_query($sqlConectar::con());    
         echo 
"<script type='text/javascript'>
                alert('Grabado con exito!!!'); 
                window.location='formulario_4.php';
              </script>"
;        
    }
}
Alguna idea? estoy muy mal????
  #2 (permalink)  
Antiguo 24/10/2012, 17:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con LAST_INSERT_ID

1. ¿A que te refieres con que estás muy mal?
2. MySQL es una extensión obsoleta, lee esto: http://www.forosdelweb.com/f18/anunc...ecada-1008145/
3. Si revisas el manual dicho valor existe sólo después de hacer un INSERT, en tu caso mas bien podrías obtener el último valor usando MAX(id)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/10/2012, 18:09
 
Fecha de Ingreso: noviembre-2011
Mensajes: 69
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Problema con LAST_INSERT_ID

Lo de muy mal era un decir... como que estoy muy desorientado jaaj.
A que te referis que MYSQL es una extension obsoleta? que yo sepa LAS_INSERT_ID es por decirlo una nueva caracteristica ademas teniendo en cuenta que con MAX(ID) puede realizarse una insercion y no haberme traido el ultimo id

Necesito insertar el id del establecimiento, dicho id lo llamo nro_establecimiento y es incremental pero ese campo lo grabe anteiormente con otro formulario y lo que necesito es almacenarlo en la nueva tabla haciendo referencia a ese nro de establecimiento....
  #4 (permalink)  
Antiguo 25/10/2012, 08:30
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Problema con LAST_INSERT_ID

mysql es una extensión obsoleta. La que actualmente se usa es mysqli que aunque lleva un buen tiempo hasta ahora se hace obligatoria de usar ya a partir de la versión 5.4 de PHP no se le da mas soporte a mysql.

Si vas a usarlo despues de un insert mira el manual.

http://php.net/manual/es/function.mysql-insert-id.php

si no es asi la recomendación de pateketrueke es la solución mas indicada.

Cita:
Necesito insertar el id del establecimiento, dicho id lo llamo nro_establecimiento y es incremental pero ese campo lo grabe anteiormente con otro formulario y lo que necesito es almacenarlo en la nueva tabla haciendo referencia a ese nro de establecimiento....
Si ese campo lo tienes de un insert en otro formulario sacale el ultimo insert id y luego pasa ese valor a traves de l fomurlario con un campo un hidden o crear una variable de sesion temporal (si alguien nos comenta la manera mas optima de hacerlo creo que se recibe el aporte) para que tengas ese valor a la mano para luego añadirlo. Si vas a hacer la operación inmediatamente pues no es necesario pasar la variable de una pagina a otra.
__________________
Blog de humor http://elcuasatar.net63.net/
  #5 (permalink)  
Antiguo 25/10/2012, 10:01
 
Fecha de Ingreso: noviembre-2011
Mensajes: 69
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Problema con LAST_INSERT_ID

Gracias a todos aunque sigo sin poder hacerlo andar
´-´
  #6 (permalink)  
Antiguo 25/10/2012, 12:25
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años
Puntos: 33
Respuesta: Problema con LAST_INSERT_ID

Hola!

Recomiendo también que uses mysqli (aunque yo por varios temas estoy usando aún mysql jeje).

Por otra parte, tienes la función mysql_insert_id, que devuelve el último valor de PK insertado en la sesión

http://php.net/manual/es/function.mysql-insert-id.php

Saludos!
  #7 (permalink)  
Antiguo 26/10/2012, 23:41
 
Fecha de Ingreso: noviembre-2011
Mensajes: 69
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Problema con LAST_INSERT_ID

Nadie puede ayudarme? entiendo que son caracteristicas ya viejas pero aun asi efectivas, el problema no sta solo ahi sino en el hecho de que estoy trabajando con public function y en varias funciones debo pasarle siempre el mismo valor de nro_establecimiento es por eso que estoy teniendo problemas.... alguna idea??
  #8 (permalink)  
Antiguo 26/10/2012, 23:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con LAST_INSERT_ID

1. Después de hacer el INSERT puedes recuperar el valor con alguna función ya mencionada (no la consulta, el misma manual la desaconseja) y almacenarla en una variable de sesión
2. En el script donde necesites dicho ID lees el valor de la sesión
3. Eso o consultas usando MAX()
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 19/05/2013, 22:40
 
Fecha de Ingreso: mayo-2013
Mensajes: 1
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Problema con LAST_INSERT_ID

Mira, te digo como lo solucioné yo. No me meti en el tema de tu script, pero más o menos entiendo de que hablas.

Por ej.:
Yo tengo una tabla Clientes, y necesito el id para pasarla como POST en un formulario de nuevo pago.

Es decir:
Hago un select del último id del cliente ingresado y con ese id hago un formulario de nuevo pago.

Entonces, estaría pasando el id (de la tabla Clientes) dentro del formulario de nuevo pago en un hidden.

Para eso hice lo siguiente:


$consulta="SELECT id from Clientes ORDER BY id DESC";
$res=mysql_query($consulta)or die("error");
$row=mysql_fetch_assoc($res);
$max_id=$row['id'];

Luego, dentro del formulario lo paso de la siguiente manera:

<form nethod="POST" action="new_pago.php">
<input type="hidden" name="id" value="<?php print $max_id ?>">
...
...
...
</form>


Luego del otro lado lo inserto lo más bien!

Te lo escribí tal cual como lo tengo andando.


Saludos!!
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 01:10.