Foros del Web » Programando para Internet » PHP »

conocer el siguiente auto-increment

Estas en el tema de conocer el siguiente auto-increment en el foro de PHP en Foros del Web. Mi tabla tiene 3 campos: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Tabla: Ver original llave     INT AUTO_INCREMENT PRIMARY KEY folio   char(12) not null fecha datetime ...
  #1 (permalink)  
Antiguo 07/07/2011, 07:41
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 2 meses
Puntos: 21
conocer el siguiente auto-increment

Mi tabla tiene 3 campos:

Código Tabla:
Ver original
  1. llave     INT AUTO_INCREMENT PRIMARY KEY
  2. folio   char(12) not null
  3. fecha datetime not null

Y tengo una instrucción así para insertar:

Código PHP:
Ver original
  1. $consulta = "INSERT INTO $tabla (folio, fecha)
  2.                  VALUES ('$folio', '$fecha')";

El campo "llave" el almacenado de forma automática.
Deseo en el campo "folio" almacenar el mismo valor que tiene el campo "llave"

mi tabla debería quedar así al insertar 3 registros:

Código Contenido:
Ver original
  1. LLave - Folio - Fecha
  2. 1    -   1  -  2011-07-07 08:04:02
  3. 2    -   2  -  2011-07-07 08:04:06
  4. 3    -   3  -  2011-07-07 08:04:09

Es decir, los campos llave y folio deberán tener siempre la misma información.

Nota: Quizá alguien pueda preguntar "¿para que lo quieres así?" Esta tabla tendrá otros PHP´s que almacenarán información, pero en este caso requiero esta funcionalidad.

Gracias anticipadas
  #2 (permalink)  
Antiguo 07/07/2011, 07:55
 
Fecha de Ingreso: septiembre-2004
Mensajes: 324
Antigüedad: 19 años, 6 meses
Puntos: 13
Respuesta: conocer el siguiente auto-increment

http://php.net/manual/es/function.mysql-insert-id.php
  #3 (permalink)  
Antiguo 07/07/2011, 07:56
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: conocer el siguiente auto-increment

Bueno, la verdad no se si sea las mejores formas pero es lo unico que se me ocurra:

1. Puede colocar el campo FOLIO como autoincrement tambien y asi cada vez que insertes se autoincrementa en 1 como la llave.

2. Puedes hacer el INSERT he inmediatamente utilizar la funcion de MySql mysql_insert_id() para recuperar el ultimo numero de la colunma llave y después hacer un UPDATE a esa tabla a ese campo pasandole dicha variable.

Espero que esto te ayude.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #4 (permalink)  
Antiguo 07/07/2011, 08:27
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 2 meses
Puntos: 21
Respuesta: conocer el siguiente auto-increment

Estimado karliky

La instrucción que me indicas me dice el registro ya insertado, pero deseo almacenar ese registro en una variable de manera simultanea.

Gracias

----------------------

Estimado jotaincubus


Cita:
Iniciado por jotaincubus Ver Mensaje
Bueno, la verdad no se si sea las mejores formas pero es lo unico que se me ocurra:

1. Puede colocar el campo FOLIO como autoincrement tambien y asi cada vez que insertes se autoincrementa en 1 como la llave.

2. Puedes hacer el INSERT he inmediatamente utilizar la funcion de MySql mysql_insert_id() para recuperar el ultimo numero de la colunma llave y después hacer un UPDATE a esa tabla a ese campo pasandole dicha variable.

Espero que esto te ayude.
1.- El caso 1 no me es útil, ya que no siempre será igual, otros procedimientos también almacenarán información y ese campo podrá tener otro dato.
2.- Esto es lo que he supuesto que deberé hacer, pero representa 3 operaciones a la tabla: 1) Insert, 2) Lectura, 3) Update. Lo que sería ideal es hacerlo con una sola operación, por ello es mi consulta.

Gracias
  #5 (permalink)  
Antiguo 07/07/2011, 08:33
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: conocer el siguiente auto-increment

Cita:
Iniciado por Bier Ver Mensaje
Estimado jotaincubus

1.- El caso 1 no me es útil, ya que no siempre será igual, otros procedimientos también almacenarán información y ese campo podrá tener otro dato.
2.- Esto es lo que he supuesto que deberé hacer, pero representa 3 operaciones a la tabla: 1) Insert, 2) Lectura, 3) Update. Lo que sería ideal es hacerlo con una sola operación, por ello es mi consulta.

Gracias
En realidad solo serian DOS operaciones la de INSERT y la de UPDATE ya que MySql retorna el AUTOINCREMENTABLE despues que hace el INSERT:

Código PHP:
Ver original
  1. $insertar = 'INSERT INTO tu_tabla (campo) VALUES ($valor)';
  2. mysql_query($insertar, $conexion);
  3. $ultimo = mysql_insert_id($conexion);
  4. $actualizar = 'UPDATE tu_tabla SET folio = $ultimo WHERE Llave = $ultimo';
  5. mysql_query($actualizar, $conexion);

La verdad no encuentro otra forma de hacerlo... Talvez personas con mas experiencia te puedan ayudar.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Última edición por jotaincubus; 07/07/2011 a las 08:34 Razón: Mas informacion
  #6 (permalink)  
Antiguo 07/07/2011, 09:32
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 2 meses
Puntos: 21
Respuesta: conocer el siguiente auto-increment

