Foros del Web » Programando para Internet » PHP »

Crear numeros de folios

Estas en el tema de Crear numeros de folios en el foro de PHP en Foros del Web. Bueno, pues aquí de nuevo con otro problemilla; lo que quiero hacer lago algo complejito, almenos para mi... Bueno, yo tengo una tabla llamada contador ...
  #1 (permalink)  
Antiguo 14/05/2009, 08:28
 
Fecha de Ingreso: marzo-2009
Mensajes: 23
Antigüedad: 11 años
Puntos: 0
Crear numeros de folios

Bueno, pues aquí de nuevo con otro problemilla; lo que quiero hacer lago algo complejito, almenos para mi...
Bueno, yo tengo una tabla llamada contador y los campos son: id - int(10) Autoincrementable; y Contador int(10) Bien, lo que quiero hacer, es generar numeros de folio, usando:

$st = "ST";
$year = date("Y");

Ahora bien, lo que quiero es checar primeramente checar en la tabla contador, si el valor del campo contador = $contar, pero la verdad no tengo ni idea de como hacerlo, estoy tranado con esto:

$chek_Cuenta = "SELECT * FROM contador ORDER BY CONTADOR DESC LIMIT 1";
$num= mysql_query($chek_Cuenta, $conexion);
$res= mysql_fetch_array($num);
$contar= $res[0] + 0001;
$Folio = $ST.$Year.$contar;
echo "Folio: $Folio" ."<br>";
$sqlup = "SELECT * FROM contador WHERE id = $id";
$resulta = mysql_query($sqlup);
$conta_up = "UPDATE contador SET contador='$contar";
$resulta = mysql_query($conta_up);

y una vez que tengo el folio, me gustaría hacer un UPDATE del campo contador, para evitarme eso de estar incrementando los números, la idea es que me genere un folio más o menso así: ST20090001, y que se vaya incrementando, este folio, es para insertarlo en otras tablas...

No lo se, creoq ue estoy muuy enrredado, el foli que me muestra siempre es: ST20091, nunca cambia, además, me gustaría que fuera ST20090001 con todos los 4 digitos despues del año...
  #2 (permalink)  
Antiguo 14/05/2009, 14:24
 
Fecha de Ingreso: mayo-2009
Mensajes: 8
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Crear numeros de folios

me parece que te estás complicando demasiado la existencia...

a ver qué te parece esto.

$qry = "INSERT INTO contador SET contador=''"; // ojo, al final son dos ' seguidas de un "
$result = mysql_query($qry);
$id = mysql_insert_id(); //obtener el id del último registro insertado

$folio = 'ST'.str_pad($id,4,'0',STR_PAD_LEFT).date("Y"); //genera el folio en el formato que buscas

//actualizar la tabla... ver comentario más abajo....
$qry = "UPDATE contador set contador = $folio WHERE id = $id",
$result = mysql_query($qry);



Mejor aún, podrías hacer que la tabla contador solamente tenga el campo id y así te ahorras el segundo query ya que realmente de nada sirve que actualices el campo, ya que eso lo hacías tú por el select inicial.

Si eliminas el campo contador entonces te quedaría así:

$qry = "INSERT INTO contador SET id=''";
$result = mysql_query($qry);
$id = mysql_insert_id();
$folio = 'ST'.str_pad($id,4,'0',STR_PAD_LEFT).date("Y");

y listo, te queda el folio para insertarlo en tu otra tabla... ahora que si digamos que tienes una tabla llamada facturas o recibos, ordenes o lo que sea, pues elimina la tabla contador completamente y usa el mismo campo id de esa entidad guardando el folio generado en un campo adicional del mismo registro.

espero te sea útil.
  #3 (permalink)  
Antiguo 15/05/2009, 17:23
 
Fecha de Ingreso: marzo-2009
Mensajes: 23
Antigüedad: 11 años
Puntos: 0
Respuesta: Crear numeros de folios

Bueno, pues muchas gracias, a final de cuentas me decidí por la opción 2, y tienes razón, es mucho mejor, Gracias, y disculpa por no haber contestado pronto... Gracias nuevamente...
  #4 (permalink)  
Antiguo 16/05/2009, 20:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 10 meses
Puntos: 2135
Respuesta: Crear numeros de folios

Tema trasladado desde MySQL

http://www.forosdelweb.com/f21/funci...-datos-413499/
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 04:57.