Foros del Web » Programando para Internet » PHP »

recuperar ultimo folio insertado.

Estas en el tema de recuperar ultimo folio insertado. en el foro de PHP en Foros del Web. Una vez hecha la inserción de datos en la tabla de datos de la siguiente forma: Código PHP: <?  $sql = "insert into servicio values('','$tipo','$solicita','$correo','$nombre','$glosa','$fecha','$hora','$login','$fecha','$hora','$fecha2','$hora2','$fecha2','$hora2','$vbueno','$detalle')" ;                                                mysql_query ( ...
  #1 (permalink)  
Antiguo 22/06/2009, 15:13
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 19 años, 1 mes
Puntos: 1
recuperar ultimo folio insertado.

Una vez hecha la inserción de datos en la tabla de datos de la siguiente forma:

Código PHP:
<?
 $sql
="insert into servicio values('','$tipo','$solicita','$correo','$nombre','$glosa','$fecha','$hora','$login','$fecha','$hora','$fecha2','$hora2','$fecha2','$hora2','$vbueno','$detalle')";                                               
mysql_query($sql$conexion) or die('No fue posible hacer grabacion..'.mysql_error()); 
?>
Debo recuperar el último folio insertado y grabar datos adicionales en otra tabla de datos.
Utilice el siguiente código, pero no funciona:

Código PHP:
<?
   
//Buscar ultimo folio grabado                                                
   
$sq=mysql_query("select * from servicios order by folio desc limit 1") or die('No fue posible hacer consulta.....'.mysql_error());                           
   
$muestra=mysql_fetch_array($sq);                                             
   
$folio=$muestra['folio'];                                                    
   
$rut="100000000";                                                            
   
//Insercion de datos en tabla reclamos                                          
   
$sqlr="insert into reclamos values('','$folio','$fecha','$rut','$docto','$numdoc','$codigo','$marca','$local','$fecha2')";                                   
   
mysql_query($sqlr$conexion) or die('No fue posible hacer grabacion..'.mysql_error());                                                                      
?>
Quien me puede asesorar el porque la ultima parte no funciona….

Desde ya gracias.
  #2 (permalink)  
Antiguo 22/06/2009, 15:16
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: recuperar ultimo folio insertado.

mysql_insert_id()

Tambien te sugiero que en vez de usar un campo en blanco uses null

Código PHP:
   $sqlr="insert into reclamos values(null,'$folio','$fecha','$rut','$docto','$numdoc','$codigo','$marca','$local','$fecha2')"
  #3 (permalink)  
Antiguo 22/06/2009, 15:22
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: recuperar ultimo folio insertado.

Disculpa, pero no entiendo el verdadero sentido de mysql_insert_id() ni su funcionamiento me podria explicar al respecto. Gracias.
  #4 (permalink)  
Antiguo 22/06/2009, 15:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: recuperar ultimo folio insertado.

mysql_insert_id() devuelve el identificador generado para un campo de tipo AUTO_INCREMENTED. Se devolverá el identificador generado por el último INSERT para el identificador_de_enlace . Si no se específica el identificador_de_enlace , se asume por defecto el último enlace abierto.

mysql_insert_id() regresa 0 si la consulta previa no generó un valor AUTO_INCREMENT. Si necesita guardar el valor para un uso posterior, asegurese de llamar mysql_insert_id() inmediatamente después de la consulta que generó el valor.

Ejemplo
Código PHP:
$conexion mysql_connect($SQL_HOST$SQL_USER$SQL_PASS) or die(mysql_error());
$sqlr="insert into reclamos values('','$folio','$fecha','$rut','$docto','$numdoc','$codigo','$marca','$local','$fecha2')";                                    
mysql_query($sqlr$conexion) or die('No fue posible hacer grabacion..'.mysql_error());                                                                       

$folio mysql_insert_id($conexion); 
ahora el $folio va a tener el ultimo folio insertado en la base de datos que seria el del query anterior, pero en el mysql_insert_id vas a tener que ingresar el nombre de la variable que tiene tu base de datos. En tu caso seria $conexion

Última edición por abimaelrc; 22/06/2009 a las 15:45
  #5 (permalink)  
Antiguo 22/06/2009, 15:41
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: recuperar ultimo folio insertado.

Lo Realice de la siguiente forma, pero aun asi no funciono:
Código PHP:
<?
  
//Insercion de datos para reclamos                                            
   
$sql="insert into servicio values('','$tipo','$solicita','$correo','$nombre',
'$glosa','$fecha','$hora','$login','$fecha','$hora','$fecha2','$hora2','$fecha2'
,'$hora2','$vbueno','$detalle')"
;                                               
   if (
mysql_query($sql$conexion))                                            
   {                                                                            
     
//Ultimo folio insertado                                                   
     
$ultimo_f=mysql_insert_id($conexion);                                      
     
$rut="106829268";                                                          
     
//Insercion de datos para Productos                                        
     
$sqlr="insert into reclamos values(null,'$ultimo_f','$fecha','$rut','$docto
','$numdoc','$codigo','$marca','$local','$fecha2')"
;                            
     
mysql_query($sqlr$conexion) or die('No fue posible hacer grabacion..'.mys
ql_error
());                                                                    
   }                                                                            
   else                                                                         
   {                                                                            
     echo 
"No se realiza la insercion..!";                                      
   }                                                                            
   include(
"wlreclasug010.php");                                                
?>
  #6 (permalink)  
Antiguo 22/06/2009, 15:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: recuperar ultimo folio insertado.

El mysql_insert_id() tienes que hacerlo despues que haya hecho el mysql_query sino te va a traer un valor de 0 y no va a funcionar

hazle un echo al $ultimo_f a ver que trae.

$ultimo_f=mysql_insert_id($conexion);
echo $ultimo_f;
  #7 (permalink)  
Antiguo 22/06/2009, 15:53
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: recuperar ultimo folio insertado.

No se si sere burro, pero no sigo entendiendo.
mysql_insert_id(), lo hice despues de la primera insercion y ese valor insertarlo en la segunda tabla, no entiendo.
  #8 (permalink)  
Antiguo 22/06/2009, 15:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: recuperar ultimo folio insertado.

Pero haz lo que te dije, del echo a ver que te trae
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 12:59.