Creo encontré lo que buscaba. D deseo conocer el próximo auto-incrment y almacenarlo en una variable:

http://www.bram.us/2008/07/30/mysql-...fromfor-table/

Lo voy a probar, por lo pronto aquí lo pueden ver.

Saludos
  #7 (permalink)  
Antiguo 07/07/2011, 10:03
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 2 meses
Puntos: 21
Respuesta: conocer el siguiente auto-increment

Estimados amigos:

Por si alguien lo llega a requerir, ya quedó solucionado y es de la siguiente forma:

Conocer el siguiente "Auto_increment" en MySQL:

Código MySQL:
Ver original
  1. $query = mysql_query("SHOW TABLE STATUS LIKE '$tabla'");
  2. $result = mysql_fetch_array($query);
  3. $folio = $result['Auto_increment'];
  4. mysql_free_result($query);

Y mi instrucción de INSERT ya traerá el valor en la variable "folio".
Código MySQL:
Ver original
  1. $consulta = "INSERT INTO $tabla (folio, fecha)
  2.                 VALUES ('$folio', '$fecha')";

Saludos
  #8 (permalink)  
Antiguo 07/07/2011, 10:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: conocer el siguiente auto-increment

Y si ambas columnas tienen el mismo dato, ¿cual es la necesidad de tener dos columnas?

A eso se le llama redundancia de datos, pues no tiene sentido duplicar el mismo valor.

¿No sería mas sencillo usar una columna en lugar de dos?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 07/07/2011, 10:19
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 2 meses
Puntos: 21
Respuesta: conocer el siguiente auto-increment

Estimado pateketrueke,

Cita:
Iniciado por pateketrueke Ver Mensaje
Y si ambas columnas tienen el mismo dato, ¿cual es la necesidad de tener dos columnas?

A eso se le llama redundancia de datos, pues no tiene sentido duplicar el mismo valor.

¿No sería mas sencillo usar una columna en lugar de dos?
Claro que tienes razón, no tiene sentido tener dos columnas con el mismo dato. En mi caso no tendrá siempre el mismo dato, solo en algunas ocasiones.

Sería un largo explicar lo que requiere mi proyecto (además que a nadie le interesaría). Por ello escribí en mi post original lo siguiente:

"Nota: Quizá alguien pueda preguntar "¿para que lo quieres así?" Esta tabla tendrá otros PHP´s que almacenarán información, pero en este caso requiero esta funcionalidad."

Gracias por tu comentario, pero en este caso no aplica, desde luego que si en otros casos.
  #10 (permalink)  
Antiguo 07/07/2011, 10:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: conocer el siguiente auto-increment

¿En que otros casos va cambiar ésto?

Si el código es el mismo, siempre va a hacer lo mismo, ¿donde está la genial diferencia?

De verdad no entiendo, no tiene ni argumento, ni sentido lógico lo que planteas...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 07/07/2011, 11:02
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 2 meses
Puntos: 21
Respuesta: conocer el siguiente auto-increment

Cita:
Iniciado por pateketrueke Ver Mensaje
¿En que otros casos va cambiar ésto?

Si el código es el mismo, siempre va a hacer lo mismo, ¿donde está la genial diferencia?

De verdad no entiendo, no tiene ni argumento, ni sentido lógico lo que planteas...
Bien, en base a tu comentario trataré de explicar un poco lo que debo hacer:

Se trata de un sistema para el control de actividades, para lo cual hemos instalado un expendedor de "boletos" (o tickets) el cual es un consecutivo.
El sistema genera el boleto y lo almacena en la tabla, con su fecha, hora, etc.
Despues, quien es poseedor del boleto, pasa a "Atención al cliente", en donde le resuelven su necesidad, para lo cual se genera un segundo movimiento, se almacena la respuesta completa en la tabla y el ticket se cierra.
Quizá despues, el mismo usuario solicite un nuevo boleto, y el trámite es mismo explicado anteriormente.
En algunos casos, el cliente, volverá a solicitar algo que pudo quedar pendiente, por lo cual se reabre el ticket y genera un nuevo movimiento, el cual va a ser enviado a un ejecutivo, quien dará una nueva solución... y así susesivamente, hasta "n" consultas.
Todo lo anterior lo llevaré controlado con un FOLIO que es el que fue asignado de manera inicial, pero las respuestas serán realizadas con un segundo proceso.
Cabe la posibilidad que al cerrar un proceso, se genera un nuevo proceso, el cual nacerá en base al anterior, y llevará una historia completa.
Además he instalado la posibilidad de responder por medio de email, y el email es recibido por PHP y lo almacena y asigna en la tabla en base a su folio, y lo incorpora en el hilo correspondiente.

Al crear una nueva solicitud, ambos campos serán identicos, pero en el caso de las respuestas, el autoincremental siempre aumentará, y el campo folio tendrá el valor del hilo a que corresponda.

Perdon por haber escrito mucho.

Esto es lo mas breve que pude redactarlo.
  #12 (permalink)  
Antiguo 07/07/2011, 11:04
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 2 meses
Puntos: 21
Respuesta: conocer el siguiente auto-increment

ADICIÓN:
Para una opción alterna, tengo una tabla de folios, el cual asigna el folio de cada hilo, pero en este caso así es requerido.

Etiquetas: conocer, siguiente, tabla
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:22.